验证表单错误

时间:2012-10-02 15:54:38

标签: php forms email-verification

我现在已经在这里待了几个小时,并且摸不着头脑是什么问题。

表单可以工作并发送电子邮件,但是当点击验证链接时,它不显示回显的“成功”消息,而是显示消息(“错误消息”);信息。与$ salt有什么关系?

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" size="35" name="email" title="Email"> 
<input id="button" type="submit" name="submit" value="Submit your Email" />

</form>

<?php

$salt = "mysecret";

if(isset($_POST["confirm"]) && isset($_POST["email"])){
    $confirm = $_POST["confirm"];
    $to_email = $_POST["email"];

    if(sha1($salt.$to_email) == $confirm){
        echo "Success";
    } else{
        die("error: mail not confirmed");
    }


} elseif(isset($_POST["email"])){
    $to_email = $_POST["email"];

    $confirm_link = "http://www.mysite.com/form.php?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");
}

?>

2 个答案:

答案 0 :(得分:6)

当您从电子邮件中点击该验证链接时,这些值将通过GET而不是通过POST传递。

答案 1 :(得分:2)

当你点击链接时在$ _GET中传递$ _POST中的数据,你的链接指定了一个邮件参数(没有“e”),你检查了“email”参数。