Affenformular

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Affenformular

    hallo allseits,

    ich habe ein problem mit meinem anfrageformular auf meiner website.
    das formular kann leer versendet werden. ich möchte aber, dass einige felder pflichtfelder sind (z.b. das e-mail und namensfeld). ich habe schon herausgefunden, dass ich da ein php affenformular erstellen muss. nach meinen bisherigen recherchen zu dieser thematik bin ich immer noch nicht schlauer und weiß nicht, wie ich das auf mein formular anwenden kann.



    kann mir jemand helfen?

    hier mal mein formular: http://www.justamood.de/anfragen.htm
    und die bisherige formmailer.php datei:

    ------------------------------------------------------------------------------------------------
    <?php
    $strEmpfaenger = 'reineckefuchs@gmx.de';
    $strFrom = '"Formmailer" <IhrAndererName@provider.xy>';
    $strSubject = 'Anfrageformular';
    $strReturnhtml = 'mail_feedback.htm';
    $strDelimiter = ":\t";


    if($_POST)
    {
    $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";
    }
    }

    if(get_magic_quotes_gpc())
    {
    $strMailtext = stripslashes($strMailtext);
    }

    mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
    or die("Die Mail konnte nicht versendet werden.");
    header("Location: $strReturnhtml");
    exit;
    }

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    <head>
    <title>Einfacher PHP-Formmailer</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    <h1>Beispielformular</h1>
    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

    <dl>
    <dt>Anrede:</dt>
    <dd><input type="radio" name="anrede" value="Frau" />Frau <input type="radio" name="anrede" value="Mann"/>Mann</dd>

    <dt>Name:</dt><dd><input type="text" name="name" /></dd>
    <dt>Firma:</dt><dd><input type="text" name="firma" /></dd>
    <dt>E-Mail:</dt><dd><input type="text" name="e-mail" /></dd>
    </dl>
    <p>

    <input type="submit" value="Senden" />
    <input type="reset" value="Zurücksetzen" />
    </p>
    </form>
    </body>
    </html>

  • #2
    Ich weiß zwar nicht, was ein Affenformular ist...

    *Google*

    Aha!

    In einem zweiten Schritt wird man aus diesem Formular ein sogenanntes Affenformular machen, indem man dafür sorgt, dass das Formular sich selbst aufruft und seine alten Werte immer wieder einsetzt. Es heißt Affenformular, weil eine Million Affen dieses Formular eine Million mal aufrufen können, ohne etwas zu bewirken.
    Also. Folgender Code ersetzt die Zeilen zwischen einschließlich "mail(..." bis "exit":

    Vor dem Versenden der Mail prüfst Du, ob deine Pflichtfelder einen Wert besitzen:

    PHP-Code:
    $valid true;
    if (
    strlen(trim($_POST["email"])) < 1// Wenn keine Mailadresse angegeben....
     
    $valid false;
    if (
    strlen(trim($_POST["name"])) < 1// Wenn kein Name angegeben...
      
    $valid false;


    // Wenn $valid immer noch true ist, wurden die Pflichtfelder ausgefüllt und wir versenden die Mail:

    if ($valid)
     { 
    mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
      or die(
    "Die Mail konnte nicht versendet werden.");
    header("Location: $strReturnhtml");
    exit;
     }
    // ansonsten senden wir die Mail nicht ab und leiten nicht zur 
    // "Dankeschön"-Seite weiter, sondern definieren eine
    // Fehlermeldung, die im Formular ausgegeben wird:

    else
     {
      
    $message "Bitte füllen Sie die Pflichtfelder aus!";
     } 
    Für die eventuelle Ausgabe der Fehlermeldung platzierst Du folgenden Schnipsel irgendwo im HTML-Code:

    PHP-Code:
    <?
     if ($message)
      {
        echo "<font style='color:red'>$message</font>";
      } 
     
    ?>
    Alles ungetestet, sollte aber gehen.

    Kommentar


    • #3
      http://www.php-resource.de/forum/sea...der=descending

      Kommentar


      • #4
        vielen dank. ich probier das mal.

        Kommentar


        • #5
          hallo pekka,

          wenn ich das so mache, wie du es beschrieben hast, erscheint nach absenden des formulars eine leere seite anstatt der dankes-seite (bzw. "mail_feedback.htm"). ...und der formularinhalt wird auch nicht zu meiner e-mail-adresse gesendet.

          so sieht die geänderte formmailer.php datei aus:

          PHP-Code:
          <?php

          $strEmpfaenger 
          'reineckefuchs@gmx.de';
          $strFrom       '"Justamood.de" <IhrAndererName@provider.xy>';
          $strSubject    'Anfrageformular';
          $strReturnhtml 'mail_feedback.htm';
          $strDelimiter  ":\t";


          if(
          $_POST)
          {
          $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";}}

          if(
          get_magic_quotes_gpc())
          {
          $strMailtext stripslashes($strMailtext);}

          $valid true;
          if (
          strlen(trim($_POST["email"])) < 1// Wenn keine Mailadresse angegeben....
           
          $valid false;
          if (
          strlen(trim($_POST["name"])) < 1// Wenn kein Name angegeben...
            
          $valid false;


          // Wenn $valid immer noch true ist, wurden die Pflichtfelder ausgefüllt und wir versenden die Mail:

          if ($valid)
           { 
          mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
            or die(
          "Die Mail konnte nicht versendet werden.");
          header("Location: $strReturnhtml");
          exit;
           }
          // ansonsten senden wir die Mail nicht ab und leiten nicht zur 
          // "Dankeschön"-Seite weiter, sondern definieren eine
          // Fehlermeldung, die im Formular ausgegeben wird:

          else
           {
            
          $message "Bitte füllen Sie die Pflichtfelder aus!";
           }
          exit;}

          ?>
          den html-code der formularseite habe ich auch erweitert, wie du es vorgeschlagen hast.

          hätte ich in der php datei noch etwas ergänzen müssen und habe ich fehler in der html datei? leider verstehe ich das php-script ab der ersten if abfrage nicht richtig, da ich zu wenig hintergrundwissen habe.

          Kommentar


          • #6
            Das exit nach $message = ... raus! So wie es ist, ist klar, daß das danach folgende Formular nicht mehr angezeigt wird.

            Kommentar


            • #7
              nun kommt die anzeige "Bitte füllen Sie die Pflichtfelder * aus!"
              irgendwas scheint in dem script immer noch nicht zu funktionieren. undzwar wird das formular, trotz ausgefüllter pflichtfelder (name, firma, e-mail), nicht versendet.

              auch komisch ist, dass wenn man die formularfelder ausfüllt, (ohne bereits den submitt-button gedrückt zu haben) zwischendurch fehlermeldungen kommen.

              "the following error occured, firma is requirred, e-mail is requirred)"

              Kommentar

              Lädt...
              X