【问题标题】:Verification form error验证表格错误
【发布时间】:2012-09-23 12:25:14
【问题描述】:

我已经在这个问题上待了几个小时,一直在摸索问题是什么。

表单工作并发送电子邮件,但是当点击验证链接时,它没有显示回显的“Success”消息,而是显示die(“error message”);信息。与 $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");
}

?>

【问题讨论】:

标签: php forms email-verification


【解决方案1】:

当您单击电子邮件中的验证链接时,值将通过 GET 而不是通过 POST 传递。

【讨论】:

  • @Fred 通常,浏览器发出的大多数请求都是 GET 请求。当您在 URL 中为常规浏览器请求传递参数时,您将通过 GET 传递这些参数,因为您的浏览器对 URL 发出 GET 请求。浏览器可以通过使用基于表单元素method 属性的表单来进行POST。当设置为post 时,浏览器将在提交表单后进行 POST,传递表单数据。
  • 谢谢迈克。当我将一些“post”更改为“get”并重新加载然后单击提交按钮时,它没有执行,而是出现一个对话框,要求我保存或打开 .php 文件,这就是我觉得奇怪的地方。
【解决方案2】:

当您单击链接时在 $_GET 中传递数据时,您检查 $_POST 中的数据,并且您的链接指定邮件参数(不带“e”)并检查“电子邮件”参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2014-07-06
    相关资源
    最近更新 更多