使用密钥验证php电子邮件

时间:2016-03-10 21:22:03

标签: php

我在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
}

我应该使用会话来存储密码(如果是这种情况,我想我可以创建一个特定于用户的秘密)?或者,是否有更好的方法来为此方法创建哈希?

提前致谢。

1 个答案:

答案 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
}