というページがdisplay.php
あり、ユーザーが を表示しているとしますdisplay.php?page=3
。ユーザーが POST リクエストを介して投票などのアクションを実行できるようにしてから、ユーザーを元のページに戻したいと考えています。では、POST リクエストを実行するdisplay.php?page=3
と、ページ情報もスクリプトで利用できるようになりますか?
3 に答える
簡単な答えは「はい」です。POST フォームの送信 URL として GET スタイルの URL を使用できます。フォームが送信されると、PHP は POST と GET の両方の情報を通常の方法で利用できるようになります。
これは、これを行うべきだと言っているわけではありませんが、機能します。
はい、GET 配列には、リクエスト メソッドに関係なく、常に URL パラメータが入力されます。次のような単純なページで試すことができます。
<form action="test.php?a=b" method="post">
<input name="a"/>
<input type="submit"/>
</form>
<pre>
POST:
<?php print_r($_POST); ?>
GET:
<?php print_r($_GET); ?>
</pre>
PHP では、特別なグローバル配列からリクエスト変数を取得できます。
$_GET['page'] (for GET requests)
$_POST['page'] (for POST requests)
$_REQUEST['page'] (for either)
「Redirect after Post」を探しているようです。display.php と vote.php を別々のファイルに分けることをお勧めします。投票は次のようになります。
<?php
//vote.php
$page_number = (int)$_REQUEST['page'];
vote_for_page($page_number); //your voting logic
header('Location: display.php?page=' . $page_number); //return to display.php
サニタイズされていないフォーム データをやみくもに受け入れることは、アプリにとって危険である可能性があることに注意してください。
編集: $_REQUEST を使用して両方のケースを処理するのは悪い形式だと考える人もいます。危険なのは、POST を予期しているときに GET を受け取った場合にエラーを通知したい場合があることです。通常、GET は表示用に予約されており、POST は変更 (作成/更新/削除操作) 用に予約されています。これが本当に問題になるかどうかは、アプリケーションによって異なります。