我正在开发一个应用程序,用户可以在收到应用程序的电子邮件邀请时注册。现在我要做的是生成发送给用户并存储在数据库中的邀请码。然后用户转到包含邀请码的电子邮件中给出的 url,如下所示:
http://myapp.com/user/register/56jk4564k6567kj686kjh56
如果其他方法更好,我正在徘徊,比如只存储用户的电子邮件并避免发送邀请码。
另外,使用邀请码,是否需要加密?
我正在开发一个应用程序,用户可以在收到应用程序的电子邮件邀请时注册。现在我要做的是生成发送给用户并存储在数据库中的邀请码。然后用户转到包含邀请码的电子邮件中给出的 url,如下所示:
http://myapp.com/user/register/56jk4564k6567kj686kjh56
如果其他方法更好,我正在徘徊,比如只存储用户的电子邮件并避免发送邀请码。
另外,使用邀请码,是否需要加密?
邀请码可能是最好的,因为它用于验证电子邮件地址,这意味着用户注册时需要采取的步骤更少。通常,您必须通过电子邮件向用户发送密码以检查电子邮件地址是否真实 - 好吧,您刚刚完成了!
一个考虑因素是,如果用户在一个地址收到邀请,然后实际上想要使用不同的电子邮件地址进行注册,会发生什么?也许他们有不止 1 个并且想要使用不同的?(例如工作与个人)您需要验证此人是否相同的代码。
至于加密,我不会打扰 - 如果您的数据库被黑客入侵并且代码被盗,那么制作新的并再次发送它们很容易。
是的,您可以发送电子邮件地址的哈希值以及链接:
$email = 'foo@bar';
$check = md5('SECRET' . $email);
$link = "register?email=$enail&check=$check"
在“注册”页面上,再次计算哈希值并与链接中的哈希值进行比较:
$email = $_GET['email'];
$check = md5('SECRET' . $email);
if($check !== $_GET['check'])
die("wrong link!");
upd:这只是一个例子,在现实生活中你应该将盐存储在主代码之外:
$salt = get_salt_from_config_file();
$check = md5($salt . $email);