Я обнаруживаю отправку формы при нажатии кнопки 'addrecord', а затем сбрасываю значение этой кнопки 'addrecord' в массиве $ _POST:
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, показанная выше переменная var_dump показывает мне, что значение «addrecord» для массива post НЕ является строкой «Обработано уже».- это все еще «ADD RECORD».
, когда пользователь нажал кнопку «addrecord», сервер получает массив POST, а кнопка addrecord имеет значение «ADD RECORD» -- вот кнопка добавления записи в моей форме:
<input type="submit" name="addrecord" value="ADD RECORD" />
, а затем на стороне сервера, я вижу значение «addrecord» является «ДОБАВИТЬ ЗАПИСЬ», и я изменяюЭлемент addrecord массива POST от «ADD RECORD» до «Обработано уже».
, а затем сервер отправляет браузеру новую страницу с надписью «Запись».Добавлено! "
Так что, похоже, значение массива POST элемента 'addrecord' больше не является" ДОБАВИТЬ ЗАПИСЬ ", потому что я изменил его на" Обработано уже ".Если пользователь не нажимает кнопку «Добавить запись» в форме снова, а выполняет только перезагрузку страницы - как тогда браузер может переустановить массив POST с «Обработано уже» - на «ДОБАВИТЬ ЗАПИСЬ»?Почему, когда сервер получает перезагрузку страницы, элемент «addrecord» массива POST теряет значение, которое я установил ранее, «Уже обработано». ?
Потому что, когда я нажимаю «перезагрузить»в браузере var_dump говорит мне - это именно то, что произошло: значение addrecord массива POST теперь снова возвращается к «ADD RECORD» - даже если пользователь НЕ нажимал кнопку добавления записи формы.
Почему?Есть ли в браузере кэшированная копия значений, используемых для заполнения массива POST на сервере, так что даже если вы измените массив POST в php на сервере, браузер повторно отправит кэшированную копию всех старыхзначения формы?