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

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

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Вот как можно защитить регу пользователей вводом кода с картинки (пример)
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(1000099999);

// Получаем его хэш
$rv md5($rand);

// Засовываем хэш в куку
setcookie ("PictureCode"$rv);


// СоздаЈм картинку со светло-серой сеткой на тЈмно-сером фоне
$picture imagecreate (6121);
$bgcolor imagecolorallocate($picture165165165);
$ntcolor imagecolorallocate($picture200200200);    
for (
$i=0$i<=100$i+=5imageline($picture$i0$i100$ntcolor);
for (
$i=0$i<=100$i+=5imageline($picture0$i100$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($picture11071substr($rand,0,1), $fontcolor1);
imagestring($picture11176substr($rand,1,1), $fontcolor2);

imagestring($picture11271substr($rand,2,1), $fontcolor3);
imagestring($picture11376substr($rand,3,1), $fontcolor4);
imagestring($picture11471substr($rand,4,1), $fontcolor5);

// Посылаем заголовки и картинку
header("Content-type: image/png");
imagepng($picture);
imagedestroy($picture);
?>
 
Ответить с цитированием