1

わかりました、従来のphpを使用しています。フレームワークはありません。何もありません。単純な手順を使用しています。しばらく検索していましたが、質問に対する回答が得られません。現在、.htaccessファイルを使用していません。しかし、404エラーがどのように機能するかを本当に理解する必要がありますか? 私はカテゴリに関連する投稿を表示するWebサイトを持っているので、たとえばcategory = phpと言うので、これをgetリクエストとして渡します

$_GET['category'] == 'php';

現在、何をしているのかは次のようなものです:

$pocategory = $_GET['category'];

if($pocategory == 'php' || $pocategory == 'javascript') {
//Then show related posts
} else {
header('Location:404.php');
exit;
}

つまり、有効なリクエストの値としてphpとjavascriptが必要なだけで、残りは404にリダイレクトしたいのですが、その方法がわからないので、このようにしました.50を超えるカテゴリがある場合はどうなりますか? このif条件でそれらすべてをリストすることはできません。指定されたgetリクエスト値が無効かどうかを検出する方法を簡単に説明します..

どんな助けでも大歓迎です。

4

2 に答える 2

1

.htaccessはこれを行う方法です。

ErrorDocument 404 index.php?404

その行は、apacheにロードするファイルを指示します。上記の例では、メインのindex.phpスクリプトを呼び出しています。

index.phpファイルの先頭に次のようなものを追加します。

$error_404 = isset($_GET["404"]) ? true : false;

これで、404エラーリクエストがあるかどうかを検出できます。$ error_404はtrueになるので、単純な関数を追加してみませんか。

function error_404($error_404)
{
    if($error_404 == true)
    {
       // do some error stuff here, like set headers, and some text to tell your visitor
    }
}

関数を呼び出すだけです。

error_404($error_404);

getハンドラーの後でそのimmidiatleyを実行するのが最善です:

error_404($error_404)
$error_404 = isset($_GET["404"]) ? true : false;

または、2つを1行に結合します。

error_404($error_404 = isset($_GET["404"]) ? true : false);

質問に対処するには、これを関連するスクリプトに追加します。

$pocategorys_ar = array("php","javascript"); 

if (!in_array($pocategory, $pocategorys_ar)) 
{ 
    error_404(true); 
} 

error_404()関数にアクセスできることを確認してください。

于 2012-09-30T17:55:07.063 に答える
0

次のように、すべてのカテゴリを配列内に配置できます。

$pocategories = array
(
    'php',
    'javascript'
);
if (in_array($pocategory, $pages))
{
    // ...
}
else
{
    header('Location:404.php');
}

あなたができるもう1つのことは、すべてのカテゴリのhtml / phpファイルを作成し、そのようにすることです

if (is_file('sites/' . $popcategory . '.php')
{
    include('sites/' . $popcategory . '.php');
}
else
{
    header('Location:404.php');
}
于 2012-09-30T17:51:36.113 に答える