我正在开发一个应用程序,用户可以在收到应用程序的电子邮件邀请时进行注册。现在我所做的是生成发送给用户并存储在数据库中的邀请码。然后,用户转到电子邮件中包含邀请码的网址,如下所示:
http://myapp.com/user/register/56jk4564k6567kj686kjh56
如果另外一个方法更好,我就会徘徊,比如只保存用户的电子邮件,避免发送邀请码。
另外,使用邀请码,是否需要对它们进行加密?
答案 0 :(得分:1)
邀请代码可能是最佳的,因为它用于验证电子邮件地址,这意味着用户注册时可以采取的步骤更少。通常你必须通过电子邮件向用户发送密码以检查电子邮件地址是否真实 - 好吧,你刚刚完成了!
如果用户在一个地址获得邀请然后实际上想要使用其他电子邮件地址进行注册,会出现一个问题?也许他们有超过1并且想要使用不同的? (例如,工作与个人)你需要代码来验证这个人是同一个人。
至于加密,我不打扰 - 如果您的数据库遭到入侵并且代码被盗,那么很容易制作新的数据库并将其再次发送出去。
答案 1 :(得分:-2)
是的,您可以发送电子邮件地址的哈希以及链接:
$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);