Webサイトの一部のphpページでHTTPGETメソッドを無効にしたい。PHPコードでそれを行うことはできますか?
a.htmlとaction.phpの2つのページがあるとします。これで、a.htmlは通常のページになり、どの方法でもアクセスでき、その情報がaction.phpに送信されます。ただし、action.phpに送信される情報は、postメソッドを介してのみ送信できるようにしたいと思います。
Method Not Allowed ヘッダーをいくつかの説明テキストと共に送信します (できれば、以下の例よりもわかりやすく、より便利なもの)。
通常のページで処理を続行しないように、後で終了します。
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
header('Method Not Allowed', true, 405);
echo "GET method requests are not accepted for this resource";
exit;
}
GET をブラック リストに登録する代わりに、ホワイト リストに登録する (および、受け入れるメソッドがないかどうかをテストする) ことを検討することをお勧めします。(PUT、DELETEなども必要ない場合があるため)。
以下のコードを最初に入れてください。
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header('Location: a.html');
exit;
}
現在のメソッドを読み取り、GETの場合はユーザーをリダイレクトできます。