Показать сообщение отдельно

  #119  
Старый 16.07.2007, 12:25
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,187
С нами: 10495046

Репутация: 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);
?>
 
Ответить с цитированием