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

Problem mit Kontaktformular, Infos werden nicht richtig an e-mail übertragen

cider-hh

Neues Mitglied
Hallo zusammen,

ich hoffe es ist ok, wenn man als Laie hier um Hilfe bittet. Also folgendes Problem bei mir, beim absenden des Formulars werden keine Informationen die in den Feldern des Formulars stehen an meine E-Mail Adresse übermittelt. Es stehen nur die Begriffe Name, e-mail, Betreff usw. da.

Außerdem wäre es gut, wenn der Betrachter nach dem versenden automatisch auf die Kontaktseite zurückgelangt, vielleicht hat jmd. eine Idee für mich.

Sehr vielen Dank für eure Unterstützung, die Seite ist seit heute online und mit diesen Fehlern leider...

Anbei zunächst der HTML Teil unten der PHP Code.



<form method="post" action="kontakt.php">
<table>
<form name="get" method="get" action="kontakt.php">
<table border="0">
<tr>
<td>Anrede:</td>
<td>Herr:<input type="radio" name="Anrede" value="Herr">
Frau:<input type="radio" name="Anrede" value="Frau"></td></tr>
<tr><td>Vorname:</td><td><input type="text" name="name" value="Vorname" size="20"
maxlength="50" onfocus="this.value = '';"/></td></tr>
<tr><td>Nachname:</td><td><input type="text" name="name" value="Nachname" size="20"
maxlength="50" onfocus="this.value = '';"/></td></tr>
<tr><td>e-mail Adresse:</td><td><input type="text" name="email" value="Email..." size="20"
maxlength="50" onfocus="this.value = '';"/></td></tr>
<tr><td>Betreff:</td><td><input type="text" name="betreff" value="Betreff..." size="20"
maxlength="50" onfocus="this.value = '';"/><br/>
</td>
<tr>
<td>Ihre Nachricht an mich:</td>
<td>
<textarea name="nachricht" rows="15" cols="55"></textarea>
</td></tr>
<tr>
<td></td>
<td>
<input type="submit" name="senden" value="Formular absenden">
<input type="reset" value="Daten löschen">
</td></tr>
</table>
</form>
_________________________


<?php
$Empfaenger = "[email protected]";
?>

<html>
<head>
<title>kontaktformular</title>
<meta name="author" content="Torben">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">


<?php
echo "<h1>Formular erfolgreich abgesendet</h1>";
echo "<hr>";

$name = $_GET['name'];
$email = $_GET['email'];
$betreff = $_GET['betreff'];
$nachricht = $_GET['nachricht'];

echo "Name: <b>$name</b><br />";
echo "Email: <b>$email</b><br />";
echo "Betreff: <b>$betreff</b><br />";
echo "Nachricht: <b>$nachricht</b>";
echo "location.replace('naturheilpraxis-falkenhagen.de/kontakt')";
echo "</script>";

// The message
$message = "Name: $name Email: $email Betreff: $betreff Nachricht: $nachricht";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

// Send
mail('[email protected]', 'Kontaktformular', $message);

?>
 
Dein Problem wird vermutlich dadurch verursacht, dass Du 2 <form>-Elemente hast. Vermutlich wird das Formular per POST abgeschickt und Du liest dann (ohne Prüfung) GET-Variablen aus die nicht existieren. Geht natürlich nicht.
Also: lass das zweite <form>-Element weg und ändere $_GET in $_POST.

Folgende Tipps dazu noch:
- Du hast mehrere Formulare mit dem Namen "name" (Vorname, Nachname). Du solltest hier besser gleich vorname und nachname schreiben da 2 Felder mit dem selben Namen nicht funktionieren (da wird nur einer der Einträge übermittelt).
- Du solltest auch noch eine Pflichtfeldprüfung machen, d.h. prüfen ob jemand z.B. in Vor- und Nachname etwas eingetragen hat.
- Die Zeilen
PHP:
echo "location.replace('naturheilpraxis-falkenhagen.de/kontakt')";
echo "</script>";
machen irgendwie keinen Sinn. Lass sie weg.

Wichtig:
Evtl. solltest Du dir auch eine Kontaktformular-Vorlage nehmen und verwenden. Die sind meist schon sehr gut geschrieben, so dass Du nur noch Feinheiten anpassen musst. Momentan würdest Du hier nämlich ein Formular haben, welches von Spam-Bots gerne und oft abgeschickt werden würde. Es ist nicht wirklich sicher.

Und:
Bitte verwende Code-Tags wenn Du im Forum Quellcodes postest.
 
Und noch ein Tipp: verzichte auf die mail-Funktion von PHP und benutze besser eine fertige Klasse w.z.B. den phpMailer.
 
Diese Zeile raus:
Code:
<form name="get" method="get" action="kontakt.php">
Alle $_GET in $_POST ändern. Was auch etwas lustig ist, du gibst aus, dass das Formular erfolgreich gesendet wurde. Woher willst du das an dieser Stelle wissen?
 
Lieber später im Code eingeben? Sry bin wirklich erst am Anfang:-) habe das einfach anlehnend an dieverse Kontaktformulare im Web zusammengebastelt. Da können dann Fehler zusammen kommen, i know...
 
Lieber später im Code eingeben?

An dem Zeitpunkt, an dem du vom Erfolg der Formulareingabe berichtest, ist zwar erfolgreich die Datei kontakt.php aufgerufen worden, aber mehr auch nicht. Du weißt zu dem Zeitpunkt weder ob wirklich Daten übertragen wurden, noch ob diese auch erfolgreich verarbeitet wurden. Etwas wie if (isset($_POST[''])) wäre meiner Ansicht nach das Minimum, um dem Nutzer vom Erfolg zu berichten. Eigentlich dürfte natürlich nur vom Erfolg verkündet werden, wenn die Mail auch tatsächlich abgeschickt wurde.
 
Zurück
Oben