Может у кого есть класс для создания и контроля рисунка с просьбой ввести слово или цифры, чтобы избежать спама при передаче данных из форм. Плиз, поделитесь...
Да, написать это легко, но написать генерацию трудночитаемых картинок для ботов тоже надо уметь. посмотрите вот это - http://demiurg.livejournal.com/70914.html Там же и ссылка на исходник ЗЫ Присутствует ненормативная лексика :wink:
можно сделать так, чтобы на изображении выводилось рандомное число прописью, а пользователь должен будет ввести это же число цифрами.
simpson хмм жестко ну вообще вроде от ботов спасет наверное рендомный бекграунд, и рендомной направление текса (угол) с некоторыми ограничениями, что кверх ногами не был текст.
Zero, Michael живой пример: http://musthave.ru/forum/profile.php?mode=register&agreed=true не сочтите за рекламу... правда, такой метод расчитан на русско-язычную аудиторию, хотя и на английский с успехом можно переделать. не думаю. скорее всего есть боты, которые и такое обойдут.
простые примеры: http://www.php-mysql-tutorial.com/user- ... cation.php http://www.planet-source-code.com/vb/sc ... 9&lngWId=8 обрати внимание на первый
simpson Там по моему три массива и рендомный выбор элемента в каждом из них А насчет градиента, думаю что иногда проще наделать готовых градиентов и потом их рисовать под текстом, или же циклом фигачить попиксельно )) но это изврат имхо
1. Создаем файл с именем picture.php. 2. Пишем туда код: Код (Text): session_start(); $session_kod=''; $im=imagecreate(90, 30); $bg=imagecolorallocate($im, 0xAA,0xAA,0xAA); $tc=imagecolorallocate($im, 0xFF,0xFF,0xAA); $pixcolor=imagecolorallocate($im, 0x00,0x00,0x00); $arr_letter=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'); $arr_x=array(3,19,35,51,68); for($i=1;$i<30;$i++) imagesetpixel($im, Rand(1,90), Rand(1, 30), $tc); $arr_kod=array(); for ($i_zn=0;$i_zn<5;$i_zn++){$i_rand=$arr_letter[rand(0,24)];imagettftext($im, 15,rand(-15,15),$arr_x[$i_zn],rand(15,25),$tc,'Monotype.ttf', $i_rand);$arr_kod[]=$i_rand;} $security_kod=implode("", $arr_kod); session_register('session_kod'); header("Content-type: image/jpeg"); imagejpeg($im); imagedestroy($im); 3. Сливаем файл шрифта который используем в папку где лежит скрипт. 4. В файле с формой пишем <img src="picture.php"> 5. В файле, который проверяет данные формы, сравниваем значение поля в введенными символами и зарегистрированную сессию. З.Ы. вот что получилось у меня http://all-reclama.ru/picture.php
Вы что издеваетесь? Думаете легко написать анализатор алфавита по пиксельному изображению - да никто этого даже делать не будет. Разве что ради сильно важного сайта. Проще просто руками зарегистрировать учётную запись для робота. А у меня проблема такая. Тоже хотел прикрутить к регистрации картинку, но не знаю как на ней сделать текст побольше. Пишу imagestring($im, 5, 0, 0, $code, $text_col); но тект выводится сильно мелкий. Может кто поможет. Увеличение циферки с пяти да любой большей не принесло изменений.
мы не издеваемся. это суровая правда... убираем шумы, пиксели переписываем как текст, получаем шаблоны символов. дальше уже идет просто сравнение шаблонов с изображениями. http://php.net/imagettftext
Обьясните почему так? есть файл: image.inc.php PHP: <?php $rand = rand(10000, 99999); $image = imagecreate(60, 30); $bgColor = imagecolorallocate ($image, 255, 255, 255); $textColor = imagecolorallocate ($image, 0, 0, 0); imagestring ($image, 5, 5, 8, $rand, $textColor); header('Content-type: image/jpeg'); imagejpeg($image); imagedestroy($image); ?> Вставляю его в hmtl следующим способом: PHP: <img src="image.inc.php"> php выводит картинку с 5-ю цифрами. ниже пишу: PHP: <?PHP echo $rand; ?> Так вот php выдает мне "PHP Notice: Undefined variable: rand" почему так? Точно так же я записывал $_SESSION['rand'] = $rand - нихрена такакая же ошибка: переменная пустая. Помогите плиз. Не могу никак эту варификацую обуздать.
В скрипте, которые выводит <img src="image.inc.php">, рассчитывать переменную и писать в сессию. А при формировании рисунка брать это значение из сессии
Код (Text): Допустим у нас есть форма, где picture.php - это код описанный выше: <FORM method="POST" action="check.php"> <INPUT type="text" name="text" /><BR /> <img src="picture.php"><BR /> <INPUT type="submit" value="Агонь!!!"> </form> В файле check.php проверяем: PHP: <?php session_start(); if ($_POST['text']==$_SESSION['session_kod']) {echo "Код введен верно";} else {echo "Код введен не верно"; } ?>
Помогите разобраться В форму регистрации я вставил тег <IMG SRC=”Imige.php”> Я генерирую новый рисунок скриптом Этот скрипт создает новый рисунок и записывает переменную в сессию я знаю что он записывает верное число да и рисунок генерирует верный но в браузер выводится не тот рисунок которой сгенерировал мой скрипт а более ранний. Я думаю что тут дело с кэшированием, Но не знаю как исправить уже вставлял перед выводом рисунка такие строчки Файл image.php <? /*код генерации рисунка * …. */ Header("Cache-Control: no-cache,no-store,must-revalidate"); Header("Cache-Control: post-check=0,pre-check=0,false"); Header("Pragma: no-cache"); Header("Content-type: image/png"); imagePng($Image); imagedestroy($Image); ?> но это не помогает. Все равно выводится старый рисунок. И еще вопрос по поводу сессии. Я читал что нужно делать сессию специально для рисунка. У меня есть авторизация и при запуске скрипта уже создается сессия, которая существует до закрытия браузера. Как верно организовать специальную сессию для рисунка?