Scripts
Som Captcha
Omdat de plaatjes niet handig zijn, en soms zelfs niet te lezen. En niet te lezen zijn voor mensen die text-only browsen heb ik zelf een Captcha script geschreven. Misschien is het zo te kraken voor spambots, daar heb ik geen verstand van, en daar hou ik me nog maar vanaf. Maar het houd iig wel een stuk tegen! Heb niet erg veel commentaar geplaatst, maar ik geloof dat het wel redelijk voor zich zelf spreekt. Vergeet niet boven aan je pagina session_start() toe te voegen ;-)
som-captcha
[code]
<?
class SomCaptcha {
function maakSom() {
# de getallen en operator maken
$getallen = array("nul", "één", "twee", "drie", "vier", "vijf", "zes", "zeven", "acht", "negen");
$plusmin = array("plus", "min");
$getal1 = rand(1, 9);
$getal2 = rand(1, $getal1-1);
$plusofmin = rand(0, 1);
# de som maken
$plusmin = $plusmin[$plusofmin];
$goedantwoord = ($plusofmin == 0 ? $getal1 + $getal2 : $getal1 - $getal2);
# getallen voluit geschreven
$getal1 = $getallen[$getal1];
$getal2 = $getallen[$getal2];
# alles samen gooien in array en plaatsten in een sessie
$som = array("getal1" => $getal1, "plusofmin" => $plusmin, "getal2" => $getal2,"goedantwoord" => $goedantwoord);
$_SESSION = $som;
}
function haalAntwoord() {
return $_SESSION['goedantwoord'];
}
function schrijfSom() {
return $_SESSION['getal1'] . " " . $_SESSION['plusofmin'] . " " . $_SESSION['getal2'];
}
function checkAntwoord($invoer) {
if(empty($invoer)) return false;
if(!is_numeric($invoer)) return false;
if($invoer == $this->haalAntwoord())
return true;
else
return false;
}
}
?>[/code]
En zo kan het gebruikt worden:
[code]
<?
if($_SERVER['REQUEST_METHOD'] == "POST") {
echo '<p>je hebt ingevoerd: <strong>' . $_POST['antwoord'] . '</strong>, en het goede antwoord is: <strong>' . $_SESSION['goedantwoord'] . '</strong>.</p>';
echo '<p>Het antwoord dat je hebt invoed is: <strong>' . ($captcha->checkAntwoord($_POST['antwoord']) ? "GOED" : "FOUT") . '</strong></p>';
} else {
$captcha->maakSom(); #maakt de Som en gelijk de sessie
echo "<p>de uitkomst van <strong>" . $captcha->schrijfSom() . "</strong> is:</p>";
echo '
<form method="post" action="">
<input type="text" name="antwoord" />
<input type="submit" value="verstuur" /> (antwoord numeriek invoeren)
</form>';
}[/code]
?>
[/code]
Reacties
0