3

フォームでスパムチェックを行っています。以下のコードは、ローカルホストでは正常に機能しますが(trueの場合は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 に答える