我基本上尝试做的是通过使用邮件地址来确认用户的身份,然后在验证身份时执行某些数据库操作。 我想生成一个确认代码并以URL的形式发送到电子邮件地址。 但是我不想为确认码维护一个数据库。我怎么能用加密做这个。有什么想法吗?
答案 0 :(得分: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");
}
?>
答案 1 :(得分:1)
您可以使用一些秘密的哈希值来隐藏有问题的电子邮件地址,并在链接中添加该令牌。然后,当您验证它时,重复相同的过程。
答案 2 :(得分:-1)
最好的方法是在数据库中创建名为“activation”的varchar字段。
所以你可以在那里保留“确认码”。当用户激活其帐户时,您将其更新为“1”。所以,如果该字段为“1”;用户已激活其帐户。否则,仍然会有确认码,并且不会激活用户的帐户。因此,至少有一列用于激活过程。