ローカル Web サイトで HTML の有効な URL を簡単に作成できるように、小さな静的関数があります。以下に示します。
public static function url($path = false) {
// Build return url with special html characters escaped
return 'http://127.0.0.1/' . htmlspecialchars($path);
}
アンカー内に 1 つ、フォーム アクション内にもう 1 つ、2 つの URL があります。
Root::url('test?category=' . $category . '&index=' . $index) // Href
Root::url('test?category=' . $_GET['category'] . '&index=' . $_GET['index']) // Form
GET === $
htmlspecialchars
、 URL から特別な html 文字をエスケープするために使用する静的関数の内部を見ることができます。
アンカー 1 は有効なリンクを返し、期待どおりに機能します。ただし、フォーム送信をクリックすると、ブラウザのURLは次のようになります。
http://127.0.0.1/test?category=innate&index=0
どうしてこれなの?GET
パラメータが有効であることに依存しているため、ウェブサイトが壊れます。
お時間をいただきありがとうございます。これが理にかなっていることを願っています。
編集
関数呼び出しの戻り値を直接フォーム アクションに挿入します。
<form
action="<?= Root::url('test?category=' . $_GET['category'] . '&index=' . $_GET['index']); ?>"
method="post">
編集
フォーム html は次のとおりです。
<form action="http://example.com/test?category=innate&index=0" method="post">
アンカーhtmlは次のとおりです
<a href="http://example.com/test?category=innate&index=0">
GET パラメータがあるにもかかわらず、サーバーが POST リクエストを送信することと関係があるのでしょうか?
編集#3
わかりましたので、それは私の関数または私が渡しているものと関係があります.フォーム送信でURLをハードタイプしましたが、問題なく機能しました。つまり、関数が返すものだけです.
私自身、私が何であるかを見ることができません!
答え
header
フォームが送信された後、フォームの再送信に対抗するために同じページにリダイレクトしていました。ヘッダーの文字列は によって生成されていましたRoot::url()
。
これを理解するのに2時間かかりましたが、男の子は気分がいいです!