Jan: PHP Formmailer Umstellen

Hallo,
seit gestern versuche ich einen Formmailer (hier der original Quelltext) an meine Bedürfnisse anzupassen. Prinzipiell möchte ich nur weitere Textfelder einfügen (Beispiel siehe hier - Quelltext dazu hier). Das ganze funktioniert mit maximal zwei Textfeldern (also z.B. Panelformat 1 - Mass1 (mm) und Nachricht) einwandfrei.
Hier der Link und der interessante PHP Quelltext:

    // no attachment, normal E-mail:  
    else  
     {  
      $mail_header = "From: ".$email."\r\n";  
      $mail_header .= "X-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";  
      $mail_header .= "Content-Type: text/plain";  
      if(isset($settings['additional_mail_parameter']))  
       {  
        if(@mail($settings['mailto'],$mail_subject,$text,$text2,$text3,$mail_header, $settings['additional_mail_parameter'])) $sent = true; else $errors[] = $lang['error_mailserver'];  
       }  
      else  
       {  
        if(@mail($settings['mailto'],$mail_subject,$text,$text2,$text3,$mail_header)) $sent = true; else $errors[] = $lang['error_mailserver'];  
       }  
     }

Sobald ich aber mehr als zwei Textfelder einbinden möchte (also z.B. Panelformat 1 - Mass1 (mm), Panelformat 1 - Mass2 (mm) und Nachricht)
Hier der Link Quelltext:

    // no attachment, normal E-mail:  
    else  
     {  
      $mail_header = "From: ".$email."\r\n";  
      $mail_header .= "X-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\r\n";  
      $mail_header .= "Content-Type: text/plain";  
      if(isset($settings['additional_mail_parameter']))  
       {  
        if(@mail($settings['mailto'],$mail_subject,$text,$text2,$mail_header, $settings['additional_mail_parameter'])) $sent = true; else $errors[] = $lang['error_mailserver'];  
       }  
      else  
       {  
        if(@mail($settings['mailto'],$mail_subject,$text,$text2,$mail_header)) $sent = true; else $errors[] = $lang['error_mailserver'];  
       }  
     }  

Erscheint die Meldung: keine Verbindung zum Mailserver - bitte später nochmal versuchen. Diese Meldung entspricht: $lang['error_mailserver']; (siehe Qelltext).

Da dieses Vorhaben das erste ist welches ich mit PHP umsetzen möchte ist mein Wissen noch mehr als eingeschränkt, ich wäre dankbar wenn sich jemand mal den Quelltext ansehen könnte und mir einen Tipp geben könnte was ich falsch mache.

Gruß,

Jan

  1. Mahlzeit Jan,

    if(@mail($settings['mailto'],$mail_subject,$text,$text2,$text3,$mail_header, $settings['additional_mail_parameter'])) $sent = true; else $errors[] = $lang['error_mailserver'];

    if(@mail($settings['mailto'],$mail_subject,$text,$text2,$text3,$mail_header)) $sent = true; else $errors[] = $lang['error_mailserver'];

    Wie kommst Du auf die Idee, dass Du der Funktion mail() beliebig viele Parameter mit unterschiedlichsten Bedeutungen übergeben kannst?

    Erscheint die Meldung: keine Verbindung zum Mailserver - bitte später nochmal versuchen. Diese Meldung entspricht: $lang['error_mailserver']; (siehe Qelltext).

    ... und ist vollkommen bedeutungslos, da Du ja die Rückgabe "echter" Meldungen mittels des @ unterdrückst. Hilfreich bei der Fehlersuche ist übrigens auch error_reporting() auf ein geeignetes Level zu stellen.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Moin,

      Wie kommst Du auf die Idee, dass Du der Funktion mail() beliebig viele Parameter mit unterschiedlichsten Bedeutungen übergeben kannst?

      »»

      Wahrscheinlich durch meine völlige Unkenntniss.

      ... und ist vollkommen bedeutungslos, da Du ja die Rückgabe "echter" Meldungen mittels des @ unterdrückst. Hilfreich bei der Fehlersuche ist übrigens auch error_reporting() auf ein geeignetes Level zu stellen.

      Das hilft mir direkt leider nicht weiter, weil bei mir einfach die Basics noch fehlen. Hast du vielleicht einen etwas konkreteren Tip der mich der Lösung meines Problems etwas näher bringt?

      Danke,

      Jan

      1. Hi,

        Das hilft mir direkt leider nicht weiter, weil bei mir einfach die Basics noch fehlen.

        und deshalb hast Du auch nicht erkannt, dass das Script über
          $subject = trim(stripslashes($_POST['subject']));
        zur Spamschleuder werden kann.

        freundliche Grüße
        Ingo

        1. Alles klar,
          danke euch beiden, werde jetzt mal auf Basis des Formmailers von Ingo weiterarbeiten, der scheint mir für den Anfang etwas übersichtlicher (läuft auch schon fast so wie ich mir das wünsche!).  Bei zeiten werde ich mich dann auch mal etwas besser einlesen.

          Danke,

          Jan

          Hi,

          Das hilft mir direkt leider nicht weiter, weil bei mir einfach die Basics noch fehlen.
          und deshalb hast Du auch nicht erkannt, dass das Script über
            $subject = trim(stripslashes($_POST['subject']));
          zur Spamschleuder werden kann.

          freundliche Grüße
          Ingo

      2. Mahlzeit Jan,

        Wie kommst Du auf die Idee, dass Du der Funktion mail() beliebig viele Parameter mit unterschiedlichsten Bedeutungen übergeben kannst?

        Wahrscheinlich durch meine völlige Unkenntniss.

        ... die ja spätestens nach Lesen der verlinkten Dokumentationsseite behoben sein sollte.

        Hast du vielleicht einen etwas konkreteren Tip der mich der Lösung meines Problems etwas näher bringt?

        Lesen. Viel lesen. Unter anderem die verlinkten PHP-Handbuchartikel. Außerdem entsprechende Tutorials, die Du durch Eingabe sinnvoller Suchbegriffe in eine Suchmaschine Deiner Wahl finden kannst. Wenn Du konkrete Fragen hast, melde Dich.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|