Danil Lab
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата: а почему бы не воспользоваться готовым продуктом? | Не одного компакного не видел. Да и свой роднее. Пришлось изобретать велосипед Основано на сесиях: Помогите переделять чтоб с хэшем было. Мне этот не подходит т.к. в течениии одной сесии можно обращатся сколько хочешь раз, а мне надо тьлько 1. Код: <?PHP // 2006 (c) D@nil (danillab.com.ru) $config_max_digits="4"; // знаков if ($QUERY_STRING=="") { // session id $sid=session_id(); if(!$sid){ session_start(); $sid=session_id(); } // генерируем $gen_code = ""; for($i=0; $i<$config_max_digits;$i++) $gen_code = $gen_code.rand(0,9); // сохраняем $HTTP_SESSION_VARS["noautomationcode"] = $gen_code; // выводим echo (" <img src='showcode.php?sid=$sid'> <form action='?begin' method='post'> <input type='hidden' name='sid' value='$sid'> <input type='text' name='code'> <input type='Submit' name='Submit'> </form>"); } if ($QUERY_STRING == "begin") { session_start(); $gen_code = $HTTP_SESSION_VARS["noautomationcode"]; // если не равно завершаем скрипт. if ($code == $gen_code) { echo "Защищеные данные"; }else{ echo "<b>Код не верный</b><br />Повторите попутку<br />"; echo ("<img src='showcode.php?sid=$sid'><form action='?begin' method='post'><input type='hidden' name='sid' value='$sid'><input type='text' name='code'><input type='Submit' name='Submit'></form>"); } } ?> | showcode.php Код: <?PHP // 2006 (c) D@nil (danillab.com.ru) $img_x="40"; // ширина $img_y="20"; // высота $font_size=5; // размер<5 $sid=trim($HTTP_GET_VARS["sid"]); session_id($sid); session_start(); $gen_code = $HTTP_SESSION_VARS["noautomationcode"]; $img = imagecreate ($img_x,$img_y); $background_color = imagecolorallocate ($img, 255, 255, 255); $f_x = imagefontwidth ( $font_size ); $f_y = imagefontheight ( $font_size ); // Выравниваем по центру $x = ($img_x - strlen($gen_code) * $f_x )/2; $y = ($img_y - $f_y) / 2; $color = imagecolorallocate($img,000,000,000); ////Вносим в изображение шум // Шумы в виде рамок $dc = ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255)); ImageRectangle($img, rand(0, $img_x/2 ), rand(0, $img_y/2 ), rand($img_x / 2, $img_x) ,rand($img_y / 2, $img_y), $dc); $dc = ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255)); ImageRectangle($img, rand(0, $img_x/2 ), rand(0, $img_y/2 ), rand($img_x / 2, $img_x) ,rand($img_y / 2, $img_y), $dc); // выводим текст imagestring ( $img, $font_size, $x, $y, $gen_code, $color); // Шумы в виде точек for($i = $img_x * $img_y / 10; $i >= 0;$i--) { ImageSetPixel($img, rand(0,$img_x), rand(0,$img_y), ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255))); } header("Content-Type:image/gif"); imagegif($img); ?> |
Давай, лучше, на "переделать" создашь тему в Веб программинге, чтобы не захламлять здесь. /Cheery/ | Всего записей: 269 | Зарегистр. 12-06-2005 | Отправлено: 21:48 24-01-2006 | Исправлено: Cheery, 23:16 24-01-2006 |
|