2016-04-03 2 views
-1

Так что я немного нул, когда дело доходит до регистрации/входа в систему, а также по электронной почте. Моя проблема в том, что я хочу сделать электронное письмо с подтверждением. У меня уже есть действующее письмо, которое будет отправлено вам, когда вы нажмете кнопку «Зарегистрироваться» (если вы хотите проверить, что это rediku.com). Проблема заключается в том, когда изначально было отправлено электронное письмо, оно имело форму со скрытым полем, у которого был сгенерированный токен, который можно было использовать для идентификации пользователя и проверки. К сожалению, почтовые клиенты будут блокировать электронные письма с помощью форм в них. Поэтому мне пришлось прибегнуть к использованию привязки.Как проверить новые учетные записи

В принципе, мой вопрос ... Как я могу проверить учетную запись конкретного лица, отправив им электронное письмо со ссылкой?

+0

Проверьте некоторые активации вы получили себя намеков. Просто отправьте ссылку с параметром 'yoursite.com/verify.php? Token = sometokenhere', на этой странице вы проверите токен (если он не истек). – JimL

+0

С какими аспектами вы столкнулись с проблемой? что ты уже испробовал? – NineBerry

+0

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

ответ

0

Предполагаю, что у вас на вашем сайте есть регистрационная форма. Предполагаю, что вы отправляете данные в файл с именем performRegistration.php.

внутри performRegistration.php:

// TBD sanitizing input data 
$newUser = new User(); // I am assuming you build a class for your users 
$newUser->setVerified(false); 
// TBD save form data to user object 
// generate a custom key for new user 
$newUser->setRegisterKey = MD5('someSaltString'.date('u')); // very basic! 
$newUser->save(); // validate data (like user already registered, and stuff like that) and save to db 
$newUser->sendRegistrationMail(); // I like libs like swiftmailer 

Как @JimL отметил, вы должны использовать базовую линию связи с маркером. Я бы сделал что-то вроде: yoursite.com/verify.php?verify[username]=aUsername&verify[token]=theMd5TokenGenerated Таким образом, вы можете найти имя пользователя внутри своего db и проверить соответствующий сгенерированный ключ. Вы должны убедиться, что два пользователя не получают один и тот же регистрационный ключ, если вы хотите найти набор данных во время процесса проверки, если вы не добавляете (уникальное) имя пользователя к ссылке.

Внутри verify.php:

// TBD catch $_GET and sanitize data 
$getVars = $_GET['verify']; 
if(array_key_exists('token', $getVars)){ 
    if(!empty($_GET['token']) && !empty($_GET['username'])) { 
     // TBD get user from db where username and key match the submitted values from the link 
     // if you can find a matching dataset: 
     $newUser->setVerified(true); 
     // start a session, add a cookie, login user 
     // do some great stuff 
    } 
} 
+1

Это очень просто. Пожалуйста, подумайте о том, чтобы использовать библиотеки и фреймворки, заботясь о таких вещах для вас. Есть много вещей безопасности, которые нужно учитывать ... – Hafenkranich

+0

Когда я пытаюсь получить переменную токена GET из url, и я запускаю 'if (empty ($ _ GET ['token'])) {}' он приходит как пустой , – joeldesante

+0

Как выглядит ссылка? – Hafenkranich

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