Fehler: for foreach()
lexus_mod
- php
Hallo,
ich habe ein kleines Problem, mein Formmailer lauft unter der Version 4.2.3 aber unter der Version 4.1.3 bekomme ich das zurückgegeben.
Warning: Invalid argument supplied for foreach() in /home/sites/site12/web/kontakt.php on line 2
Was mache ich falsch?
Hier das Script:
<?
foreach ( $_POST as $name => $value ) {
$even .= "$name = $value\n"; // HIER liegt der Fehler
}
$form = '<form method="post" action="'.$PHP_SELF.'?cont=kontakt">';
if(
// ( 01 ) Muss
$_POST["vname"]!=""
&& $_POST["nname"]!=""
&& $_POST["str"]!=""
&& $_POST["plzort"] !=""
&& $_POST["tel"] !=""
&& $_POST["email"] !=""
&& $_POST["k-text"] !=""
){
print $form.'<table width="390" border="0" cellspacing="0" cellpadding="0" height="458"><tr><td background="_images/1.gif">';
$datum = date( "d.m.Y - H:i:s",time() );
foreach( $_POST as $name => $value ) {
$even = "$name = $value\n";
}
$text = "Nachricht\n\nDatum: $datum\n\n";
$text1 = 'Vorname: '.$_POST["vname"]."\n"
.'Nachname: '.$_POST["nname"]."\n"
.'Straße : '.$_POST["str"]."\n"
.'Telefon: '.$_POST["tel"]."\n"
.'PLZ / Ort: '.$_POST["plzort"]."\n"
.'E-Mail: '.$_POST["email"]."\n"
.'Ihre Nachricht an uns: '."\n".$_POST["k-text"]."\n";
$texthtm = 'Nachricht<br>'
.'Datum: '.$datum."<br><br>"
.'Vorname: '.$_POST["vname"]."<br>"
.'Nachname: '.$_POST["nname"]."<br>"
.'Straße : '.$_POST["str"]."<br>"
.'Telefon: '.$_POST["tel"]."<br>"
.'E-Mail: '.$_POST["email"]."<br>"
.'Ihre Nachricht an uns:<br>'.$_POST["k-text"]."<br>";
print $texthtm.'</td></tr></table>';
// Anmeldung-E-Mail absenden
$an = "bla@bla.de";
$betreff = "Anfrage über WWW";
$mailcheck1 = mail( $an, $betreff, $text.$text1 );
// Bestaetigungs-E-Mail absenden
$an = $_POST["email"];
$betreff = "Vielen Dank für Ihren Nachricht.";
$ausgabetext = $text;
$mailcheck2 = mail( $an, $betreff, $text.$text1 );
print'<b>Vielen Dank für Ihre Anfrage</b><br><br>';
} else {
html Formular ?>
Huhu lexus_mod
Warning: Invalid argument supplied for foreach() in /home/sites/site12/web/kontakt.php on line 2
Was mache ich falsch?
foreach ( $_POST as $name => $value ) {
$even .= "$name = $value\n"; // HIER liegt der Fehler
}
wenn kein Formular abgeschickt wurde ist das $_POST-Array undefiniert, daher die Fehlermeldung.
Prüfe daher zuvor das $_POST-array auf Existenz (z.B. mit isset).
Ausserdem solltest Du die Variable $even initialisieren bevor Du weitere Strings anhängst.
Also z.B. vor Deiner foreach-Schleifen mit
$even = '';
Viele Grüße
lulu
Hi lulu,
danke für die antwort es klappt.
Aber wie kommt es das es auf der einen Vers. Fehler verursacht und auf der anderen Vers. nicht? (das selbe Script)
leibe Güße
lexus_mod
Huhu lexus_mod
Aber wie kommt es das es auf der einen Vers. Fehler verursacht und auf der anderen Vers. nicht? (das selbe Script)
Das dürfte an unterschiedliche Einstellung für das error_reporting liegen.
notice - anzeigen ja/ nein
Viele Grüße
lulu
Hello,
Aber wie kommt es das es auf der einen Vers. Fehler verursacht und auf der anderen Vers. nicht? (das selbe Script)
Das dürfte an unterschiedliche Einstellung für das error_reporting liegen.
eher am unterschiedlichen Umgang mit dem $_POST-Array.
Die neuere Version legt auf jeden Fall eins an, die ältere nur dann, wenn Daten posted wurden.
Man sollte vor foreach() IMMER die Array-Prufung auf das Argument machen.
if(is_array($argument)
{
foreach($argument as $key => $val)
{
#blah;
}
}
Liebe Grüße aus http://www.braunschweig.de
Tom
Huhu Tom
eher am unterschiedlichen Umgang mit dem $_POST-Array.
Die neuere Version legt auf jeden Fall eins an, die ältere nur dann, wenn Daten posted wurden.
fein, da hab ich wieder was gelernt ;-)
Viele Grüße
lulu