Stuff » Codeschnipsel » PHP » Rechen-Captcha
Beschreibung:
Ein einfaches Captcha, das Additions- und Subtraktionsaufgaben generiert. Es kann beispielsweise als PHP-Datei gespeichert und dann eingebunden werden. Die Verarbeitung wird hier nicht erläutert.Code:
<?php
session_start();
unset($_SESSION["rechen_captcha_spam"]);
$zahl1 = rand(10,20); // First number, 10-20
$zahl2 = rand(1,10); // Second number, 1-10
// note: the second number is lower than the first one to prevent negative values as results
$operator = rand(1,2); // + or -
if($operator == "1"){
$operatorzeichen = " + ";
$ergebnis = $zahl1 + $zahl2;
}else{
$operatorzeichen = " - ";
$ergebnis = $zahl1 - $zahl2;
}
function encrypt($string, $key) {
$result = "";
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$_SESSION["rechen_captcha_spam"] =
encrypt($ergebnis, "7o2r9jf6z5kd9g5g21"); //Key
$_SESSION["rechen_captcha_spam"] =
str_replace("=", "", $_SESSION["rechen_captcha_spam"]);
$rechnung = $zahl1.$operatorzeichen.$zahl2." = ?";
$img = imagecreatetruecolor(80,15);
$schriftfarbe = imagecolorallocate($img,13,28,91);
$hintergrund = imagecolorallocate($img,239,239,239);
imagefill($img,0,0,$hintergrund);
imagestring($img, 3, 2, 0, $rechnung, $schriftfarbe);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>