Klaus: Formalar-Fehler, aber wo?!?

Hi,
ich habe ein Formular in PHP geschrieben. Kann mir jemand sagen, weshalb ich in den ersten 3 Zeilen eine Fehlermeldug bekomme?

if(strlen($name) > 3 && strlen($vorname) > 3 && strlen($strasse) > 3 && strlen($plz) > 3 && strlen($ort) > 3) && strlen($tel) > 3 && strlen($fax) > 3 && strlen($email) > 3)
            {
               $mail.="
               Name: $name
               Vorname: $vorname
               Strasse: $strasse
         PLZ: $plz
               Ort: $ort
               Telefon: $tel
               Fax: $fax
               E-Mail: $email";
               mail($recipient,$name,$vorname,$strasse,$plz,$ort,$tel,$fax,$email,"From:$name <$email>\n");
               echo "
                 <tr>
                    <td>Vielen Dank für Ihre Nachricht!</td>
                 </tr>
           ";
            }
  else
    echo ".....

  1. also ich wuerde das so machen...

    $mail .= "Name: ";
    $mail .= $name;
    $mail .= "Vorname: ";
    $mail .= $vorname;
     usw ....

    1. Habe ich versucht. Es kommt aber immer noch die selbe Fehlermeldung an der selben Stelle.

      Vielleicht ist aber auch sonst irgendwo was falsch und ich sehe das einfach nur nicht. Deshalb, auch wenns nicht üblich ist, hiermal das ganze Script.

      <?
        $recipient = "mail@meine_firma.de";
        $subject = "Meine Firma";
        echo "
      <html>
            <head>
            </head>
           <body>
           <table cellspacing='0' cellpadding='5' border='0'>
          ";
           if(strlen($name) > 3 && strlen($vorname) > 3 && strlen($strasse) > 3 && strlen($plz) > 3 && strlen($ort) > 3) && strlen($tel) > 3 && strlen($fax) > 3 && strlen($email) > 3)
                  {
                     $mail.="
                           $mail .= "Name: ";
             $mail .= $name;
                    $mail .= "Vorname: ";
             $mail .= $vorname;
             $mail .= "Strasse: ";
             $mail .= $strasse;
                           $mail .= "PLZ ";
             $mail .= $plz;
             $mail .= "Ort: ";
             $mail .= $ort;
                           $mail .= "Telefon: ";
             $mail .= $tel;
                           $mail .= "Fax: ";
             $mail .= $fax;
                           $mail .= "EMail: ";
             $mail .= $email;
                      mail($recipient,$name,$vorname,$strasse,$plz,$ort,$tel,$fax,$email,"From:$name <$email>\n");
                     echo "
                       <tr>
                          <td>Vielen Dank für Ihre Nachricht!</td>
                       </tr>
                 ";
                  }
        else
          echo "
            <form action='$PHP_SELF' method='post'>
            <P>Ich benötige Detailinfos zu folgenden Themen:<P>
            <hr>
            <table border=0 width=50%>
               <tr>
                   <td width=20%>Name:</td>
                   <td width=20%><input name='name' type='text'  value='$name' rows=1 cols=1 size='25' align=left></td>

      <-- hier sind dann die anderen Eingabefelder

      <p><input type='submit' value='Absenden'> an mich !<br><br>
          <P>
          </form>
          ";

      echo "
          </table>
        </body>
      </html>
        ";
      ?>

      1. das gleich gilt natürlich für das echo in der 3ten zeile und auch nochmal weiter unten ...

        echo darf keinen zeilenumbruch haben

        es sollte so aussehen
        echo "<html><head></head><body><table>"; (abgeschlossene zeile)

        wenn du im generierten quelltext die umbrüche haben willst siehe bei dir oben
        dann halt so
        echo "<html>\n<head>\n</head>\n";

        \n steht für NeueZeile

        1. echo darf keinen zeilenumbruch haben

          Oh, das ist mir neu. Muss ich jetzt meine ganzen Scripte umschreiben?

          ;-)

        2. Funzt leider immer noch net.

          Parse error: parse error in /raid/domains/de/

          1. Nabend,

            Parse error: parse error in /raid/domains/de/

            Dann sag doch auch einmal in welcher Zeile (markiere sie) und ebenso, was es für eine Meldung ist. Meistens sind diese aber doch so super selbsterklärend...
            (natürlich hast du Error-Reporting genau wegen diesen Zwecken auf E_ALL stehen...)

            Bis denne,

      2. Nabend,

        Es kommt aber immer noch die selbe Fehlermeldung an der selben Stelle.

        Die du aber immer noch nicht verstehen oder gar mitteilen möchtest...

        Bis denne,

  2. Hi,

    $mail.="
                   Name: $name
                   Vorname: $vorname
                   Strasse: $strasse
             PLZ: $plz
                   Ort: $ort
                   Telefon: $tel
                   Fax: $fax
                   E-Mail: $email";

    Schön, jetzt hast Du alle Daten für die Mail in einer Variable.

    mail($recipient,$name,$vorname,$strasse,$plz,$ort,$tel,$fax,$email,"From:$name <$email>\n");

    Und jetzt übergibst Du alles einzeln an die mail-Funktion, die mit diesen Sachen aber nicht viel anfangen kann...

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
  3. Hi,

    if(strlen($name) > 3 && strlen($vorname) > 3 && strlen($strasse) > 3 && strlen($plz) > 3 && strlen($ort) > 3) && strlen($tel) > 3 && strlen($fax) > 3 && strlen($email) > 3)

    Die Überprüfungen sind z.T. auch sinnlos.
    Warum muß der Nachname mind. 4 Zeichen haben? Edgar Allan Poe, ...
    Warum muß der Vorname mind. 4 Zeichen haben? Tim, Bob, Jim, ...
    Warum muß eine PLZ vorhanden sein? Nicht in jedem Land gibt es Postleitzahlen (Irland z.B.) - oder darf man nur aus Deutschland Kontakt aufnehmen?
    Warum muß der Ort mind. 4 Zeichen haben? Au (zw. München und Regensburg), Aue (südöstl. von Zwickau), ...
    Warum muß die Faxnummer überhaupt vorhanden sein? Ich hab z.B. kein Fax...
    Eine email-Adresse muß auch mind. 6 Zeichen haben (a@b.xy [absichtlich nicht example.org, da zu lang - dafür aber mit derzeit ungültiger tld])

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
  4. habe d'ehre

    if(strlen($name) > 3 && strlen($vorname) > 3 && strlen($strasse) > 3 && strlen($plz) > 3 && strlen($ort) > 3) && strlen($tel) > 3 && strlen($fax) > 3 && strlen($email) > 3)

    Wo kommen denn eigentlich Deine Variablen her? Ich vermute mal mit POST

    also $_POST['name'] etc;

    Die komische Verkettung wuerde ich mal durch eine vernuenftige Formularfeldpruefung ersetzen. Wenn irgendwas nicht Deinen VOrstellungen[1] entspricht einfach $sendemail = "no" setzen und diese vor dem Versand pruefen.

    |mail($recipient,$name,$vorname,$strasse,$plz,$ort,$tel,$fax,$email,"From:$name

    Die Exakte Syntax fuer mail()

    mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

    Jetzt vergleiche mal mit Deiner Funktion.

    [1] Warum diese sinnbefreit sind wurde Dir schon mitgeteilt.

    carpe diem
    Wilhelm