Tutorials
Autor
Flitze
Klicks 15253
Bewertungen 23
Rating 7.1
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
Klicks 15253
Bewertungen 23
Rating 7.1
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
Captcha Tutorial
Seite : 1 2 3 4 5 Bewerten4. Einbindung des Captchas
$_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

