Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Генерирование цифр на картинке


Автор: Гость_Dmitriy 21.10.2005, 11:41
На многих форумах есть защита от флуда с помощью генерации цифр на картинке. Расскажите пожалуйста поподробнее об этой системе, или дайте ссылочек на литературу

Автор: tRiNEX 22.10.2005, 00:04
1. Генерация картинки.
Имеем некую площадь созданного изображения, генерируем случайную последовательность цифр, создаем сессию и пишем в нее эту последовательность. Накладываем цифры на имеющуюся картинку, причем на данном этапе можно поизвращаться, сделать разноцветными и разноразмерными цифры, затем генерируем некий шум, который должен защищать код от считывания его роботами. Затем вывод результирующей картинки в браузер.

2. Проверка данных.
Итак, ты выводишь картинку:
Код

<img src="/image.php">

и форму с полем
Код

<form  action="">
  <input name="seccode" type="text"  size="5">
  <input type="submit" name="Submit" value="Check">
</form>

На этой стадии генерируется изображение с кодом, который, в свою очередь, записывается в переменную сессии.
Человек вводит код, жмет кнопку...
Сравниваем введенный код с оригиналом и действуем дальше как тебе необходимо.

Можно не использовать сессии, а альтернативу рассматривать в куках...
Только необходимо зашифровать численный код односторонним алгоритмом, перед тем как отдавать пользователю в куки, и сравнивать потом уже хеши, а не сами коды.

Автор: Гость_Dmitriy 22.10.2005, 12:25
приблизительно так я и думал... Только записывать хотел не в сессию, а в БД. Спасибо!

Автор: VoTeR 6.1.2006, 17:29
А что в image.php должно быть?

Автор: Mal Hack 6.1.2006, 18:06
Цитата(VoTeR @ 6.1.2006, 17:29 Найти цитируемый пост)

А что в image.php должно быть?


Программный код, генерирующий картинку
http://forum.vingrad.ru/index.php?showtopic=72162
http://forum.vingrad.ru/index.php?showtopic=64654

Автор: VoTeR 6.1.2006, 18:48
smile что-то я сегоня торможу.. вроде все делаю прално, но у меня не работает...
вот что в итоге прочитанного у меня получилось в image.php
Код

$img = ImagettfbBox(45,0,$ttf,"òåñò5 Èò-2");
$img['width'] = $this->r_width - $box[4] - 5;
$img['height'] = $this->r_height - $box[7] - 15;

Знаю, не прално.. а что имено, а?

Автор: Mal Hack 6.1.2006, 18:55
VoTeR
Все. Читаем мануал, книжку. Азы языка программирования надо самому изучать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)