попросить браузер отказаться от предыдущей формы - PullRequest
0 голосов
/ 21 января 2012

Я заметил следующее на своей странице "thePage.php".На моей странице thePage.php есть форма, в которой пользователь может ввести свое имя и адрес электронной почты и щелкнуть кнопку отправки.

1) Если я приду на thePage.php из-за того, что пользователь щелкнет ссылку из другогостранице .Page.php вызывается с сервера.Вот HTML-код, содержащий ссылку, которая при щелчке по ней извлекает thePage.php с сервера и отображает его в браузере:

<div>
    <a id="logged-in-status" hef="http://mySite/thePage.php"> Click to go to the data entry page</a>      
</div>

После того, как thePage появляется в браузере, она была получена с сервераЯ могу нажать кнопку «Перезагрузить» браузера и получить перезагрузку страницы с сервера и ничего больше.

Вышеуказанный div появляется на моей целевой странице index.php.Когда пользователь нажимает вышеуказанную ссылку, с сервера запрашивается thePage.php и отображается в браузере.thePage.php имеет форму ввода имени и адреса электронной почты.После загрузки thePage.php - с пустой, еще не заполненной или отправленной формой - если я нажимаю кнопку «перезагрузить» в браузере, страница просто перезагружается.Нет сообщения с предупреждением «о повторной отправке информации» - только перезагрузка страницы.

2) ОДНАКО - если пользователь вводит или не вводит данные формы (не имеет значения), то нажимаеткнопка «отправить» - после первой отправки формы поведение перезагрузки в (1) выше теряется.Даже если форма оставлена ​​пустой, и пользователь нажимает «отправить», браузер, похоже, внутренне установил «грязный бит», так что, когда нажимается кнопка перезагрузки браузера, браузер, похоже, говорит: «О, смотри - очевидно,форма на этой странице - и она была отправлена ​​хотя бы один раз - я собираюсь игнорировать результаты этой формы, и с этого момента - поскольку форма была отправлена ​​один раз - я больше несобираюсь просто перезагрузить страницу. Я покажу окно с сообщением о «повторной отправке ранее отправленной информации».

Вот что я хочу сделать.Я хочу очистить этот «грязный бит», который браузер устанавливает внутри, так что, даже если форма на странице была отправлена, я хочу, чтобы браузер вернулся к поведению, как в (1) выше, как если бы я только что нажалссылка на другую страницу, которая привела меня на страницу, так что браузер «забывает», что форма на странице была отправлена.

Должен быть способ сделать это.Если вы думаете об этом - если ссылка на thePage.php нажата из другого места, «грязный бит» очищается, и поведение перезагрузки страницы такое же, как в (1) выше, без окна сообщения «re-send info» в (2) выше.

Есть ли программный способ сказать браузеру "смотри - притворись, что я только что попал сюда со сторонней ссылки на thePage.php, хорошо? Просто забудь все предыдущие представления формы на этой страницеБольшое спасибо. "

1 Ответ

1 голос
/ 21 января 2012

После того, как вы проанализировали данные формы в скрипте php, просто используйте header(), чтобы вместо этого отправить их обратно на страницу. Это предотвратит повторное уведомление о данных.

<?php
////Parse form
header("Location: http://Wherever");
exit();
?>

Если вам нужно знать, что форма была отправлена ​​успешно / безуспешно, просто отправьте с $_GET и заберите ее.

?php
////Parse form
header("Location: http://Wherever?notice=successful");
exit();
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...