Captcha Tutorial - Captcha-Klasse
Autor
Flitze
Klicks 72040
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 72040
Rating für Captcha Tutorial
6.4 von 10
Bewertungen41
Stand
20.06.2010
6.4 von 10
Bewertungen41
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
Breadcrumb:
Tutorials » Captcha Tutorial » Captcha Tutorial - Captcha-Klasse
1. Die Captcha-Klasse
[ADSENSE_LINE]Zunächst erstelle ich eine Klasse für unser CaptchaPHP:
<?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