[PHP] Captcha Code in PHP Formular

Dieses Thema im Forum "Webentwicklung" wurde erstellt von HardStyler, 29. Januar 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. Januar 2011
    Captcha Code in PHP Formular

    Hallo, Ich hätte eine Frage. Ich erstelle derzeit ein Kontaktformular für eine Website. Da ich, zugegebenermaße nicht der PHP Profi bin, habe ich ein fertiges Formular von Selfhtml verwendet.

    Ich habe dann noch eine Abfrage eingebaut ob alle Felder ausgefüllt sind. Als das ganze dann online war, bekam ich auch schon die ersten Spammails. Um dem entgegenzuwirken habe ich mich mal nach einem "Captchacode" umgeschaut, mit dem ich das Ganze ergänzen kann.

    Gefunden habe ich schließlich das hier:
    Captcha Tutorial

    Das einbinden der Zeilen soll wohl total einfach sein. Ich habe alle eingebunden und wenn ich dann die Seite aufrufe, wird sofort ein error zurückgegeben, das der code falsch eingegeben wurde. Dies lässt mich darauf schließen das ich alles falsch eingebunden habe

    Vllt kann mir jemand helfen::
    ____________________________________

    Ich muss also folgendes in meine formulardatei einfügen

    PHP:
    <? php
    session_start
    ();
    if(isset(
    $_SESSION [ 'captcha_spam' ]) AND  $_POST [ "sicherheitscode" ] ==  $_SESSION [ 'captcha_spam' ]){
    unset(
    $_SESSION [ 'captcha_spam' ]);

    //
    //
    //Hier kommt das ursprüngliche Script hin.
    //
    //

    }
    ?> 
    sowie das hier wenn ich einen fehler zurückgeben will.

    PHP:
    }else{
       die (
    "Der Sicherheitscode ist falsch!" );
    Meine gesamten PHP Zeilen sehen jetzt wie folgt aus. Stimmt das so ?

    Spoiler
    PHP:
    <? php

    session_start
    ();
    if(isset(
    $_SESSION [ 'captcha_spam' ]) AND  $_POST [ "sicherheitscode" ] ==  $_SESSION [ 'captcha_spam' ]){
    unset(
    $_SESSION [ 'captcha_spam' ]); 

    ### Konfiguration ###

    # An welche Adresse sollen die Mails gesendet werden?
    $strEmpfaenger  'mail@mail.de' ;

    # Welche Adresse soll als Absender angegeben werden?
    $strFrom        '"Anfrage" <mail@mail.de>' ;

    # Welchen Betreff sollen die Mails erhalten?
    $strSubject     'Anfrage' ;

    # Zu welcher Seite soll weitergeleitet werden?
    $strReturnhtml  'http://www.test.com' ;

    # Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
    $strDelimiter   ":\t" ;

    ### Ende Konfiguration ###
    //time();
    if( $_POST )
    {
     
    $strMailtext  "" ;
     
    $strMailtext  .=  "Danke für ihre Anfrage"  "\n" ;
     
        if(
    $_POST [ 'Name' ] &&  $_POST [ 'E-Mail' ] &&  $_POST [ 'Bemerkungen' ])
     {
      
    $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(
    'Es wurden nicht alle Formularfelder ausgefuellt' );
     
     
    $strMailtext .= "Deine Registrynummer lautet: "  time ();
     
    $strMailtext .= "\n" ;
     
     
    $empfaenger =array( "test" => $strEmpfaenger ,

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

     foreach(
    $empfaenger  as  $key  => $value ){
         
    mail ( $value $strSubject $strMailtext "From: " . $strFrom ) or die( "Mail erfolgreich versendet" );
     }
    }else{
       die (
    "Der Sicherheitscode ist falsch!" );

     
     
    header ( "Location:  $strReturnhtml " );
     exit;
    }
    }
    ?>

    html mäßig muss nur folgendes eingefügt werden:

    HTML:
    <img src="captcha/captcha.php" border="0" title="Sicherheitscode">
    <input type="text" name="sicherheitscode" size="5">
    mein html formular sie so aus
    Spoiler
    HTML:
     <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
     
     <!-- Formularangaben -->
     <br />
     *Pflichtfelder
     <br />
     <br />
     <dl>
     <dt></dt>
     Name*:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     <input name="Name" type="text" size="40" /></dd>
     <br>
     <br>
     <dt></dt>
     E-Mail*:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     <input name="E-Mail" type="text" size="40" /></dd>
     <br>
     <br>
     <dt></dt>
     Straße:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="Straße" type="text" size="40" /></dd>
     <br>
     <br>
     <dt></dt>
     PLZ, Ort:&nbsp;&nbsp;&nbsp;&nbsp;
     <input name="PLZ, Ort" type="text" size="40" /></dd>
     <br>
     <br>
     
     <dt>Anfrage*:</dt>
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     <textarea name="Bemerkungen" rows="5" cols="40">Anfrage</textarea>
     </dd>
     </dl>
     <!-- Absenden & Zurücksetzen -->
     <p>
     <br />
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Senden" />
     <input type="reset" value="Zurücksetzen" />
     </p>
    
    <img src="captcha/captcha.php" border="0" title="Sicherheitscode">
    <input type="text" name="sicherheitscode" size="5">
     </form>

    Ansonsten habe ich alle nötigen Daten in das Rootverzechnis geladen und es wird alles richtig angezeigt. Vllt. kann mir jemand sagen wie ich die zeilen richtig einbinde.

    Bite lasst euch nicht von denn vielen Zeilen abschrecken, aber ich wollte es direkt ausführlich machen, damit nicht soviele Fragen kommen.

    Ich hoffe ihr könnt mir weiterhelfen
     
  2. 30. Januar 2011
    AW: Captcha Code in PHP Formular

    aus versehen bedankt. Trotz deinem ganzen Code: Was für ein Error kommt denn?

    mfg
     
  3. 30. Januar 2011
    AW: Captcha Code in PHP Formular

    Steht doch in seinem erstene Post.. Er bekommt den Error, dass ein eingegebener Text nicht mit dem Captcha-Bild übereinstimmt..

    Schonmal versucht dir $_SESSION['captcha_spam'] irgendwo nach dem generieren des Captcha's ausgeben zu lassen?
    Dann siehst du, ob er überhaupt das richtige in $_SESSION['captcha_spam'] schreibt..
    Also ob der Code im Bild mit dem Inhalt der Variable übereinstimmt!

    MfG
     
  4. 7. Februar 2011
    AW: Captcha Code in PHP Formular

    Ja dann erscheint bei mir ein Fehler in eine der Zeilen - Also für mich ein Zeichen das das da nix zu suchen hat.

    Ich mein eigentlich sollte alles klappen, ist ja ein recht einfaches Script, ich weiß nur nicht wie ich die Captcha Zeilen einbinden muss.

    Kenn jemand vllt. noch eine Antispamlösung für ein Formular ?
     
  5. 7. Februar 2011
    AW: Captcha Code in PHP Formular

    hey, es gibt bereits fertige lösungen die du verwenden kannst.

    The Official CAPTCHA Site
    dort gibt man dir eine einfache api zur hand. in 5min sollte das teil bei dir laufen.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.