Redflash: Fehler bei Parameterübergabe

Hallo, ich hoffe es kann mir einer Helfen.

Habe einen Formmailer auf meine Seite eingebaut.
Der gleiche, der auf einer anderen optimal funktioniert.
Nur auf der neuen funktionierts jetzt plötzlich nichtmehr.

Die html-Datei soll Parameter (email und empfänger) an das php-Skript übergeben und das php-Skript soll die Mail abschicken.
Das Kontaktieren des php-Skripts funktioniert. Nur bekommt dieses Skript keine Eingabe, sprich die Parameter. Kann also keine email versenden, weil es keine empfängeradresse bekommt.

Hat jemand Ahnung davon?
Liegt das Problem vielleicht bei meinem Webhoster?
Oder hab ich irgendwelche Einstellungen zu machen?
Ansonsten funktioniert php problemlos auf der Seite.

Gruss
redflash

  1. Hallo,

    Hat jemand Ahnung davon?

    Ahnung haben hier viele. Jedoch wäre 'ne URL und etwas Quelltext nett, damit wir Dein Problem genau analysieren können. Bei so einer Fehlerbeschreibung kann es wirklich alles sein.

    Liegt das Problem vielleicht bei meinem Webhoster?

    Dürfte nicht.

    Ich rate einfach mal und denke, Du hast ein mailto:-Formular durch den Formmailer ersetzt. Du hast aber enctype="text/plain" aus dem <form>-Element _nicht_ herausgenommen und verwendest IE als Browser. Wenn das alles der Fall ist, nimm enctype="text/plain" raus und versuch's nochmal, wenn nicht, komm mit einer _ordentlichen_ Fehlerbeschreibung wieder.

    Ach ja: (weil das in letzter Zeit so viele falsch gemacht haben, muss ich das sagen) Wenn Du mit einer richtigen Fehlerbeschreibung wiederkommst, mache bitte _keinen_ neuen Thread auf sondern bleibe in diesem.

    Grüße,

    Christian

    1. Nachtrag:

      Ich würde die Empfängeremailadresse _unbedingt_ ins Formmailer-Script hardcoden - sonst werden Spammer an deinem Formmailer ein gefundenes fressen haben ...

      Grüße,

      Christian

      1. hier die HTML-Datei
        <html>
        <head>
        <title>FC Stirnband Zeller</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <link rel="stylesheet" href="main.css" type="text/css">
        </head>

        <style type="text/css">
                Body {
                background-image:url(_back.jpg);
                background-repeat:no-repeat;
                background-position:center;
                background-attachment:fixed;}
                </style>

        <body bgcolor="#000000">

        <table border="0" align="center">
          <tr>
          <td width="500"> </td>

        <table align="center" width="450">
         <tr>
          <td align="center"><div id="inhalt10_white">MAILINGLISTE</div></td>
         </tr>
         <TR><TD height="20"></td></tr>
         <tr>
          <td align="left" width="450"><div id="inhalt9_white">Durch die Mailingliste kann jeder an alle, die sich angemeldet haben, Mails schreiben.
              Wer eine e-Mail an den Verteiler schicken möchte, der richtet seine e-Mail ganz einfach an <a id="inhalt9_red" href="mailto:fcstirnband@herrzeller.de">fcstirnband@herrzeller.de</a>.
              <br>Für die Anmeldung/Abmeldung zur Mailingliste gilt folgendes Verfahren:<br> Ihr könnt dazu die folgenden Formulare benutzen. Als Antwort bekommt ihr zunächst eine automatische Mail, die ihr dann wiederum zurückschicken müßt. Dies wird auch nochmal in der Mail genau erklärt.
              Wenn ihr aber keine Antwortmail erhaltet, dann wird wohl etwas schief gelaufen sein. Am Besten kontaktiert ihr dann mich: <a id="inhalt9_red" href="mailto:mail@herrzeller.de">mail@herrzeller.de</a>.
              In naher Zukunft werde ich Spieltermine nur noch über diese Mailingliste verabreden, deshalb bitte ich euch, euch zahlreich hier anzumelden.<br>Viel Spass damit!</div></td>
         </tr>
         <TR><TD height="30"></td></tr>
        </table>

        <hr>
        <br>
        <br>
        <form method="post" enctype="multipart/form-data" action="formmailer.php">
        <input type="hidden" name="require" value="email">
        <input type="hidden" name="recipient" value="fcstirnband-subscribe@herrzeller.de">
        <table align="center">
         <tr>
          <td align="left"><div id="inhalt9_white">ANMELDUNG</div></td>
         </tr>
         <TR><TD height="20"></td></tr>
         <tr>
          <td align="center"><div id="inhalt9_white">trage hier deine e-Mail-Adresse ein:  </div></td><td><input type=text name="email"></td>
         </tr>
         <TR><TD height="10"></td></tr>
         <tr>
          <td colspan="2" align="center"><input type="submit" value="anmelden"></td>
         </tr>
        </table>

        <br><br><hr>
        </form>

        <br>
        <form method="post" enctype="multipart/form-data" action="formmailer.php">
        <input type="hidden" name="require" value="email">
        <input type="hidden" name="recipient" value="fcstirnband-unsubscribe@herrzeller.de">
        <table align="center">
         <tr>
          <td align="left"><div id="inhalt9_white">ABMELDUNG</div></td>
         </tr>
         <TR><TD height="20"></td></tr>
         <tr>
          <td align="center"><div id="inhalt9_white">trage hier deine e-Mail-Adresse ein:  </div></td><td><input type=text name="email"></td>
         </tr>
         <TR><TD height="10"></td></tr>
         <tr>
          <td colspan="2" align="center"><input type="submit" value="abmelden"></td>
         </tr>
        </table>

        <br><br><hr>
        </form>

        </td>
          </tr>
        </table>
        </body>
        </html>

        ...

        wie gesagt, auf einem anderen Server funktioniert das ganze fehlerfrei, deshalb seh ich die Chance selsbt eigentlich sehr gering, dass der Fehler bei mir liegt.
        ... Die Funktionalität besteht darin sich in eine Mailingliste eintragen zu können.

        Gruss
        Redflash

        1. .....

          Hier das php-Script:

          /* ##############################################################################

          PLEASE DO NOT REMOVE THIS HEADER!!!

          COPYRIGHT NOTICE

          FormMail.php v4.1b

          Copyright 2000,2001 Ai Graphics and Joe Lumbroso (c) All rights reserved.

          Created 07/06/00   Last Modified 08/06/2001

          Joseph Lumbroso, http://www.aigraphics.com, http://www.dtheatre.com

          #                  http://www.lumbroso.com/scripts/ ##############################################################################

          This cannot and will not be inforced but I would appreciate a link back

          to any of these sites:

          http://www.dtheatre.com

          http://www.aigraphics.com

          http://www.lumbroso.com/scripts/

          THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

          IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

          FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL

          THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR

          OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

          ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

          OTHER DEALINGS IN THE SOFTWARE.

          ############################################################################## */

          // formmail version (for debugging mostly) $version = "4.1b";

          // referers.. domains/ips that you will allow forms to // reside on. $referers = array ('tckirrberg.de','www.tckirrberg.de','http://www.tckirrberg.de','herrzeller.de','www.herrzeller.de','fcstirnband.herrzeller.de','www.fcstirnband.herrzeller.de','http://www.herrzeller.de','http://www.fcstirnband.herrzeller.de');

          // banned emails, these will be email addresses of people // who are blocked from using the script (requested)

          $banlist = array ();

          // our mighty error function.. function print_error($reason,$type = 0) {    global $version;    build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);    // for missing required data    if ($type == "missing") {       ?>       Das Formular wurde aus den folgenden Gründen nicht übermittelt:<p>      <ul><?      echo $reason."\n";      ?></ul>      Bitte benutze den "zurück"-Button deines Browsers um es nochmal zu versuchen!.<?    } else { // every other error       ?>       Das Formular wurde aus den folgenden Gründen nicht übermittelt:<p>       <?    }    echo "<br><br>\n";    echo "<small>This form is powered by <a href="http://www.lumbroso.com/scripts/">Jack's Formmail.php $version!</a></small>\n\n";    exit; }

          // function to check the banlist // suggested by a whole lot of people.. Thanks function check_banlist($banlist, $email) {    if (count($banlist)) {       $allow = true;       foreach($banlist as $banned) {          $temp = explode("@", $banned);          if ($temp[0] == "*") {             $temp2 = explode("@", $email);             if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))                $allow = false;          } else {             if (trim(strtolower($email)) == trim(strtolower($banned)))                $allow = false;          }       }    }    if (!$allow) {       print_error("You are using from a <b>banned email address.</b>");    } }

          // function to check the referer for security reasons. // contributed by some one who's name got lost.. Thanks // goes out to him any way. function check_referer($referers) {    if (count($referers)) {       $found = false;       $temp = explode("/",getenv("HTTP_REFERER"));       $referer = $temp[2];       for ($x=0; $x < count($referers); $x++) {          if (eregi ($referers[$x], $referer)) {             $found = true;          }       }       if (!getenv("HTTP_REFERER"))          $found = false;       if (!$found){          print_error("You are coming from an <b>unauthorized domain.</b>");          error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);       }          return $found;       } else {          return true; // not a good idea, if empty, it will allow it.    } } //if ($referers)                            entfernt //   check_referer($referers);

          if ($banlist)    check_banlist($banlist, $email);

          // parse the form and create the content string which we will send function parse_form($array) {    // build reserved keyword array    $reserved_keys[] = "MAX_FILE_SIZE";    $reserved_keys[] = "required";    $reserved_keys[] = "redirect";    $reserved_keys[] = "email";    $reserved_keys[] = "require";    $reserved_keys[] = "path_to_file";    $reserved_keys[] = "recipient";    $reserved_keys[] = "subject";    $reserved_keys[] = "bgcolor";    $reserved_keys[] = "text_color";    $reserved_keys[] = "link_color";    $reserved_keys[] = "vlink_color";    $reserved_keys[] = "alink_color";    $reserved_keys[] = "title";    $reserved_keys[] = "missing_fields_redirect";    $reserved_keys[] = "env_report";    if (count($array)) {       while (list($key, $val) = each($array)) {          // exclude reserved keywords          $reserved_violation = 0;          for ($ri=0; $ri<count($reserved_keys); $ri++) {             if ($key == $reserved_keys[$ri]) {                $reserved_violation = 1;             }          }          // prepare content          if ($reserved_violation != 1) {             if (is_array($val)) {                for ($z=0;$z<count($val);$z++) {                   $content .= "$key: $val[$z]\n";                }             } else {                $content .= "$key: $val\n";             }          }       }    }    return $content; }

          // mail the content we figure out in the following steps function mail_it($content, $subject, $email, $recipient) {         mail($recipient, $subject, $content, "From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail"); }

          // take in the body building arguments and build the body tag for page display function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {    if ($style_sheet)       echo "<LINK rel=STYLESHEET href="$style_sheet" Type="text/css">\n";    if ($title)       echo "<title>$title</title>\n";    if (!$bgcolor)       $bgcolor = "#FFFFFF";    if (!$text_color)       $text_color = "#000000";    if (!$link_color)       $link_color = "#0000FF";    if (!$vlink_color)       $vlink_color = "#FF0000";    if (!$alink_color)       $alink_color = "#000088";    if ($background)       $background = "background="$background"";    echo "<body bgcolor="$bgcolor" text="$text_color" link="$link_color" vlink="$vlink_color" alink="$alink_color" $background>\n\n"; }

          // check for a recipient email address and check the validity of it // Thanks to Bradley miller (bradmiller@accesszone.com) for pointing // out the need for multiple recipient checking and providing the code. $recipient_in = split(',',$recipient); for ($i=0;$i<count($recipient_in);$i++) {    $recipient_to_test = trim($recipient_in[$i]);    if (!eregi("[1]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $recipient_to_test)) {       print_error("<b>I NEED VALID RECIPIENT EMAIL ADDRESS ($recipient_to_test) TO CONTINUE</b>");    } }

          // This is because I originally had it require but too many people // were used to Matt's Formmail.pl which used required instead. if ($required)    $require = $required; // handle the required fields if ($require) {    // seperate at the commas    $require = ereg_replace( " +", "", $require);    $required = split(",",$require);    for ($i=0;$i<count($required);$i++) {       $string = trim($required[$i]);       // check if they exsist       if((!(${$string})) || (!(${$string}))) {          // if the missing_fields_redirect option is on: redirect them          if ($missing_fields_redirect) {             header ("Location: $missing_fields_redirect");             exit;          }          $require;          $missing_field_list .= "<b>Missing: $required[$i]</b><br>\n";       }    }    // send error to our mighty error function    if ($missing_field_list)       print_error($missing_field_list,"missing"); }

          // check the email fields for validity if (($email) || ($EMAIL)) {    $email = trim($email);    if ($EMAIL)       $email = trim($EMAIL);    if (!eregi("[2]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email)) {       print_error("your <b>email address</b> is invalid");    }    $EMAIL = $email; }

          // check zipcodes for validity if (($ZIP_CODE) || ($zip_code)) {    $zip_code = trim($zip_code);    if ($ZIP_CODE)       $zip_code = trim($ZIP_CODE);    if (!ereg("([3]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("[4][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("([5]{5})", trim($zip_code)))) {       print_error("your <b>zip/postal code</b> is invalid");    } }

          // check phone for validity if (($PHONE_NO) || ($phone_no)) {    $phone_no = trim($phone_no);    if ($PHONE_NO)       $phone_no = trim($PHONE_NO);    if (!ereg("(^(.)[0-9]{3})(.)([0-9]{3})(.*)([0-9]{4}$)", $phone_no)) {       print_error("your <b>phone number</b> is invalid");    } }

          // check phone for validity if (($FAX_NO) || ($fax_no)) {    $fax_no = trim($fax_no);    if ($FAX_NO)       $fax_no = trim($FAX_NO);    if (!ereg("(^(.)[0-9]{3})(.)([0-9]{3})(.*)([0-9]{4}$)", $fax_no)) {       print_error("your <b>fax number</b> is invalid");    } }

          // prepare the content $content = parse_form($HTTP_POST_VARS);

          // check for a file if there is a file upload it if ($file_name) {    if ($file_size > 0) {       if (!ereg("/$", $path_to_file))          $path_to_file = $path_to_file."/";       $location = $path_to_file.$file_name;       if (file_exists($path_to_file.$file_name))          $location .= ".new";       copy($file,$location);       unlink($file);       $content .= "Uploaded File: ".$location."\n";    } }

          // second file. if ($file2_name) {    if ($file_size > 0) {       if (!ereg("/$", $path_to_file))          $path_to_file = $path_to_file."/";       $location = $path_to_file.$file2_name;       if (file_exists($path_to_file.$file2_name))          $location .= ".new";       copy($file2,$location);       unlink($file2);       $content .= "Uploaded File: ".$location."\n";    } }

          // if the env_report option is on: get eviromental variables if ($env_report) {    $env_report = ereg_replace( " +", "", $env_report);    $env_reports = split(",",$env_report);    $content .= "\n------ eviromental variables ------\n";    for ($i=0;$i<count($env_reports);$i++) {       $string = trim($env_reports[$i]);       if ($env_reports[$i] == "REMOTE_HOST")          $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";       else if ($env_reports[$i] == "REMOTE_USER")          $content .= "REMOTE USER: ". $REMOTE_USER."\n";       else if ($env_reports[$i] == "REMOTE_ADDR")          $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";       else if ($env_reports[$i] == "HTTP_USER_AGENT")          $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";    } }

          // if the subject option is not set: set the default if (!$subject)    $subject = "Form submission";

          // send it off mail_it(stripslashes($content), stripslashes($subject), $email, $recipient);

          // if the redirect option is set: redirect them if ($redirect) {    header ("Location: $redirect");    exit; } else {    print "Danke für deinen Eintrag\n";    echo "<br><br>\n";    echo "<small>This form is powered by <a href="http://www.lumbroso.com/scripts/">Jack's Formmail.php $version!</a></small>\n\n";    exit; }

          // <----------    THE END    ----------> //


          1. _\.0-9a-z- ↩︎

          2. _.0-9a-z- ↩︎

          3. 0-9 ↩︎

          4. a-zA-Z ↩︎

          5. 0-9 ↩︎

          1. Hallo,

            [...]

            Hmmm - sieht auch in Ordnung aus. Probier mal folgendes: ersetzte mal formmailer.php durch folgende Datei:

            <?php

            echo "<pre>\n";
            var_dump ($HTTP_POST_VARS);
            echo "</pre>\n";

            ?>

            Dann siehst Du, welche Daten beim Script ankommen ...

            Grüße,

            Christian

            1. Also hab mal nachgeschaut
              Bei dieser Abfrage nach den Sachen die reinkommen, hab ich
              "array(0) zurückbekommen.
              Das sollte wohl soviel heißen wie nix!

              Hab jetzt auf beiden Servern das phpinfo hochgeladen.

              http://www.tckirrberg.de/formmailer/phpinfo.php   ... hier funktionierts nicht
              http://www.herrzeller.de/phpinfo.php    ... hier funktioniert das Skript

              Das einzige was mir daran Spontan an Unterschieden aufgefallen ist, ist die Tatsache, dass auf dem Server wo es nicht funktioniert die PHP-Version höher ist als auf dem anderen.
              Gut da sind natürlich noch andere Unterschiede, aber des sagt mir alles nix.

              Gruß
              Redflash

              1. Hallo,

                Also hab mal nachgeschaut
                Bei dieser Abfrage nach den Sachen die reinkommen, hab ich
                "array(0) zurückbekommen.
                Das sollte wohl soviel heißen wie nix!

                Genau, das heißt "Nix, nada, null, gar nix" -- das Script bekommt keine Daten. Probier's mal, indem Du statt $HTTP_POST_VARS (in der Mini-Test-Datei) $_POST verwendest.

                Hab jetzt auf beiden Servern das phpinfo hochgeladen.

                http://www.tckirrberg.de/formmailer/phpinfo.php   ... hier funktionierts nicht
                http://www.herrzeller.de/phpinfo.php    ... hier funktioniert das Skript

                Hmmm - die typischen Kandidaten register_globals und variables_order sind's nicht ...

                Das einzige was mir daran Spontan an Unterschieden aufgefallen ist, ist die Tatsache, dass auf dem Server wo es nicht funktioniert die PHP-Version höher ist als auf dem anderen.

                Du meinst wohl umgekehrt (bei "hier funktionierts nicht" ist die PHP-Version 4.1.2, bei "hier funktionierts" ist sie 4.2.1).

                Vielleicht sind auf dem Server, wo es nicht läuft, POST-Requests abgeschaltet. Es gab mal eine PHP-Sicherheitslücke bei der Behandlung von POST-Daten und der einzige Workaround außer einem Upgrade war die Deaktivierung von POST auf dem ganzen Server ...

                Ich empfehle sowieso, auf 4.2.3 aufzurüsten, da da alle in letzter Zeit bekannten Sicherheitslücken geschlossen sind.

                Grüße,

                Christian

        2. Hallo,

          ...

          die HTML-File ist zwar nicht die sauberste, aber in der Richtunng scheint alles in Ordnung zu sein. Inhalt von formmailer.php? Einstellungen der INI-Datei (register_globals, variables_order - kann man mit phpinfo() herausbekommen)?

          Grüße,

          Christian