PHP中的简单邮件确认

时间:2012-07-01 18:25:26

标签: php email identity

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

3 个答案:

答案 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”;用户已激活其帐户。否则,仍然会有确认码,并且不会激活用户的帐户。因此,至少有一列用于激活过程。