PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt3
Heute120
Gestern296
Gesamt2370008

Captcha Tutorial - Einbindung

Autor Flitze
Klicks 71675
Rating für Captcha Tutorial
  6.4 von 10
Bewertungen41
Stand 20.06.2010
Keywords:
Captchas mit PHP erstellen, Captcha Spamschutz, Captcha Tutorial Image-Funktionen, PHP Captcha-Klasse, Captchas einbinden, Turorial intelligente Captchas, Captcha Beispiel, Einbindung, Implementierung, Nutzen auf der Webseite

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tutorials » Captcha Tutorial » Captcha Tutorial - Einbindung
Seite : 1 2 3 4 5 Bewerten
Article Wizard - deutscher Article Spinner

4. Einbindung des Captchas

[ADSENSE_LINE]Sinnvollerweise muss beim Erzeugen des Formulars ein Wert erzeugt werden, der dann in die Grafik geschrieben wird und auch nach dem Absenden des Formulars noch verfügbar ist. Schließlich müssen wird die Benutzereingabe mit diesem Wert vergleichen. Um diesen Wert zu übergeben gibt es mehrere Möglichkeiten - übergeben per $_GET oder $_POST, Speichern in einer Session, Setzen eines Cookies oder Speichern in einer Datenbank.

$_GET und $_POST würde ich nicht empfehlen, da der Wert dann irgendwo im Quelltext steht und der Bot unser Captcha einfach umgehen kann.

Von den anderen 3 Möglichkeiten würde ich keine favorisieren, benutze aber selbst die Session Methode, da sie meiner Meinung nach am einfachsten zu implementieren ist. Bei den Cookies muss auf wegen des Headers aufgepasst werden und ein Eintrag in eine Datenbank + dessen auslesen erfordert mehr Code als das einfache Speichern in einer Session.

Hier mal ein Beispielformular:

PHP:
<?php
    error_reporting
(E_ALL);
    
session_start();
    
// Werte initialisieren
    
if(!isset($_SESSION['Name']))
        
$_SESSION['Name']=isset($_POST['Name'])?$_POST['Name']:'';
    if(!isset(
$_SESSION['Email']))
        
$_SESSION['Email']=isset($_POST['Email'])?$_POST['Email']:'';
    if(!isset(
$_SESSION['Captcha']))
        
$_SESSION['Captcha']=rand(5,15);

    if(isset(
$_POST['submit']) AND $_POST['submit'] == 'Testen'){
         
$errors = array();
        if(!isset(
$_SESSION['Name'], $_SESSION['Email'], $_SESSION['Captcha'], $_POST['Captcha']))
             
$errors[] = "Nicht alle Werte vorhanden!";
         else{
             if(
$_SESSION['Captcha'] != $_POST['Captcha'])
                     
$errors[] = "Falscher Sicherheitscode!";
         }
         if(
count($errors)){
             echo 
"Folgende Fehler traten auf: <br />\n";
                 foreach(
$errors as $error)
                     echo 
$error."\n<br />\n";
         }
         else{
             echo 
"Richtiger Code!<br />\n";
                 echo 
"Daten:<br />\n";
                 echo 
"<br />\n";
                 echo 
"Name -> ".$_SESSION['Name']."<br />\n";
                 echo 
"Email -> ".$_SESSION['Email']."<br />\n";
                 echo 
"Captcha -> ".$_SESSION['Captcha']."<br />\n";
             echo 
"<br />\n";
                 
// Daten löschen
                 
unset($_SESSION['Name']);
                 unset(
$_SESSION['Email']);
                 unset(
$_SESSION['Captcha']);
         }
    }
    else{
        echo 
"<form ".
              
" action = formular.php".
              
" method = post>";
         echo 
"Name:".
              
"<input type=\"text\" name=\"Name\" value=\"".$_SESSION['Name']."\" />\n";
         echo 
"Email:".
              
"<input type=\"text\" name=\"Email\" value=\"".$_SESSION['Email']."\" />\n";
         echo 
"Sicherheitscode:".
              
"<img src=\"captcha.php\" />\n".
              
"<input type=\"text\" name=\"Captcha\" />\n";
         echo 
"<input type=\"submit\" name=\"submit\" value=\"Testen\" />\n";
         echo 
"</form>\n";
    }
?>


Wie man sieht binde ich das Captcha über

PHP:
<?php
    
echo "Sicherheitscode:".
         
"<img src=\"captcha.php\" />\n".
         
"<input type=\"text\" name=\"Captcha\" />\n";
?>


ein. Deshalb muss ich meine Captcha-Klasse in der Datei captcha.php speichern. Da ich auf einen in einer Session gespeicherten Wert zugreife, muss ich auch in captcha.php eine Session starten.

PHP:
<?php
    error_reporting
(E_ALL);
    
session_start(); 

    class 
Captcha {
        
// siehe oben
    
}

    
$Sign = new Captcha(200,100);
    
$Sign->setBGColor(231,231,231);
    for(
$i=0$i<5$i++){
        
$r rand(0,255);
        
$g rand(0,255);
        
$b rand(0,255);
        
$Sign->setElementAttributes($r,$g,$b,1,5);
        
$Sign->createLines();
    }
    for(
$i=0$i<3$i++){
        
$r rand(0,255);
        
$g rand(0,255);
        
$b rand(0,255);
        
$Sign->setElementAttributes($r,$g,$b,1,rand(10,30));
        
$Sign->createCircles();
    }
    for(
$i=0$i<3$i++){
        
$r rand(0,255);
        
$g rand(0,255);
        
$b rand(0,255);
        
$Sign->setElementAttributes($r,$g,$b,1,rand(10,30));
        
$Sign->createStars();
    }
    for(
$i=0$i<3$i++){
        
$r rand(0,255);
        
$g rand(0,255);
        
$b rand(0,255);
        
$Sign->setElementAttributes($r,$g,$b,1,rand(10,30));
        
$Sign->createRectangles();
    }
    for(
$i=0$i<3$i++){
        
$r rand(0,255);
        
$g rand(0,255);
        
$b rand(0,255);
        
$Sign->setElementAttributes($r,$g,$b,1,rand(10,30));
        
$Sign->createTriangle();
    }
    
$Sign->setFontColor(30,30,30);
    
$Sign->createText(rand(100000,999999));
    
$Sign->setFontColor(0,0,0);
    
// Rechenaufgabe mit dem Wert aus der Session erzeugen
    
$Sign->createArithmetic($_SESSION['Captcha']);
    
$Sign->createCaptcha();
?>


So das wär’s :)

Zurück zur vorigen Seite:
Captcha Tutorial - Störelemente
Bewerten

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024