построение базового человеческого теста с php - PullRequest
0 голосов
/ 29 августа 2009

Я делаю элементарный "тест на человека" для формы на моем сайте.

Я хочу взять текущую дату (с точностью до минуты, а не секунды) и объединить ее с пользователями REMOTE_ADDR, затем из этого сгенерировать строку (возможно, использовать md5?), А затем ограничить ее до 6 символов.

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

Я не знаю, есть ли более простой способ сделать это, но я думаю, что это подойдет мне и быстро решит проблему. Есть предложения?

Ответы [ 3 ]

5 голосов
/ 29 августа 2009

Я не знаю, есть ли более простой способ чтобы сделать это, но это то, что я думаю будет работать на меня и быстро исправить. Есть предложения?

Если вам просто нужно быстрое решение, попробуйте что-нибудь попроще. У меня был очень популярный сайт с заведомо эффективным тестом Тьюринга:

Check this box if you're a human: [ ]

Это маленькое исправление уменьшило количество спама с 10 до 1000 сообщений в день до 1 или 2 каждые несколько месяцев. Конечно, после того, как боты собрались, мне пришлось сделать тест намного сложнее:

What's the sound a cat makes? (Rhymes with 'cow') [________________]

После этого больше не было проблем. YMMV.

5 голосов
/ 29 августа 2009

Я бы сказал, что самым простым решением было бы использовать honeypot. По сути, создайте скрытое поле с именем Name или что-то в этом роде, а затем проверьте, есть ли в поле данные после отправки. Если это так, вы знаете, что это бот! Поскольку он скрыт, люди не смогут заполнить это поле, только боты будут!

2 голосов
/ 29 августа 2009

Генерация MD5 из любого источника (в том числе абсолютно случайного). Положите его на экран и сохраните в сеансе. Проверь это. Вуаля.

Использование библиотеки каптч есть obv. гораздо более безопасный, хотя. Есть много очень хороших и очень очень простых в установке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...