Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Notice: Undefined index
Hallo
Ich habe ein php Kontaktformular erstellt mit einer zusätzlichen php Antwort / Auswertung Seite.
Das Formular funktioniert einwandfrei. Das Mail kommt auch wie gewünscht im Posteingang an mit den erforderlichen Angaben. Nur bringt es nach Absenden den Fehler: PHP Notice: Undefined index: Email in D:\XUnitConf\winweb94\html\Wir_ueber_uns\kontaktformular-auswerten.php on line 88
Script kontaktformular-auswerten.php:
<?php
$Empfaenger = "meine Email...";
if($_REQUEST['go'])
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="go")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum/Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailbetreff = "Mitteilung Kontakformular CIIM";
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']); -> line 88!!!!!
echo"Vielen Dank, Ihre Email ist bei uns eingegangen.";
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"kontaktformular.php\">Seite</a>.";
}
?></p>
Ich hab des 'Email' in line 88 schon mit und ohne einfache Anführungszeichen getestet. Auch mit $-Post anstatt $-Request habe ichs versucht. Müsste ich oben erst eine Variable erstellen? Und wie lautet die? Oder was mache ich falsch? Bin leider php Neuling.
Kann mir wer helfen? Lieben Dank.
bim
vt1816
19.07.2009, 16:44:34
Lass Dir mal $_POST mittels
var_dump($_POST);
ausgeben. Darin siehst Du wie Deine Felder wirklich heißen. Vermute einen Schreibfehler.
DokuLeseHemmung
19.07.2009, 16:45:43
Dein "Email" wird vom Formular nicht versendet!
Ausserdem ist es dann so, dass sich der Absender problemlos fälschen läßt. Sei vorsichtig, nich dass du da eine Spamschleuder baust.
Hallo
Lieben Dank für euer Feedback. Ich versuch das nun mal mit dem var_dump($_POST);.
Meine Email wird vom Formular versendet. Doch. Die kommt an :-)
LG
bim
DokuLeseHemmung
19.07.2009, 21:54:47
Meine Email wird vom Formular versendet. Doch. Die kommt an :-)
Dann kann der Fehler nicht auftreten!
Oder du hältst die fehlerverursachende Stelle geheim.
Zeige doch mal die var_dump($_POST) Ausgabe.
Hallo nochmals
Hier meine var_dump($_POST) Ausgabe:
array(5) { ["strName"]=> string(4) "kkdk" ["strVorname"]=> string(6) "kdkdkd" ["strEmail"]=> string(15) "kdkfjdk@kkdk.li" ["strMitteilung"]=> string(26) "dlkfjslkfjlksfjlksdfjlsdfj" ["go"]=> string(6) "Senden" } Vielen Dank, Ihre Email ist bei uns eingegangen.
Und unten dann die Notice:
PHP Notice: Undefined index: Email in D:\XUnitConf\winweb94\html\Wir_ueber_uns\kontaktformular-auswerten.php on line 89
Gruss
bim
Indyk
21.07.2009, 13:53:07
Hallo bim,
du versuchst mit
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
auf ein feld zuzugreifen was aber nach deiner var_dump analyse strEmail heißt und nicht Email
$_REQUEST['strEmail']
Hallo
Ich habe nun zuerst das $_REQUEST['Email'] in $_REQUEST['strEmail'] abgeändert. Dies hatte zur Folge, dass die Fehlermeldung nicht mehr erschien, leider kam dann aber auch das Mail nicht an.
Ich hab es dann noch andersrum versucht. Habe das $_REQUEST['Email'] im kontaktformular-auswerten.php so belassen und habe den Feldnamen im Formular selbst von strEmail auf Email geändert. Fehlermeldung gab es auch dann keine, aber das Mail kam leider auch nicht.
Es ist also so, dass wenn die beiden Codes indentisch sind, die Fehlermeldung nicht erscheint, aber das Mail auch nicht generiert wird. Wenn im Formular strEmail definiert ist, und im kontaktformular-auswerten.php 'Email', dann kommt das Mail korrekt an, die Fehlermeldung erscheint aber leider.
Jetzt weiss ich wirklich nicht mehr weiter.
Gruss
bim
vt1816
23.07.2009, 10:03:30
Was steht nach dem Absenden in strEmail/Email? Welchen Wert gibt die Funktion mail (http://de.php.net/manual/de/function.mail.php) zurück? Hast Du mal im SPAM-Ordner des E-Mail-Programms Deines Vertrauens nachgesehen?
Nach dem Absenden von 'Email' steht:
array(5) { ["Name"]=> string(4) "djlk" ["Vorname"]=> string(7) "jfdlfjd" ["Email"]=> string(14) "kdkdk@kdkdk.li" ["Mitteilung"]=> string(11) "dlkjdlskfjd" ["go"]=> string(6) "Senden" } Vielen Dank, Ihre Email ist bei uns eingegangen.
Nach dem Absenden von 'strEmail' steht:
array(5) { ["strName"]=> string(4) "dkdk" ["strVorname"]=> string(5) "kdkdk" ["strEmail"]=> string(14) "kdkdk@kkdkd.li" ["strMitteilung"]=> string(11) "dkdkdkdkddd" ["go"]=> string(6) "Senden" } Vielen Dank, Ihre Email ist bei uns eingegangen.
Wenn du sagt, die Funktion "mail", meinst du dann: $_REQUEST['mail']? Oder meinst du das go durch mail ersetzen:
alt:
if($_REQUEST['go'])
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="go")
neu:
if($_REQUEST['mail'])
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="mail")
Gruss
bim
Hier mal den Code vom Formular selbst:
<form id="form1" name="form1" method="post" action="kontaktformular-auswerten.php">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td><div align="left">Name</div></td>
<td width="80%"><div align="left"><span id="sprytextfield1">
<label>
<input type="text" name="Name" id="Name" />
</label>
<span class="textfieldRequiredMsg">Bitte geben Sie Ihren Name ein</span><span class="textfieldMinCharsMsg">Die mindestens erforderliche Zeichenanzahl wurde unterschritten.</span><span class="textfieldMaxCharsMsg">Die maximal zulässige Zeichenanzahl wurde überschritten.</span></span></div></td>
</tr>
<tr>
<td><div align="left">Vorname</div></td>
<td width="80%"><div align="left"><span id="sprytextfield2">
<label>
<input type="text" name="Vorname" id="Vorname" />
</label>
<span class="textfieldRequiredMsg">Bitte geben Sie Ihren Vorname ein</span><span class="textfieldMinCharsMsg">Die mindestens erforderliche Zeichenanzahl wurde unterschritten.</span><span class="textfieldMaxCharsMsg">Die maximal zulässige Zeichenanzahl wurde überschritten.</span></span></div></td>
</tr>
<tr>
<td><div align="left">email</div></td>
<td width="80%"><div align="left"><span id="sprytextfield3">
<label>
<input type="text" name="Email" id="Email" />
</label>
<span class="textfieldRequiredMsg">Bitte geben Sie Ihre Email ein</span><span class="textfieldInvalidFormatMsg">Ungültiges Format</span></span></div></td>
</tr>
<tr>
<td><div align="left">Mitteilung</div></td>
<td width="80%"><div align="left"><span id="sprytextarea1">
<label>
<textarea name="Mitteilung" id="Mitteilung" cols="45" rows="5"></textarea>
<span id="countsprytextarea1"> </span></label>
<span class="textareaRequiredMsg">Bitte geben Sie Ihre Mitteilung ein</span><span class="textareaMinCharsMsg">Die mindestens erforderliche Zeichenanzahl wurde unterschritten.</span><span class="textareaMaxCharsMsg">Die maximal zulässige Zeichenanzahl wurde überschritten.</span></span></div></td>
</tr>
<tr>
<td> </td>
<td><div align="left">
<label>
<input type="submit" name="go" id="go" value="Senden" />
</label>
</div></td>
</tr>
</table>
</form>
[mod: php, code tags]
vt1816
23.07.2009, 11:42:38
Wenn Du möchtest, dass Dir hier weiter geholfen wird - dann benutze bitte zukünftig die foreneignen Tag's! So wird sich den Code niemand anschauen.
fritzpas
19.08.2009, 22:39:51
Hallo,
hatte ien ähnliches Problem mit selbiger Fehlermeldung.
Bei mir wars ein $_POST['email'] ich habe dann im Globalenbereich folgende Zeilen eingefügt.
$email = isset($_POST['email']) ? $_POST['email'] : "";
und in und dort wo ich ursprünglich $_POST['email'] verwende ich jetzt die Variable.
echo "<td><input name=\"email\" value=\"$email\" class=\"form_input\" type=\"text\" /></td>";
Vielleicht hilfts dir auch weiter!?!
Grüße
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.