2012-02-28 3 views
0

Я пытаюсь использовать жемчужину this, чтобы создать поле honeypot, но я не уверен, как его реализовать. Как форма знает, какое поле должно делать honeypot и где я укажу ярлык? Вот код, который я использовал для этой области, однако при запуске приложения появляется форма, чтобы быть видимым:Создание honeypot в регистрационной форме

= form_for(:invitation, :url => request_invite_path, :html => {:id => 'login_form', :honeypot => true}) do |form| 
     = form.text_field :email, :size => nil 
     = form.text_field :honeypot #This field was created to store the honeypot input 
     %button{:type => "submit"} Request Invite 

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

Есть ли способ пропустить модели и использовать поле honeypot для принятия или отклонения приглашения? Мне не нужно хранить данные honeypot, но мне нужно использовать его, чтобы решить, следует ли принимать приглашение.

Так оно и должно работать так:

  1. Пользователь получает на целевую страницу
  2. Пользователь видит регистрационную форму, состоящую из
    1. электронной почты ввода адреса поле
    2. HoneyPot поле, которое скрыто
  3. Если бот регистрируется, он заполняет honeypot, поэтому, когда создается приглашение. Я могу автоматически принять те, которые не заполняют из honeypot, и те, которые делают, будут отклонены.

Еще одна вещь, как мне проверить поле honeypot, чтобы увидеть, работает ли она? Я хочу заполнить его и посмотреть, делает ли мой код то, что он должен.

+0

Связанный: [Лучше Ханипот Реализация (форма Anti-Spam)] (http://stackoverflow.com/questions/36227376/better -honeypot-implementation-form-anti-spam/36227377) –

ответ

0

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

  1. Если вы используете этот драгоценный камень, вы увидите, что вам не нужно, чтобы добавить себе поле приманки в форму. Когда вы реализуете его с :honeypot => true в параметрах html, он автоматически создает скрытое текстовое поле с соответствующей меткой для обеспечения доступности.

  2. Если вы используете приманку для фильтрации ботов, когда бот отправляет форму к контроллеру, и заполнил как адрес электронной почты и на приманку, вы просто добавить before_filter :protect_from_spam. Если вы хотите сделать что-то особенное в этой функции, вы можете переопределить свои значения по умолчанию в контроллере.

  3. Вы можете проверить это путем проверки элемента в браузере (с Firebug на Firefox, например), просто изменив CSS-код display: в приманке от нуля до Inline. Таким образом, вы можете заполнить поле и посмотреть, что произойдет, если вы действительно не измените код .

1

Я сожалею, что ты не понял мой предыдущий ответ, я перефразирую это

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

  1. Если вы используете этот драгоценный камень, вы увидите, что вам не нужно добавлять себя в поле honeypot к форме. (я точно не вижу цели использования драгоценного камня для этого, но в любом случае ..)

  2. , когда вы добавляете текстовое поле в форму и хотите, чтобы она была невидимой, вам нужно сделать ее невидимой (вот как работают текстовые поля)

  3. Если вы используете honeypot для фильтрации ботов, когда бот отправляет форму контроллеру и заполняет как электронную почту, так и honeypot, вы просто добавляете before_filter :check_honeypot и в эта функция проверяет, является ли поле honeypot пустым или нет, и если это не так, хорошо у вас есть бот, верно? поэтому отвергают его автоматически

+0

Гораздо лучше спасибо :), но все же, извините, я нооб, и я смущен тем, как реализовать этот драгоценный камень. Я еще не могу покататься на своем, плюс его первый драгоценный камень. Драгоценный камень говорит, что реализовать honeypot все, что мне нужно сделать, это код «: honeypot => true», как указано выше, поэтому не следует ли скрывать это поле (или форму в зависимости от того, как это работает)? Или если у вас есть предложение о том, как свернуть свое, что тоже будет работать. Если мне не нужно текстовое поле honeypot, я не храню информацию о honeypot, так что я передаю контроллеру для проверки? – GiH

+0

также, как я могу проверить поле? Если его работа, его скрытый haha ​​ – GiH

+0

, относительно этого поля, если вы используете этот камень или добавляете скрытое поле самостоятельно, просто проверьте страницу в браузере во время работы сервера, например, с помощью инструмента firebug. чтобы добавить текст внутри поля, просто вытащите из него «display: none» и начните вводить –

Смежные вопросы