Какие есть способы верификации пользователя по email?
Здравствуйте. Использую обычный скрипт регистрации с подтверждением по email. То есть пользователь вводит логин (он же email) и пароль после чего на указанный им email летит ссылка на страницу верификации с get параметром в виде уникального хэша, что хранится в базе с его логином и паролем. На странице верификации хэш, который в базе и который пришел внутри get параметра сравниваются и т.д.
Вопрос: как мне достоверно определить почтовый адрес, с которого перешел пользователь для подтверждения? Теоретически ссылка подтверждения может улететь не туда куда надо и верификацию пройдет уже др. человек. Как вы сравниваете пользователя, который только что проходил процедуру регистрации и пользователя, который прошел по ссылке подтверждения?
Возможно ответ на этот вопрос прост, но я не имею большого опыта в этом деле поэтому прошу совета.
Если боитесь, что ссылка случайно попадет на другой email (что очень мало вероятно), просите, после перехода по ссылке, ввести email адрес, указанный при регистрации и сверяйте со значением из БД.
У вас паранойя, для разработчика конечно хорошее качество, но это уже через чур.
Почитайте про протокол передачи почты, куда то не туда улететь не сможет.
Вообще в этом смысла мало, пользователь может легко подтвердить почту с другого устройства\программы или по прошествии долгого времени.
В почтовом клиенте по ссылке переходит только тот пользователь, который ввел свою почту в форме регистрации. Если вы хотите проверить параметры пользователя, который зарегистрировался и перешел по ссылке, то правильно написал @sashablashenkov - сравнивайте IP, браузер, местонахождение и т.д.
Можно просматривать referer.
Но это решение уже больше для самопроверки. Т.е. если в referer есть нужный email то вероятность того что пользователь тот кого за себя выдаёт выше.