0

ページが存在しないかどうか、またはページに含まれてはならないものが含まれているかどうかを確認するはずのこのコードがあります。ホームページ ($_GET = "")。

これがコードです。あなたの助けに感謝します:)

$currentpage = $_GET['a'];
$pages[1] = "";
$pages[2] = "help";
$pages[3] = "work";
$pages[4] = "download";
$pages[5] = "process";
$pages[6] = "safariex";
$pages[7] = "services";

if(isset($_GET) && !ctype_alpha($_GET) && $_GET['a'] != ""){
    header("Location: http://pattersoncode.ca/error.php?ec=406");

}
if (!ctype_alpha($_GET['a']) && $_GET['a'] != "") {
    header("Location: http://pattersoncode.ca/error.php?ec=406");
}
if ( ! in_array( $currentpage, $pages ) )
{
 header("Location: http://pattersoncode.ca/error.php?ec=404");
}
4

1 に答える 1

6

私はこれが間違っていると信じています:

!ctype_alpha($_GET)

$_GET文字列ではなく配列です。ctype_alpha($_GET)常に false になります。

おそらく代わりにこれが必要です:

if(!isset($_GET["a"]) || !ctype_alpha($_GET["a"])) {
    header("Location: http://pattersoncode.ca/error.php?ec=406");
    exit();
}

両方の 406 条件を処理する必要があります。

ほとんどの場合、リダイレクトを行うときに exit() も実行する必要があります。

可能であれば、リダイレクトするのではなく、実際の http 応答コードを送信することをお勧めします。

header('HTTP/1.1 406 Not Acceptable', true, 406);
于 2013-08-10T20:16:32.803 に答える