如何验证新帐户
How to verify new accounts
所以在 signup/login 和电子邮件方面我有点菜鸟。我的问题是我想发送一封验证邮件。我已经有一封有效的电子邮件,当您点击“注册”按钮时会发送给您(如果您想查看它是 rediku.com)。问题是当电子邮件最初制作时它有一个带有隐藏字段的表单,该字段具有生成的令牌,可用于识别用户并验证他们。不幸的是,电子邮件客户端会阻止其中包含表单的电子邮件。所以我不得不求助于使用锚 link.
基本上,我的问题是...如何通过向特定人员发送带有 link 的电子邮件来验证他们的帐户?
我假设您的网站上有注册表。
我假设您正在将数据发送到名为 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 指出的那样,您应该使用带有令牌的基本 link。
我会做类似的事情:yoursite.com/verify.php?verify[username]=aUsername&verify[token]=theMd5TokenGenerated
这样你就可以在你的数据库中查找用户名并检查生成的相应密钥。如果您没有将(唯一)用户名添加到 link,如果您想在验证过程中查找数据集,则必须确保两个用户不会获得相同的注册密钥。
里面 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
}
}
所以在 signup/login 和电子邮件方面我有点菜鸟。我的问题是我想发送一封验证邮件。我已经有一封有效的电子邮件,当您点击“注册”按钮时会发送给您(如果您想查看它是 rediku.com)。问题是当电子邮件最初制作时它有一个带有隐藏字段的表单,该字段具有生成的令牌,可用于识别用户并验证他们。不幸的是,电子邮件客户端会阻止其中包含表单的电子邮件。所以我不得不求助于使用锚 link.
基本上,我的问题是...如何通过向特定人员发送带有 link 的电子邮件来验证他们的帐户?
我假设您的网站上有注册表。 我假设您正在将数据发送到名为 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 指出的那样,您应该使用带有令牌的基本 link。
我会做类似的事情:yoursite.com/verify.php?verify[username]=aUsername&verify[token]=theMd5TokenGenerated
这样你就可以在你的数据库中查找用户名并检查生成的相应密钥。如果您没有将(唯一)用户名添加到 link,如果您想在验证过程中查找数据集,则必须确保两个用户不会获得相同的注册密钥。
里面 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
}
}