Boory: Value von SUBMIT-Button soll nicht mit übermittelt werden

Hallo Forum,

ich versende ein Mail-Form mit PHP Post und bekomme den Value des Submit-Buttons mit in die Email gesendet. Kann mir jemand einen Tip geben, wie ich diese Ausgabe vermeiden kann?
Im Formular ist der Button so angelegt:

  
<INPUT NAME="submit" TYPE="submit" VALUE="Send Email">

Hier der Code der "mailer.php":

  
<?php  
include("header.php");  
  
# Empfängeradresse  
$strEmpfaenger = 'mail@empfaenger.tld';  
  
# Senderadresse  
$strFrom       = '"Mail from Webpage" <mail@absender.tld>';  
  
# Betreff der Mail  
$strSubject    = 'Feedback';  
  
# Dankeschön-Seite  
$strReturnhtml = 'http://www.domain.de/thx.php';  
  
# Zeichen zwischen Feldnamen und dem angegebenen Wert  
$strDelimiter  = ":\t";  
  
### Ende Konfiguration ###  
  
if($_POST)  
{  
 # Abfragen, ob alle Pflichtfelder gesetzt sind  
  
 if($_POST['name'] && $_POST['land'] && $_POST['email'] && $_POST['mailbetreff'])  
 {  
  $strMailtext = "";  
  
  while(list($strName,$value) = each($_POST))  
  {  
   if(is_array($value))  
   {  
    foreach($value as $value_array)  
    {  
     $strMailtext .= $strName.$strDelimiter.$value_array."\n";  
    }  
   }  
   else  
   {  
    $strMailtext .= $strName.$strDelimiter.$value."\n";  
   }  
  }  
 }  
else die('<div class="content"><div class="text"><div class="headline01">Please fill out all xxx required fields!<br><br><br><div class="text"><a href="javascript:history.go(-1)"  onMouseOver="self.status=document.referrer;return true">Go Back</a></div></div></div></div>');  
  
 if(get_magic_quotes_gpc())  
 {  
  $strMailtext = stripslashes($strMailtext);  
 }  
  
 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)  
  or die("The email couldn't be sent. Please try it again later.");  
 header("Location: $strReturnhtml");  
 exit;  
}  
include("footer.php");  
?>

Und hier der inhalt der empfangenen Email:

name: Absendername
company:   eingetragene Firma
land: eingetragenes Land
phone: 0815/4711
email: eingetragene Email-Adresse
mailbetreff: der eingetragene Betreff
mailnachricht: TextTextText
submit: Send Email

Und eben dieses "submit:   Send Email" soll weg! Und ich hab keinen Plan wie... :o)

Würde mich über Hilfe freuen!

Boory

  1. Hi,

    ich versende ein Mail-Form mit PHP Post und bekomme den Value des Submit-Buttons mit in die Email gesendet. Kann mir jemand einen Tip geben, wie ich diese Ausgabe vermeiden kann?

    sofern das Entfernen des name-Attributs nicht in Frage kommt: Frage den Namen an geeigneter Stelle ab und verzichte entsprechend auf die Ausgabe.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. hi,

    each($_POST))

    Hier kommt alles, was name und value hat, in die Maildatei. Entweder Du verzichtest auf eine Schleife, die sicher einiges automatisiert und liest Deine Felder händisch aus oder Du lässt die Schleife drin und übergehst mit einer Kontrollstruktur das inputfeld mit dem Namen 'submit'.

    Hotti

  3. <INPUT NAME="submit" TYPE="submit" VALUE="Send Email">

      
    entferne NAME="submit"  
      
    andernfalls...  
      
    
    >   while(list($strName,$value) = each($\_POST))  
    >   {  
      
    // hier eine Ausnahme  
        next if $strName eq 'submit';  
      
    
    >    if(is\_array($value))  
      
    mfg Beat  
    \--  
    
    ><o(((°>           ><o(((°>  
    
       <°)))o><                     ><o(((°>o  
    Der Valigator leibt diese Fische
    
  4. Hello,

    while(list($strName,$value) = each($_POST))
      {
         if(is_array($value))
         {
             foreach($value as $value_array)
             {
                 $strMailtext .= $strName.$strDelimiter.$value_array."\n";
             }
         }
         else
         {
             $strMailtext .= $strName.$strDelimiter.$value."\n";
         }
      }

    Wie nennt man denn das obige Konstrukt?
    Ist das eine Schleife?

    Welches Objekt wird denn da abgearbeiet?
    Ach das $_POST-Array?

    Und wo steht der Bezeichner des Submit-Buttons?
    Der steht als Element-Bezeichner im $_POST-Array.

    Nun gibt es zwei Möglichkeiten:

    • vor der Schleife rausschmeißen
    • in der Schleife prüfen, ob der gerade ausgegeben werden soll und dann unterdrücken...

    ein

    unset($_POST['submit'])

    vor der Schleife würde es also schon tun.

    Allerdings ist das ganze Script nicht so schön, weil alle Post-Parameter einfach ungeprüft in die Mail aufgenommen werden. Dafür ist es aber schön einfach ;-))

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      Allerdings ist das ganze Script nicht so schön, weil alle Post-Parameter einfach ungeprüft in die Mail aufgenommen werden. Dafür ist es aber schön einfach ;-))

      die Quelle sollte Dir bekannt vorkommen :-)

      Freundliche Grüße

      Vinzenz

      1. Hello,

        die Quelle sollte Dir bekannt vorkommen :-)

        Klar! Diese Baustelle wollten wir ja auch schon lange mal angehen.
        Aber solange nix besseres da ist, soll man auch nicht meckern...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. Hallo Tom,

      vielen Dank für den Tip! Klingt so, als könnte es mir weiterhelfen! Aber wo genau sollte das "unset($_POST['submit'])" rein? Hab jetzt schon ein paar Positionen ausprobiert und bekomme als Ergebnis erst mal nix, also eine leere Seite...
      Würde es Dir etwas ausmachen, mir die genaue Position zu zeigen?

      Viele Grüße und schon mal Danke!

      Boory

      Hello,

      while(list($strName,$value) = each($_POST))
        {
           if(is_array($value))
           {
               foreach($value as $value_array)
               {
                   $strMailtext .= $strName.$strDelimiter.$value_array."\n";
               }
           }
           else
           {
               $strMailtext .= $strName.$strDelimiter.$value."\n";
           }
        }

      Wie nennt man denn das obige Konstrukt?
      Ist das eine Schleife?

      Welches Objekt wird denn da abgearbeiet?
      Ach das $_POST-Array?

      Und wo steht der Bezeichner des Submit-Buttons?
      Der steht als Element-Bezeichner im $_POST-Array.

      Nun gibt es zwei Möglichkeiten:

      • vor der Schleife rausschmeißen
      • in der Schleife prüfen, ob der gerade ausgegeben werden soll und dann unterdrücken...

      ein

      unset($_POST['submit'])

      vor der Schleife würde es also schon tun.

      Allerdings ist das ganze Script nicht so schön, weil alle Post-Parameter einfach ungeprüft in die Mail aufgenommen werden. Dafür ist es aber schön einfach ;-))

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      1. Hello,

        vielen Dank für den Tip! Klingt so, als könnte es mir weiterhelfen! Aber wo genau sollte das "unset($_POST['submit'])" rein? Hab jetzt schon ein paar Positionen ausprobiert und bekomme als Ergebnis erst mal nix, also eine leere Seite...

        Würde es Dir etwas ausmachen, mir die genaue Position zu zeigen?

        Direkt vor der Schleife.

        unset($_POST['submit'])

        while(list($strName,$value) = each($_POST))
          {
             if(is_array($value))
             {
                 foreach($value as $value_array)
                 {
                     $strMailtext .= $strName.$strDelimiter.$value_array."\n";
                 }
             }
             else
             {
                 $strMailtext .= $strName.$strDelimiter.$value."\n";
             }
          }

        Du solltest aber dringend versuchen zu verstehen, was da passiert in dem Script.
        Wenn Du Fragen dazu hast, wird man Dir bestimmt gerne weiterhelfen hier.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallo Tom,

          sicher hast Du recht, dass man verstehen sollte, was man tut. Da aber diese Geschichte nur einen ganz kleinen Teil meiner Tätigkeit berührt, fehlt mir (leider!!!) die Zeit, mich da tiefergehend einzuarbeiten. Interessieren würde es mich schon! Aber nun zum Script...
          Leider klappt das Ganze nicht. Sobald ich "unset($_POST['submit'])" vor der Schleife einfüge, bekomme ich nach dem Absenden eine komplett leere Seite angezeigt und die Maildaten gehen auch nicht raus. "unset($_POST['submit'])" weg ---> alles gut. Auch die Danke-Seite wird dann angezeigt. Mit "unset($_POST['submit'])" ---> nix. Leere Seite...
          Brauchst Du evtl. noch weitere Infos von mir?

          Bis dahin schon mal vielen Dank!

          Boory

          Hello,

          vielen Dank für den Tip! Klingt so, als könnte es mir weiterhelfen! Aber wo genau sollte das "unset($_POST['submit'])" rein? Hab jetzt schon ein paar Positionen ausprobiert und bekomme als Ergebnis erst mal nix, also eine leere Seite...

          Würde es Dir etwas ausmachen, mir die genaue Position zu zeigen?

          Direkt vor der Schleife.

          unset($_POST['submit'])

          while(list($strName,$value) = each($_POST))
            {
               if(is_array($value))
               {
                   foreach($value as $value_array)
                   {
                       $strMailtext .= $strName.$strDelimiter.$value_array."\n";
                   }
               }
               else
               {
                   $strMailtext .= $strName.$strDelimiter.$value."\n";
               }
            }

          Du solltest aber dringend versuchen zu verstehen, was da passiert in dem Script.
          Wenn Du Fragen dazu hast, wird man Dir bestimmt gerne weiterhelfen hier.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          1. Mahlzeit Boory,

            Leider klappt das Ganze nicht. Sobald ich "unset($_POST['submit'])" vor der Schleife einfüge, bekomme ich nach dem Absenden eine komplett leere Seite angezeigt und die Maildaten gehen auch nicht raus.

            Werden Fehlermeldungen angezeigt? Wenn ja: wie lauten sie? Wenn nein: aktiviere sie, indem Du das error_reporting auf E_ALL stellst und display_errors einschaltest.

            Darüber hinaus könntest Du Dir *NACH* dem unset() - das Du im Übrigen, wie *ALLE* PHP-Befehle, mit einem Semikolon abschließen solltest! - mal den dann im Array $_POST enthaltenen Inhalt testweise anzeigen lassen ... z.B. mittels var_dump().

            Das sind im Übrigen alles absolute Grundlagen eines halbwegs sinnvollen Debuggings bzw. zielführender Fehleranalyse ...

            Achja, und TOFU kannst Du Dir bitte in Zukunft verkneifen, OK?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Leider klappt das Ganze nicht. Sobald ich "unset($_POST['submit'])" vor der Schleife einfüge, bekomme ich nach dem Absenden eine komplett leere Seite angezeigt und die Maildaten gehen auch nicht raus.

              Werden Fehlermeldungen angezeigt? Wenn ja: wie lauten sie?

              Wie oben schon beschrieben, bekomme ich eine LEERE SEITE. Also auch keine Fehlermeldungen.

              Darüber hinaus könntest Du Dir *NACH* dem unset() - das Du im Übrigen, wie *ALLE* PHP-Befehle, mit einem Semikolon abschließen solltest!...

              OK - und DAS war der Fehler. Ich hatte das Semikolon wohl versehentlich gelöscht und dies nicht bemerkt. Anfängerfehler! Aber ich darf das! Ich BIN Anfänger... :o)

              Achja, und TOFU kannst Du Dir bitte in Zukunft verkneifen, OK?

              Jawoll! Mach ich!

              Vielen Dank für die Tips!

              Auch an alle anderen, die mir geholfen haben - vielen Dank!

              Boory

              1. Mahlzeit Boory,

                Werden Fehlermeldungen angezeigt? Wenn ja: wie lauten sie?

                Wie oben schon beschrieben, bekomme ich eine LEERE SEITE. Also auch keine Fehlermeldungen.

                Dann lies bitte nochmal den darauf folgenden Satz ... wenn Du Dir während der Entwicklung *IMMER* *ALLE* Fehlermeldungen anzeigen lässt, hätte Dich PHP auch sicher auf den Fehler hingewiesen.

                MfG,
                EKKi

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

                  Dann lies bitte nochmal den darauf folgenden Satz ... wenn Du Dir während der Entwicklung *IMMER* *ALLE* Fehlermeldungen anzeigen lässt, hätte Dich PHP auch sicher auf den Fehler hingewiesen.

                  Nun, manches spricht eben doch für ein umfassenderes Quoting... Auch MEIN nächster Satz wäre vielleicht interessant gewesen. Dort stand, dass ich ANFÄNGER bin. Da ein Profi wie Du mit der Materie vertraut ist, einem Anfänger wie mir jedoch vielleicht solche Möglichkeiten wie *error_reporting* und *display_errors* nicht so geläufig sind (vielleicht auch deshalb, weil ich kein Profi werden will und kann), sollte man eventuell ein wenig nachsichtig sein. Nichts desto trotz danke ich Dir für Deine Ausführungen und Deine Hilfe. Allerdings werde ich wohl - vor allem aus Gründen der Zeit - auch weiterhin bei Bedarf fertige Scripte benutzen und mir für meine Zwecke zurechtbiegen, auch ohne die höheren Weihen der Programmierkunst empfangen zu haben.

                  Nochmals vielen Dank

                  Boory

                  1. Mahlzeit Boory,

                    Auch MEIN nächster Satz wäre vielleicht interessant gewesen. Dort stand, dass ich ANFÄNGER bin.

                    Das habe ich gelesen. Genau deswegen habe ich ja extra darauf hingewiesen, wie Du Fehlermeldungen einschalten kannst, wenn sie denn nicht angezeigt werden. Und das wurden sie ja nicht.

                    Wenn Du also nicht durch meinen zweiten Hinweis auf das fehlende Semikolon bereits auf die Fehlerursache gestoßen wärst (oder wenn ich diesen Hinweis nicht gegeben hätte), hättest Du dieser sicher durch die entsprechenden Fehlermeldungen auf die Schliche kommen können.

                    Deswegen habe ich explizit nach Fehlermeldungen gefragt und auch beschrieben, wie Du dazu kommen kannst. Die Erfahrung - insbesondere hier im Forum - zeigt nämlich, dass Fehlermeldungen oft nicht genannt werden, sondern stattdessen von weißen Seiten oder ähnlichen Dingen geschrieben wird.

                    (vielleicht auch deshalb, weil ich kein Profi werden will und kann),

                    Das hat mit Profi oder Nicht-Profi wenig zu tun ... vernünftige und zielführende Fehleranalyse und Problemursachenforschung (und das ist beides nur mit sinnvollem Debugging und Studieren der eventuell auftretenden Hinweise, Warnungen und Fehlermeldungen möglich) ist aber Grundlage beim Programmieren.

                    Allerdings werde ich wohl - vor allem aus Gründen der Zeit - auch weiterhin bei Bedarf fertige Scripte benutzen und mir für meine Zwecke zurechtbiegen, auch ohne die höheren Weihen der Programmierkunst empfangen zu haben.

                    Dann möchte ich Dich bitten, bei auftretenden Problem zuerst dort nachzufragen, wo Du die Programme bzw. Code-Teile her hast. Die jeweiligen Entwickler sollten nämlich eigentlich am Besten wissen, wie man ihre Produkte verwendet bzw. debuggt.

                    MfG,
                    EKKi

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

                      Dann möchte ich Dich bitten, bei auftretenden Problem zuerst dort nachzufragen, wo Du die Programme bzw. Code-Teile her hast. Die jeweiligen Entwickler sollten nämlich eigentlich am Besten wissen, wie man ihre Produkte verwendet bzw. debuggt.

                      Hab ich gemacht! Richtige Seite, und - wie ich meine - auch richtiges Forum!
                      Guckst Du HIER

                      Viele Grüße

                      Boory

                      1. Mahlzeit Boory,

                        Hab ich gemacht! Richtige Seite, und - wie ich meine - auch richtiges Forum!

                        Achja, stimmt ...

                        Und Patrick hat nicht geantwortet ("Bei Fragen zu diesem Beitrag bitte zuerst in der zugehörigen FAQ nachsehen, ob die Frage bereits beantwortet wurde und dann erst den Autor des Beitrags kontaktieren!")?

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                        1. Und Patrick hat nicht geantwortet ("Bei Fragen zu diesem Beitrag bitte zuerst in der zugehörigen FAQ nachsehen, ob die Frage bereits beantwortet wurde und dann erst den Autor des Beitrags kontaktieren!")?

                          Ähm... hier hatten nur Vinzenz und Tom geschrieben. Und in der FAQ hatte ich zu meinem Thema auch nix gefunden. Der Author des Scripts ist lt. Quelle Jörg Reinhold (Fastix) und auf dessen Seite bin ich auf eine Consulting-Firma gestoßen. Leider kenne ich die Leute hier nicht so gut, dass ich dann private Emails an Chefs von Consulting Firmen schreibe. Daher mein Beitrag / meine Anfrage hier im Forum. Schließlich steht für mich da über beidem (Script und Forum) "selfhtml" drüber... :o)

                          Viele Grüße

                          Boory

                          1. Mahlzeit Boory,

                            Der Author des Scripts ist lt. Quelle Jörg Reinhold (Fastix)

                            Nein, es ist Patrick Canterino. fastix hat lt. Artikel "nur" mitgearbeitet bzw. einige Sicherheitsprobleme behoben.

                            Daher mein Beitrag / meine Anfrage hier im Forum. Schließlich steht für mich da über beidem (Script und Forum) "selfhtml" drüber... :o)

                            Schon klar - ist ja auch vollkommen in Ordnung. Die Hinweis von mir bzgl. Fehleranalyse sind ja auch nicht böse gemeint gewesen. Es ist nur für eine zielführende Fehleranalyse unumgänglich, diese Einstellungen zum Debuggen vorzunehmen.

                            MfG,
                            EKKi

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

                              Nein, es ist Patrick Canterino. fastix hat lt. Artikel "nur" mitgearbeitet bzw. einige Sicherheitsprobleme behoben.

                              Oh - na dann muß ich mich bei Patrick ja wohl fairerweise entschuldigen! Außer, dass sein Name ganz oben als Link auftaucht, wird er nämlich auf dieser Seite im Text nirgends erwähnt, so dass ich Jörg Reinholz für den Author hielt. Man sollte halt die Überschriften mit lesen... :o)
                              Da ich leider ein weiteres Problem mit dem Script habe, werde ich mich jetzt auch einmal vertrauensvoll an Patrick wenden. Möglicherweise kann er mir ja dort weiterhelfen...

                              Schon klar - ist ja auch vollkommen in Ordnung. Die Hinweis von mir bzgl. Fehleranalyse sind ja auch nicht böse gemeint gewesen. Es ist nur für eine zielführende Fehleranalyse unumgänglich, diese Einstellungen zum Debuggen vorzunehmen.

                              ...wofür ich Dir auch sehr dankbar bin! Da ich - wie bereits erwähnt - sicher kein Programmierer bin, ist es sehr gut, solche "Tricks" zu kennen, die einem das Leben leichter machen können... :o)

                              Vielen Dank nochmal!

                              Boory