|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
Вот как можно защитить регу пользователей вводом кода с картинки (пример)
register.php
PHP код:
Antibot Secure:<br><input type='text' name='image'><br>(Введите числа, изображённые на картинке)<br><br>
<img src='image.php'><br>
...
<?
...
if($_COOKIE['PictureCode'] != md5($image))
exit("Код на картинке не совпадает с кодом, написанным вами.");
...
?>
image.php
PHP код:
<?php
// Получаем псевдослучайное число
$rand = rand(10000, 99999);
// Получаем его хэш
$rv = md5($rand);
// Засовываем хэш в куку
setcookie ("PictureCode", $rv);
// СоздаЈм картинку со светло-серой сеткой на тЈмно-сером фоне
$picture = imagecreate (61, 21);
$bgcolor = imagecolorallocate($picture, 165, 165, 165);
$ntcolor = imagecolorallocate($picture, 200, 200, 200);
for ($i=0; $i<=100; $i+=5) imageline($picture, $i, 0, $i, 100, $ntcolor);
for ($i=0; $i<=100; $i+=5) imageline($picture, 0, $i, 100, $i, $ntcolor);
// Случайный цвет для каждой цифры
$fontcolor1 = imagecolorallocate($picture,rand(0,111), rand(0,111), rand(0,111));
$fontcolor2 = imagecolorallocate($picture,rand(0,111), rand(0,111), rand(0,111));
$fontcolor3 = imagecolorallocate($picture,rand(0,111), rand(0,111), rand(0,111));
$fontcolor4 = imagecolorallocate($picture,rand(0,111), rand(0,111), rand(0,111));
$fontcolor5 = imagecolorallocate($picture,rand(0,111), rand(0,111), rand(0,111));
// Рисуем на картинке случайное число
imagestring($picture, 11, 07, 1, substr($rand,0,1), $fontcolor1);
imagestring($picture, 11, 17, 6, substr($rand,1,1), $fontcolor2);
imagestring($picture, 11, 27, 1, substr($rand,2,1), $fontcolor3);
imagestring($picture, 11, 37, 6, substr($rand,3,1), $fontcolor4);
imagestring($picture, 11, 47, 1, substr($rand,4,1), $fontcolor5);
// Посылаем заголовки и картинку
header("Content-type: image/png");
imagepng($picture);
imagedestroy($picture);
?>
|