3

我正在对表单进行一些垃圾邮件检查。下面的代码在我的本地主机上正常工作(如果为真,则重定向到 google.com),但是,它在生产服务器上时不起作用(执行脚本的其余部分并且不重定向到 Google.com)。

    if('POST' == $_SERVER['REQUEST_METHOD']) {
    if ($_POST["bait"]!='' || $_POST["date"] == "12/31/69" || trim($_POST["date"] == "1969-12-31")) {
        header("location: http://www.google.com");
    } else {
       //Process form here

我做了一个var_dump$_POST它是1969-12-31

我究竟做错了什么?

4

1 回答 1

4

您应该exit;在发送位置标头后,以防止脚本的其余部分执行。

例如

if('POST' == $_SERVER['REQUEST_METHOD']) {
    if ($_POST["bait"]!='' || $_POST["date"] == "12/31/69" || trim($_POST["date"] == "1969-12-31")) {
        header("location: http://www.google.com");
        exit;
    } else {
        // process form here
    }
}

重定向已发送,但您还继续输出请求的其余部分,在这种情况下,行为可能未定义。

于 2012-04-30T22:31:19.807 回答