Cum spam-ul e mai pretutindeni, iar amenintarile din partea unor scripturi cresc intr-un ritm alarmant, un script captcha e un must la orice forma de comentarii, de inregistrare etc.Chiar daca nu ofera o protectie completa, un astfel de script te poate apara impotriva majoritatii scripturilor care vor sa creeze conturi false doar cu scop publicitar.
Videotutorialul de mai jos te va ajuta sa intelegi cum poti crea un captcha simplu utilizand doar PHP si putin HTML.Ideea scriptului este una simpla:
- Prima data se creeaza o imagine si un string(in cazul nostru un string numeric)
- Stringul trebuie sa ia o valoare aleatorie de fiecare data cand userul reimprospateaza pagina
- Valoarea stringului este transmisa printr-o sesiune intr-o alta fila php
- In fila respectiva se va verifica daca valoarea introdusa de user este identica cu cea din script
Iar pentru cei mai nerabdatori mai jos puteti vedea cele 2 file PHP, captcha.php, respectiv simple.php.In captcha cream imaginea, iar in simple se afla forma ce contine campul pentru a introduce codul din imagine.
Captcha.php
session_start();
//Cream imaginea
$im=imagecreatetruecolor(70, 20);
//Culoarea de fundal a imaginii
$bg=imagecolorallocate($im, 0, 0, 255);
imagefill($im, 0, 0, $bg);
//Culoarea la string
$text_color=imagecolorallocate($im, 255, 255, 255);
//O valoare aleatorie pe care trebuie sa o introduca userul
$rand=rand(10000, 50000);
imagestring($im, 5, 2, 2, $rand, $text_color);
//Specificam browser-ului ca este vorba de o imagine
header('Content-type:image/jpeg');
//Cream imaginea ca jpeg pentru a o vizualiza
imagejpeg($im);
//Cream o sesiune ce memoreaza valoarea din $rand
$_SESSION['check']=$rand;
?>
Iar acum simple.php
<form action="simple.php" method="POST">
<img src="captcha.php" alt=""/><br/>
<input type="text" name="check" required/>
<input type="submit" name="submit" value="Verifica"/>
</form>
<?php
if(isset($_POST['submit'])) {
$check=$_POST['check'];
//Verificam daca codul introdus de user este cel corect
if($check==$_SESSION['check']) {
echo "Cod introdus corect!";
$status=TRUE;
}
else echo "Cod INCORECT!";
if(isset($status)) {
//Continua cu restul scriptul
}
}
?>








