Защищаемся от СПАМа при помощи CAPTCHA.
CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) – тест для защиты от программ-роботов. Последнее время очень часто используются защитные CAPTCHA (каптчи) для регистрации или отправки сообщений. В ходе этого урока мы попробуем написать такую каптчу, используя те знания, которые мы получили в процессе обучения на прошлых занятиях.
Начнем.
Для начала, чтобы разнообразить капчи мы откроем случайную картинку из папки. Эта картинка будет фоном нашей капчи.
$image = imagecreatefromjpeg(‘capch/capch_’.rand(0,9).’.jpg’);
Теперь определим цвет текста для надписи на этой капчи:
$textcolor = imagecolorallocate($image, 0, 0, 0);
Текст каптчи мы будем брать из файла. Будет браться случайная строчка в этом файле.
$file=”basecapch.php”;
Теперь выбираем слово из этой базы и производим замены:
$array=file($file);
$rand=$array[rand(0,count($array)-1)];
$rand = ereg_replace(” +”, “”, $rand);
$rand = ereg_replace(”
“, “”, $rand);
Записываем этот текст во временный файл, который нужен для последующего обращения к нему для сверки данных. Это нужно для того, чтобы можно было перезагрузить капчу не перезагружая страницу целиком.
$fp=fopen(“temp/capcha.txt”,”w+”);
fwrite($fp,$rand);
fclose($fp);
Теперь выбираем случайный шрифт для текста из файла:
imagettftext($image, 20, 1, 1, 30, $textcolor, “capch/”.rand(0,9).”.ttf”, $rand);
и выводим всё на экран:
header(‘Content-type: image/jpeg’);
imageJPEG($image);
Для правильной работы этой капчи – установите ее во фрейме, а фрейм должен отображать файл с html ссылкой на самого – себя. Пример:
<a href=”capche.html”><img src=”capcha.php”</a>
Теперь если пользователь кликнет по капчи, то она перезагрузится и отобразится новая, а на страницу действие не окажет.
Использованные функции:
ereg_replace – Заменяет регулярное выражение
Imagecolorallocate — Распределяет цвет для изображения
fopen — Открывает файл или URL



Добавить комментарий