投稿方法の性質上、index.php?task=submit に投稿する必要があります。
本当じゃない。POST フォームであれば、問題なくフォームを指定できます。/submit
GET フォームの場合は [QSA] フラグが必要ですが、それでも問題ありません。
しかし、あなたのコメントから、ユーザーにはアドレスバーに「/submit」が表示されるようにしたいが、スクリプトは追加の GET 変数にアクセスできるようにしたいと考えています。これは機能しません。書き換えの概念を誤解しているようです:
index.php?task=submit
TO を書き換えているのではなく/submit
(魔法のようにユーザーに何か他のものを表示するなど)、/submit
TO index.php?task=submit
を書き換えています (ユーザーが要求したよう/submit
に、このリクエストは内部的に別のリクエストに書き換えられます)。
そのため、元のリクエストにパス、キー、コードの情報が含まれていない場合、書き換えられたリクエストもできません。ただし、それらをセッションに保存してから/submit
、PHP にリダイレクトすることもできます。
スクリプトは次のように構成されます。
session_start();
if (isset($_GET['path'])) {
$_SESSION['path'] = $_GET['path'];
header('Location: http://' . $_SERVER['HTTP_HOST'] . '/submit');
session_write_close();
exit;
}
if (isset($_SESSION['path'])) {
$path = $_SESSION['path'];
unset($_SESSION['path']);
// do stuff with $path
}
これが合理的な解決策であるかどうかは、この「送信」アクションが何をするかによって異なります。情報を取得する検索のようなものでは問題ないかもしれませんが、情報を保存するものについては、POST/REDIRECT/GETパターンの方が優れたアプローチです。