0

我基本上试图做的是通过使用邮件地址确认用户的身份,然后如果身份得到验证,则执行某些数据库操作。我想生成一个确认码并以 URL 的形式发送到电子邮件地址。但我不想维护确认码的数据库。我怎样才能使用加密来做到这一点。有什么想法吗?

4

3 回答 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 回答