• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kontaktformular

Xeno

Mitglied
Liebe Community

Ich habe für meine Seite ein Kontaktformular gebaut. Bis auf ein paar Kinderkrankheiten, um die es mir hier (noch) nicht geht, funktioniert es auch. Ich hätte aber ggf. gerne Euer Feedback, ob das Formular so brauchbar ist. Testweise ist es unter Michael Ritter scharf gestellt. Der Code:

PHP:
<!DOCTYPE html>
<html>
<head>
<title>
Michael Ritter
</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="Persönliche Homepage des GLP-Politikers und Stadtrats Michael Ritter aus Burgdorf im Kanton Bern">
<meta name="keywords" content="Michael Ritter, GLP, Politik, Burgdorf, Person" />
<link rel="stylesheet" type="text/css" href="formatierung.css">
<style type="text/css">
</style>
</head>
<body>
<div id="wrapper">
<?php
include("header.php");
?>
<div id="inhalt">
<div id="inhalt2">
<div id="links">
<h1>
Kontaktformular
</h1>
<p>
Mit dem nachfolgenden Kontaktformular können Sie mir eine Nachricht hinterlassen. Technisch hat das Benutzen des Formulars denselben Effekt wie das Schreiben eines Mails an meine <a href="mailto:[email protected]">Mailadresse</a>. Der Vorteil für Sie ist, dass Sie zum  Abschicken des Formulars kein Mailprogramm benutzen müssen.
</p>
<?php

$notiz = "";

    if($_GET['name'] != "" && $_GET['mail'] != "" && $_GET['betreff'] != "" && $_GET['inhalt'] != "") 
        {
        mail('[email protected]', 'Kontaktformular: ' . $_GET['betreff'], 'Das Kontaktformular wurde ausgefüllt von: ' . $_GET['name'] . 'Mail des Absenders: ' . $_GET['mail'] . 'Die Nachricht lautet: ' . $_GET['inhalt']);
        }
    else 
        {
        $notiz = "Sie müssen alle Felder ausfüllen.";
        }

?>

<h4>
<?php echo $notiz; ?>
</h4>
<br>
<fieldset>
<legend>
Ihre Nachricht
</legend>
<form action="uebung3.php"><br>
Ihr Name:<br><input type="text" value="<?php echo $_GET['name'] ?>" placeholder="Name" name="name"><br><br>
Ihre Mailadresse:<br><input type="text" value="<?php echo $_GET['mail'] ?>" placeholder="Mail" name="mail"><br><br>
Betreff:<br><input type="text" value="<?php echo $_GET['betreff'] ?>" placeholder="Betreff" name="betreff"><br><br>
Ihr Text:<br><textarea name="inhalt" placeholder="Text" <?php echo $_GET['inhalt'] ?> rows="10">
</textarea><br><br>
<input type="submit" value="Senden">
<br>
<br>
</form>
<p id="guestbook">
<a href="index.php">Zurück zur Hauptseite</a>
</p>
</fieldset>
<br>
<br>
</div>
<?php
include("rechts.php");
?>
<div id="footer">
<p>
&copy; Michael Ritter 2012-2013. Alle Rechte vorbehalten. Näheres siehe <a href="http://www.michaelritter.ch/impressum.php">Impressum</a>.
</p>
</div>
</div>
</body>
</html>

Bin für alles Feedback dankbar!

Lg Xeno
 
Zuletzt bearbeitet:
Werbung:
Ein Formular und Get ist immer schlecht, verwende die Post-Methode.
Und dann ein Tipp:
Schreibe am Anfang deines Scriptes diese Zeilen
PHP:
error_reporting(E_ALL);
ini_set("display_errors", true);
Denn PHP hat dir einiges zu sagen, allerdings hörst du im Moment noch nicht zu. :D
 
Ein Formular und Get ist immer schlecht, verwende die Post-Methode.

Richtig, werde ich ändern bzw. habe es testweise schon gemacht.

Und dann ein Tipp:
Schreibe am Anfang deines Scriptes diese Zeilen
PHP:
error_reporting(E_ALL);
ini_set("display_errors", true);
Denn PHP hat dir einiges zu sagen, allerdings hörst du im Moment noch nicht zu. :D

Richtig. Da das ursprüngliche Formular (mit $_GET) funktioniert, habe ich das Error-Reporting mal weggelassen. Offenbvar zu Unrecht, denn es wird folgende Fehlermeldung ausgegeben:

Code:
[B]Notice[/B]:  Undefined index: name in [B]blabla[/B] on line [B]36[/B]
Die Abarbeitung der Fehlermeldung hat bisher Folgendes ergeben:

1) Die Meldung erscheint sowohl bei Verwendung der GET- als auch der POST-Methode.
2) Bei der GET-Methode funktioniert der Script aber trotzdem. Bei der POST-Methode funktioniert er nicht.
3) Ich dachte zuerst, ein Problem könnte sein, dass der PHP-Teil am falschen Ort (nämlich zu früh, vor dem HTML-Code fürs Formular) steht und dann die Values (noch) nicht definiert sind. Das ist es aber nicht. Dieselbe Meldung kommt auch, wenn ich denn PHP-Code hinters For mular verschiebe.

Ich recherchiere selbstverständlich mal selber weiter. Momentaner Verdacht: Könnte es irgendwie stören, dass PHP nicht "weiss", ob die Formulardaten überhaupt existieren? Irgend so etwas vermute ich im Moment.

Wer gerade eine Idee hat, ist immer willkommen!

Lg Xeno
 
Werbung:
Genau das ist es, deshalb sollte man PHP: isset - Manual kennen ;)

Jup. Hier der verbesserte Code, soweit relevant (immer noch mit GET, darum kümmere ich als Nächstes):

PHP:
<?php

$notiz = "";

    if(!isset($_GET['name'], $_GET['mail'], $_GET['betreff'], $_GET['inhalt']) OR $_GET['name'] != "" && $_GET['mail'] != "" && $_GET['betreff'] != "" && $_GET['inhalt'] != "") 
        {
        mail('[email protected]', 'Kontaktformular: ' . $_GET['betreff'], 'Das Kontaktformular wurde ausgefüllt von: ' . $_GET['name'] . 'Mail des Absenders: ' . $_GET['mail'] . 'Die Nachricht lautet: ' . $_GET['inhalt']);
        }
    else 
        {
        $notiz = "Sie müssen alle Felder ausfüllen.";
        }

?>

Und noch eine Info: füttere google mal mit dem Begriff Affenformular

Gute Idee. Ansatz für den Bau des Kontaktformulars war übrigens ein (relativ aktuelles) Tutorial.

Danke jedenfalls für die Hilfe!

Lg

Xeno
 
Hier mein aktueller Code. Das Formular funktioniert jetzt mit POST, und es werden keine Fehlermeldungen mehr ausgegeben. Ich denke, dass ich damit ein (aufs Allernotwendigste reduzierte) Kontaktformular habe:

PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", true); 
?>
<!DOCTYPE html>
<html>
<head>
<title>
Michael Ritter
</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="Persönliche Homepage des GLP-Politikers und Stadtrats Michael Ritter aus Burgdorf im Kanton Bern">
<meta name="keywords" content="Michael Ritter, GLP, Politik, Burgdorf, Person" />
<link rel="stylesheet" type="text/css" href="formatierung.css">
<style type="text/css">
</style>
</head>
<body>
<div id="wrapper">
<?php
include("header.php");
?>
<div id="inhalt">
<div id="inhalt2">
<div id="links">
<h1>
Kontaktformular
</h1>
<p>
Mit dem nachfolgenden Kontaktformular können Sie mir eine Nachricht hinterlassen. Technisch hat das Benutzen des Formulars denselben Effekt wie das Schreiben eines Mails an meine <a href="mailto:[email protected]">Mailadresse</a>. Der Vorteil für Sie ist, dass Sie zum  Abschicken des Formulars kein Mailprogramm benutzen müssen.
</p>

<?php
$leerefelder = "";

    if(isset($_POST['name']) && $_POST['name'] != "" && $_POST['mail'] != "" && $_POST['betreff'] != "" && $_POST['inhalt'] != "") 
        {
        mail('[email protected]', 'Kontaktformular: ' . $_POST['betreff'], 'Das Kontaktformular wurde ausgefüllt von: ' . $_POST['name'] . 'Mail des Absenders: ' . $_POST['mail'] . 'Die Nachricht lautet: ' . $_POST['inhalt']);
        }
    else 
        {
        $leerefelder = "Sie müssen alle Felder ausfüllen.";
        }

?>
<h4>
<?php echo $leerefelder; ?>
</h4>

<br>
<fieldset>
<legend>
Ihre Nachricht
</legend>
<form action="uebung3.php" method="post"><br>
Ihr Name:<br><input type="text" value="" placeholder="Name" name="name"><br><br>
Ihre Mailadresse:<br><input type="text" value="" placeholder="Mail" name="mail"><br><br>
Betreff:<br><input type="text" value="" placeholder="Betreff" name="betreff"><br><br>
Ihr Text:<br><textarea name="inhalt" placeholder="Text" rows="10">
</textarea><br><br>
<input type="submit" value="Senden">
<br>
<br>
</form>
<p id="guestbook">
<a href="index.php">Zurück zur Hauptseite</a>
</p>
</fieldset>
<br>
<br>
</div>
<?php
include("rechts.php");
?>
<div id="footer">
<p>
&copy; Michael Ritter 2012-2013. Alle Rechte vorbehalten. Näheres siehe <a href="http://www.michaelritter.ch/impressum.php">Impressum</a>.
</p>
</div>
</div>
</body>
</html>

Ich denke, der Fred kann wohl geschlossen werden.

Lg Xeno
 
Werbung:
Hallo,
vielleicht sollten die Eingaben noch validiert werden, um einen Missbrauch vorzubeugen.

Gruß Matze
 
Zurück
Oben