今、私は自分自身に行動するフォームを持っています。ユーザーがそこにいることを意図しているかどうかをチェックするコードがいくつかあります。送信を押した後にスクリプトがそれ自体に対してアクションされた場合、スクリプトがコードの特定のセクションを実行するのを停止する方法はありますか?
SESSION変数を使用してチェックすることを考えていましたが、頭の中ですべてが混乱しています:p
何か案は?
もちろん。フォームアクションを自己送信している場合は、$_POST
が空かどうかを確認してください(フォームに POST していると仮定します)
if (!empty($_POST))
{
...
}
PHP を使用するときは、次のようにフォーム テンプレートで入力要素を使用します。
<input type="submit" name="submit" id="submit" value="Login" /></td>
...そしてPHPページで、POSTが次のように自己送信されたかどうかを確認します。
// if page is not submitted to itself echo the form
if (!isset($_POST['submit']))
{
...
}
ただし、これは安全ではありません。自己送信の利点を最大限に活用したい場合は、クライアントにランダム トークンを使用してチャレンジし、クライアントにそれを繰り返すように求めることで、クロスサイト リクエスト フォージェリ (XSRF)に対抗するようにしてください。
次のような非表示の入力をフォームに埋め込んだように:
<input type="hidden" name="nonce" value="<? echo $NONCE_VALUE; ?>" />