Вообшем нужно зделать антибот защиту с помощью случайного сгенерированого символов соответствено выведененых на картинку,желательно без использования БД, без промежуточного сохранения на винт(короче сразу head("контент тайп: картинка ")), как я понял есть несколько способов это сделать: 1)1 скрипту(занимаюшимуся непосредственым выводом картинки) передается запрос на вывод картинку: <img scr = "antibot.php?simvol=bns7HG7"> -соответствено bns7HG7 - это как нибуть зашфрованый случайный номер(кажись так делается в слаед кмс), 2 скрипт генерирует номерок и шифрует его, ну соответсвено инклудится там где надо вывести изображения. 2)делает почти тоже самое только 2 скрипт записует в файл случ. символы а 1 скрпт. его отдтуда считывает , или например 2 скрипт генерирует два разных набора символов первое это ид символов id а второй это сами символы и записует это все в файл а 1 скрипту передается <img scr = "antibot.php?id=bns7HG7"> где id ид номер символов ну и соответсвено 1 скрипт считывает файл на соответсвее id = simvol, и выдает их, у этих двух методов есть недостаток- если записывать в фаил с атрибутом w+ то стираются все номерки(например если открыто много окон регистрации то кому то придется повторить регистрацию) а если с a+ или r+ то очень легко зделать файл в который все это дело записуется очень больщих размеров(раз тридцать обновить страницу регистрации и файл уже весит 10m), можно конечно генерировать название файла произвольно и передовать первому скрипту его название и тот после его прочтения делает ему unlink, но это будет дефрагментировать диск лишний раз , да и не красиво но. Подскажите че нибудь. p.s. Сори за орфографию - спеШил.
Ты что нибудь слышал про сессии?! Нет, ну как ты мог, берешь генерируешь какой-нибудь порядок из цифор и буквочек, и выводишь это все как рисунок, ну я думаю ты знаешь как пользовать Image Functions, и так дальше пошли, и тот порядок который был у тебя сгенерирован заносишь например в $_SESSION['gen_anti_lol'] а как известно сессия у каждого пользователя различная и не повторимая... Ну если ты не понял что я тебе сказал то тогда читай внимательно мануал по PHP, и учусь пользоваться ya.ru и google.com
Ну и на последок вот тебе очень хорошая ссылочка по твоему сабжу http://forum.vingrad.ru/php-graphic-libraries-gd-imagemagic.html там ты точно найдешь ответ на свой вопросик...)))
А ты слышал чтони буть про HTTP - заголовок, и про то что его можно парсить?Ведь сесии например могут пердаватся через плюшки либо через POST или GET. Вот например скриптик http://www.softtime.ru/info/proteus.php?down=proteus40.zip и его уже давно обошли имено парся HTTP заголовок(почитай на их форуме), я сам прикалывался над одним знакомым, вернее над его сайтом . http://forum.vingrad.ru/php-graphic-libraries-gd-imagemagic.html- пасибо конечно, но с GD я давно дружу
Правда! А ты знаешь, что передается только название сессии т.е индефикатор сессии, а данные которые храниться в этой сессии лежать на стороне сервера, и как же ты их достанешь это же не куки
PHP: <?php session_start(); //генерим псевдорандомную строку и берем только 5 символов $md5 = md5(microtime() * mktime()); $string = substr($md5,0,5); //создаем капчу из картинки $captcha = imagecreatefrompng("./captcha.png"); //ставим цвета $black = imagecolorallocate($captcha, 0, 0, 0); $line = imagecolorallocate($captcha,233,239,239); //добавляем некую защиту в виде линий) imageline($captcha,0,0,39,29,$line); imageline($captcha,40,0,64,29,$line); //рисуем полученную строку к картинке imagestring($captcha, 5, 20, 10, $string, $black); //созраняем строку $_SESSION['key'] = md5($string); //выводим картинку header("Content-type: image/png"); imagepng($captcha); ?> <?php session_start(); //Шифруем данные которые передаем и проверяем на правильность (всовпадение отсылаемого и правильного кода if(md5($_POST['code']) != $_SESSION['key']) { die("Неверно!"); }else{ echo 'Верно!'; } ?>
captcha.php PHP: <?php session_start(); session_register('code'); $_SESSION['code'] = rand(1000000,9999999); for($i = 0; $i < 7; $i++) { $arr[$i] = substr($_SESSION['code'],$i,1); } $im = imagecreate(130,40); imagecolorallocate($im,255,255,255); $a = 0; for($i = 0; $i < 7;$i++) { $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imagestring($im,3,$a+=15,0,$arr[$i],$color); } header("Content-type: image/jpeg"); imagejpeg($im,'',100); ?> form.php PHP: <?php session_start(); ?> <img src="captcha.php" /> <form method="post"> Enter code : <input type="text" name="get_code"> <input name="sub" type=submit value="Проверить"> </form> <?php if($_POST['sub']) { if($_POST['get_code'] == $_SESSION['code']) { echo "Картинка введена верно"; } else { echo "Картинка введена неверно"; } } ?>