我在confirm_email.php中创建了一个哈希
$email = "blah@blah.com";
$secret = "$#@%^&$#$%^&&akeif"; //random characters
$hash = MD5($email . $secret);
$message = "https://localhost/mysite/register.php?email=" . $email . "&hash=" . $hash;
然后发送电子邮件。单击链接后,我在register.php中有以下代码
$secret = "$#@%^&$#$%^&&akeif";
if(isset($_GET['hash']) and (MD5($_GET['email'] . $secret) == $_GET['hash'])) {
//allow registration to continue processing
} else {
//don't allow
}
我应该使用会话来存储密码(如果是这种情况,我想我可以创建一个特定于用户的秘密)?或者,是否有更好的方法来为此方法创建哈希?
提前致谢。
答案 0 :(得分:0)
谢谢大家。我已经把所有人的建议铭记于心。秘密在一个单独的文件中,并且电子邮件被urlencoded。我还在URL中包含了时间并比较了register.php页面上的时间。
if(($time_now - $_GET['time'] < 1800) and MD5($_GET['time'] . $secret) == $_GET['time_hash']) {
$expired = false;
}
if(isset($_GET['hash']) and (MD5($_GET['email'] . $salt) == $_GET['hash']) and !$expired) {
//allow registration to continue processing
}