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


Автор: ЖанКефир 21.7.2005, 18:32
Стоит такая задача:
Нужно реализовать систему защиты от множественной регистрации программами-роботами.
Я вижу 3 варианта решения:

1. Сделать ограничение на одну регистрацию с одного IP в день. А если много пользователей находятся за прокси, у них один на всех IP? А если это анонимная прокси? Не подходит. Или есть решения?

2. Сделать подтверждение по e-mail. Не хочется напрягать пользователей, которые не любят залезать в почту и подобные подтверждения. Сам был таким, будучи новичком-любителем в Интернете.

3. Сделать поле "Введите код на картинке". Наверно самый разумный вариант. Собственно по нему вопросы:

А. Как это работает?
Б. На сколько он хорошо выполняет функцию защиты от роботов?
В. На сколько хорошо работает, если код будет не на картинке, а простым текстом?
Г. И главный вопрос: как это реализовать?

Жду ответов.

Автор: Bikutoru 21.7.2005, 18:51
Цитата
Как это работает?

Рандомом генерится несколько цифр. У тебя есть картинка-фон, картинки-цифры. Создаёшь новую картинку, накладываешь на неё фон, цифры (но не в ряд, а с отступами вверх-вниз и под углом) и выводишь готовую картинку пользователю.
Цитата
На сколько он хорошо выполняет функцию защиты от роботов?

Робот должен проанализировать картинку и узнать число. Это упирается в распознание текста. Учитывая то, что есть неоднородный фон, а цифры под углом друг к другу и не в одну линию, задача становится достаточно сложной.
Цитата
На сколько хорошо работает, если код будет не на картинке, а простым текстом?

Будет очень ненадежно - можно будет взять число, используя регулярные выражения.
Цитата
И главный вопрос: как это реализовать?

С использованием библиотеки gd и сессий.

Автор: ЖанКефир 21.7.2005, 19:00
Цитата(Bikutoru @ 21.7.2005, 18:51)
Рандомом генерится несколько цифр. У тебя есть картинка-фон, картинки-цифры. Создаёшь новую картинку, накладываешь на неё фон, цифры (но не в ряд, а с отступами вверх-вниз и под углом) и выводишь готовую картинку пользователю.


А как потом проверить правильно ли пользователь указал этот код? Где он будет храниться что робот не сможет его найти, но веб-служба сможет его взять и сопоставить?

Автор: Irokez 21.7.2005, 19:03
Цитата
А как потом проверить правильно ли пользователь указал этот код? Где он будет храниться что робот не сможет его найти, но веб-служба сможет его взять и сопоставить?

в сессии

Автор: ЖанКефир 21.7.2005, 23:03
Цитата(Irokez @ 21.7.2005, 19:03)
в сессии


Точно! Спасибо!

Автор: oksale 26.7.2005, 10:37
Если еще актуально, http://www.codenet.ru/webmast/php/Security-Images-in-PHP/ пример реализации.

Автор: ЖанКефир 26.7.2005, 11:28
Да, с примером даже лучше! Спасибо!

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