CAPCTHA – защита от спамщиков
Категория PHP
CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) – полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. Компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.
Последнее время очень часто используются защитные CAPTCHA (каптчи) для регистрации или отправки сообщений. В этом уроке мы напишем свою собственную каптчу. Чтобы как-то усложнить нашу каптчу у нас будет использоваться случайный фон. Выбираем фон используя функцию rand из папки captcha, в ней должны быть фоны нашей каптчи (0.jpg, 1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg, 6.jpg, 7.jpg, 8.jpg):
$image = imagecreatefromjpeg("captcha/".rand(0,9).".jpg");
Теперь определим цвет текста для надписи на этой капчи:
$textcolor = imagecolorallocate($image, 0, 0, 0);
Текст каптчи мы будем брать из файла. Будет браться случайная строчка из файла basecaptcha.php.
$file = "basecaptcha.php";
Теперь выбираем слово из этой базы и производим замены:
$array = file($file);
$rand = $array[rand(0,count($array)-1)];
$rand = ereg_replace(" +", "", $rand);
$rand = ereg_replace(" ", "", $rand);
Записываем этот текст во временный файл, который нужен для последующего обращения к нему для сверки данных. Это нужно для того, чтобы можно было перезагрузить капчу не перезагружая страницу целиком. Если возникнут проблемы с созданием файла поставьте папке capctha необходимые для записи атрибуты, например через TotalCommander.
$fp = fopen("captcha/captcha.txt","w+");
fwrite($fp,$rand);
fclose($fp);
Теперь выбираем случайный шрифт для текста из файла, таким же способом как с фоном каптчи:
imagettftext($image, 20, 1, 1, 30, $textcolor, "captcha/".rand(0,9).".ttf", $rand);
и выводим всё на экран:
header('Content-type: image/jpeg');
imagejpeg($image);
Вот и все! CAPTCHA у нас вывелась на страницу, и чтобы проверить в следующем шаге правильно ли он веден, мы считываем значение из временного файла captcha.txt и сравниваем его с отправленным. Если они совпадают, то это не бот или очень умный робот =)
В конце нашего урока у Вас в папке должны быть файлы:
- captch – папка
- captch/0.fpg
- captch/1.fpg
- captch/2.fpg
- captch/3.fpg
- captch/4.fpg
- captch/5.fpg
- captch/6.fpg
- captch/7.fpg
- captch/8.fpg
- captch/9.fpg
- captch/0.ttf
- captch/1.ttf
- captch/2.ttf
- captch/3.ttf
- captch/4.ttf
- captch/5.ttf
- captch/6.ttf
- captch/7.ttf
- captch/8.ttf
- captch/9.ttf
- captch.php – сам файл с кодом
- basecaptcha.php – список слов
Примечание: Для правильной работы этой капчи – установите ее во фрейме, а фрейм должен отображать файл с html ссылкой на самого – себя. Пример:
Теперь если пользователь кликнет по капчи, то она перезагрузится и отобразится новая, а на страницу действие не окажет.
Добавить в закладки
Теги: безопасность, полезное, программирование, скрипт
3 комментариев по “CAPCTHA – защита от спамщиков”
-
]]>
]]>
сказал:
октября 17, 2009 в 04:26Предлагаю такой способ генерации случайной надписи на капче:
for($x=0; $x $num.=rand(0,9);
}
$key=substr(md5($num),0,4); //$key – случайная строка -
]]>
]]>
сказал:
декабря 11, 2009 в 13:19…
Интересный пост …
-
]]>
]]>
сказал:
декабря 13, 2009 в 09:25…
Гутт пост …