CakePHP: действие по подтверждению электронной почты не работает при нажатии на ссылку электронной почты - PullRequest
0 голосов
/ 20 января 2010

Мы создали часть проверки электронной почты нашего сайта.Мы создали сайт, используя CakePHP BTW.

Проблема в том, что он не работает, когда мы нажимаем на ссылку в письме.Письмо отправляется в виде простого текста.

Странно то, что когда мы вставляем ссылку в адресную строку, она работает.Также при нажатии на ссылку с помощью Gmail и почтовых клиентов на рабочем столе, это также работает.Другие провайдеры электронной почты не работают.

РЕДАКТИРОВАТЬ:

Дополнительная информация:

Пример ссылки для проверки: http://localhost/users/validate/validatecodeblah12c023

Когда он работает, он должен войти в систему пользователя и перенаправить на панель пользователя.

Он переходит на главную страницу, когда он не работает (см. Описание выше).

Дополнительная информация2:

Я сравнил результаты, используя Live HTTP-заголовки, и обнаружил, что единственный раз, когда он не проталкивается (переходит на страницу входа по какой-то причине), это когда есть «Referrer»: http://mail.yahooblahblah...' Gmail по какой-то причине не имеет строки 'Referer' в своих заголовках.

Ответы [ 2 ]

0 голосов
/ 23 января 2010

Это может звучать глупо, но вы используете компонент Auth и добавили validate действие к разрешенному действию?

Вы должны иметь $this->Auth->allow(array('validate')); на вашем beforeFilter на UsersController

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

0 голосов
/ 20 января 2010

Все еще очень расплывчатый вопрос, но здесь идет речь:

  • ссылка в порядке, вы убедились, что она работает путем копирования и вставки
  • работает, когда вы нажимаете на него в некоторых почтовых клиентах
  • ergo, опять же, ссылка в порядке

Это оставляет случай, когда вы не можете нажать на него в некоторых почтовых клиентах. Поскольку вы сами не связываете текст, а отправляете его в виде простого текста, это почтовый клиент выполняет связывание автоматически. В URL могут быть символы, которые отбрасывают почтовый клиент:

http://example.com/users/validate/1j423-k1j234-nc183&$+-123894
-----------------------------------------------------

Все странные символы могут быть частью URL, но почтовые клиенты запутываются и думают, что часть после символа $ больше не принадлежит URL и только ссылается на эту часть. Следовательно, при нажатии ссылка будет другой и, возможно, недействительной. Решение: используйте более простые символы или urlencode их.

Возможно, это также просто, что ссылка переносится на строку, что нарушает автоматическое связывание. В этом случае измените макет электронного письма или используйте более короткий URL.

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