lexus_mod: Fehler: for foreach()

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 ?>

  1. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. 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

      1. 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

        --
        bythewaythewebsuxgoofflineandenjoytheday
        1. 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

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. 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

            --
            bythewaythewebsuxgoofflineandenjoytheday