我基本上试图做的是通过使用邮件地址确认用户的身份,然后如果身份得到验证,则执行某些数据库操作。我想生成一个确认码并以 URL 的形式发送到电子邮件地址。但我不想维护确认码的数据库。我怎样才能使用加密来做到这一点。有什么想法吗?
问问题
643 次
3 回答
2
它应该看起来像:
<?php
$salt = "this is a secret key!!!";
if(isset($_GET["confirm"]) && isset($_GET["email"])){
$confirm = $_GET["confirm"];
$to_email = $_GET["email"];
if(sha1($salt.$to_email) == $confirm){
// this mail is confirmed, now do some db work
// update_db ... ();
}else{
die("error: mail not confirmed");
}
}elseif(isset($_GET["email"])){
$to_email = $_GET["email"];
$confirm_link = $_SERVER["PHP_SELF"]."?confirm=".urlencode(sha1($salt.$to_email))."&mail=".urlencode($to_email);
$msg = "to confirm ... click the link: \n ".$confirm_link;
mail($to_email,"pls. confirm your mail",$msg);
}else{
die("error message");
}
?>
于 2012-07-01T18:40:41.370 回答
1
您可以使用一些秘密盐对有问题的电子邮件地址进行哈希处理,并将其作为链接中的令牌。然后,当您验证它时,重复相同的过程。
于 2012-07-01T18:28:06.247 回答
-1
最好的方法是在您的数据库中有一个名为“activation”的 varchar 字段。
所以你可以在那里保留“确认码”。当用户激活他的帐户时,您会将其更新为“1”。因此,如果该字段为“1”;用户已激活他的帐户。否则那里仍然会有确认码并且用户的帐户没有被激活。所以至少会有一列用于激活过程。
于 2012-07-01T18:35:20.317 回答