PHPの$ _POST配列のプログラム変更を無視して、私は$ _POST配列にその「addrecord」ボタンの値をリセット:Firefoxは、私は、フォームが押されて「addrecord」ボタンを提出検出
if(array_key_exists('addrecord', $_POST))
{
var_dump($_POST);
if($_POST['addrecord'] == "ADD RECORD")
{
$_POST['addrecord'] = "Handled already."; // prevents a 'reload'
// from adding the same record again
// now do the 'addrecord' -- just once -- to the database
}
else
{
// yay -- we avoided adding the same record on a browser reload
}
}
を
Firefox 8の 'reload'ボタンをクリックすると上記のvar_dumpが私に表示されます ポスト配列の 'addrecord'の値が "Handled already"の文字列ではありません。 - それはまだ "ADD RECORD"です。
ユーザーが「addrecord」ボタンをクリックしたときに、サーバーがPOSTアレイとaddrecordボタンが値 は「RECORDを追加」している取得します - ここに私のフォーム上の録音ボタンを追加します:
<input type="submit" name="addrecord" value="ADD RECORD" />
は、サーバー側では、私は「RECORDの追加」「addrecord」の値をされて見て、私はに「RECORDを追加」からPOST配列の「addrecord」要素 を変更する「既に処理さ。」
となり、サーバーは「レコードが追加されました!」というブラウザに新しいページを送信します。
は、だから、私はそれが「すでに取扱」に変更したため、「RECORDを追加」もはや「addrecord」要素のPOST配列の値のように思えるん。ユーザーがフォームの「レコードを追加」ボタンをもう一度押すのではなく、ページをリロードするだけの場合 - ブラウザはPOST配列を「Handled already」から「ADD RECORD」にどのように再設定できますか?なぜサーバーがページのリロードを受け取った場合、POST配列の 'addrecord'要素は以前に設定した値を失いますか「処理済」。?
ブラウザで 'reload'をクリックすると、var_dumpが私に伝えます。つまり、POSTアレイの 'addrecord'値は、ユーザーが行ったとしても「ADD RECORD」に戻りますフォームのレコード追加ボタンをクリックしないでください。
なぜですか?ブラウザーには、サーバー上のPOST配列を埋めるために使用される値のキャッシュコピーがあるので、サーバー上のPHPでPOST配列を変更しても、ブラウザーはすべての古いフォームの値?
少し参考http://en.wikipedia.org/wiki/Post/Redirect/Get – Yoshi
+1よろしくお願いします。 – wantTheBest