Script PHP anti spam (captcha)

Dezvoltatorii de pagini web sigur au auzit de captcha, probabil cea mai buna solutie anti spam la momentul asta. Anti spam la ce? La rubricile de contact, postarea comentariilor si oriunde se folosesc campuri ce trebuiesc completate si informatia va fi inregistrata in baza de date. Am vazut pe mai multe site-uri o alternativa la acest captcha (o poza in care sunt afisate random 5 litere aleatorii), este vorba de un script care te pune sa faci un calcul si sa treci rezultatul intr-un camp.

Scriptul este alcatuit din 2 fisiere, usor de modificat, eu doar va dau o idee cum functioneaza.

fisierul form

<?php
// variabila cu "calcule" :)
$calcul = array('9 + 4 = 13', 
				'10 - 1 = 9', 
				'3 * 4 = 12', 
				'14 + 10 = 24', 
				'5 + 5 = 10', 
				'8 * 8 = 64', 
				'100 - 25 = 75', 
				'20 : 2 = 10');

// extragem random o valoare din variabila de mai sus
$calcul_random = array_rand($calcul);

// extragem rezultatul din valoarea random
$calcul_explode = explode('=', $calcul[$calcul_random]);
$calcul_explode['1'] = str_replace(' ', '', $calcul_explode['1']);
?>
<html>
<head>
	<title>Calcul pentru verificare (anti spam)</title>
	<style type="text/css">
	body {
		background: #F0F0F0;
		color: #000000;
		margin: 1px;
		padding: 1px;
		font: 11px verdana,tahoma,arial,sans-serif;
	}

	input {
		border: 1px solid #CCCCCC;
		background: #F0F0EE;
	}

	div#calculator {
		background: #ccc;
		background-repeat: repeat-x;
		width: 300px;
		margin: 0px auto;
		padding: 2px;
		font: 11px verdana,tahoma,arial,sans-serif; 
		border-right: 2px solid #990000;
		border-top: 2px solid #990000;
	}

	div#calculator p {
		margin-left: 10px;
	}

	a:link {
		color: #0064A6; 
		text-decoration: none; 
	}
	</style>
</head>
<body>
<div id="calculator">
	<p>Calcul pentru verificare (anti spam)</p>
	<form name="form" method="post" action="form_verify">
	<p><input type="text" name="calcul" maxlength="5"> <small>Cat face ?</small></p>
	<p><input type="hidden" name="rezultat" value=""></p>
	<p><input type="submit" name="submit" value=" Verifica >> "></p>
	</form>
</div>
</body>
</html>

fisier form_verify

<?php
// extragem valoarea din campul rezultat si rezultatul calculului
$calcul = $_POST['calcul'];
$rezultat = $_POST['rezultat'];

// verificam daca butonul submit a fost apasat, daca valorea introdusa in camp e de tip numeric si apoi daca valoarea scris in camp este egala cu rezultatul corect
if (isset($_POST['submit']) && is_numeric($rezultat) && $calcul == $rezultat)
{
	// daca a calculat corect afisam un mesaj
	echo 'Verificare efectuata cu succes! Apasa aici si reincearca!';
}
else
{
	// daca a gresit calculul afisam mesaj
	die('Nu ai calculat corect, mai incearca');
}

Stiu, este un script foarte banal, dar pentru o idee este oke 😉

One thought on “Script PHP anti spam (captcha)”

Leave a Reply

Your email address will not be published. Required fields are marked *