Tutorials
Autor
Flitze
Klicks 14420
Bewertungen 22
Rating 7
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, Captcha-Klasse, PHP, Captcha
Klicks 14420
Bewertungen 22
Rating 7
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, Captcha-Klasse, PHP, Captcha
Captcha Tutorial
Seite : 1 2 3 4 5 Bewerten1. Die Captcha-Klasse
PHP:
<?php
class Captcha {
var $width; // Breite des Captchas
var $height; // Höhe des Captchas
var $bild; // Die mit PHP erzeugte Grafik
var $bgcolor; // Hintergrundfarbe
var $errors = array(); // Fehlerarray
// Konstruktor, erstellt die "Grundgrafik"
function Captcha ($width, $height){
if(!is_Int($width) OR !is_Int($height))
die("Breite oder Höhe des Captchas nicht angegeben!");
$this->width = $width;
$this->height = $height;
$this->bild = imagecreate($width,$height);
}
// Kontrollfunktion zur Prüfung von Farbwerten
function checkColorValue($r,$g,$b){
if(!is_Int($r) OR $r<0 OR $r >255)
return false;
if(!is_Int($g) OR $g<0 OR $g >255)
return false;
if(!is_Int($b) OR $b<0 OR $b >255)
return false;
return true;
}
// setzt die Hintergrundfarbe der Grafik
function setBGColor ($r, $g, $b){
if(!$this->checkColorValue($r,$g,$b)){
$this->errors[] = "Falscher Farbwert (Hintergrundfarbe)!";
return false;
}
$this->bgcolor = imagecolorallocate($this->bild,(int)$r,(int)$g,(int)$b);
}
// Gibt die Grafik auf dem Bildschirm aus
function createCaptcha (){
// Prüfung des Fehlerarrays
if(count($this->errors)){
foreach($this->errors as $error)
echo $error."<br>\n";
return false;
}
// Mime-Type im Header definieren
header("Content-Type: image/gif");
// Grafik ausgeben
imageGIF($this->bild);
// Grafik aus dem Speicher löschen
imagedestroy($this->bild);
}
}
?>
Mit dieser Klasse können wir bisher ein "leeres" GIF erzeugen, dem wir eine Hintergrundfarbe zuweisen können. Für die Hintergrundfarbe rot sieht das so aus:
PHP:
<?php
$myCaptcha = new Captcha(200,100);
$myCaptcha->setBGColor(255,0,0);
$myCaptcha->createCaptcha();
?>
Um ungültige Eingabe abzufangen und so PHP-Fehler zu verhindern, habe ich das Fehlerarray $errors angelegt, in das ich eventuelle Fehler speichere. Um Fehler zu erkennen, habe ich z.B. die Kontrollfunktion checkColorValue() angelegt. Diese Funktion überprüft die ihr übergebenen Farbwerte daraufhin, ob sie als Integer definiert sind und im Bereich 0-255 liegen.
Somit werden z.B. diese fehlerhaften Werte erkannt
PHP:
<?php
$myCaptcha = new Captcha(200,100);
$myCaptcha->setBGColor(255,'a',0);
$myCaptcha->createCaptcha();
// oder
$myCaptcha = new Captcha(200,100);
$myCaptcha->setBGColor(255,300,0);
$myCaptcha->createCaptcha();
// oder
$myCaptcha = new Captcha(200,100);
$myCaptcha->setBGColor(255,0,-5);
$myCaptcha->createCaptcha();
// oder
$myCaptcha = new Captcha(200,100);
$myCaptcha->setBGColor(5.5,0,0);
$myCaptcha->createCaptcha();
?>
und es wird Falscher Farbwert (Hintergrundfarbe)! ausgegeben.
Zurück zur vorigen Seite:
Captcha Tutorial Weiter zur nächsten Seite:
Captcha Tutorial - Logische Abfragen

