Задать вопрос
sorry_i_noob
@sorry_i_noob

Почему когда я отправил форму и потом жму F5 или Ctrl+R или Ctrl+Shift+R форма снова отправляется? Ну, на сервер $_POST приходит. Почему?

Здравствуйте! У меня такая проблема.
Вот я написал что-то в форме. И нажал отправить ее. Страница перезагрузилась (у меня эта страница без AJAX), после чего если я жму F5 или Ctrl+R или Ctrl+Shift+R (это в Chrome. Хоткеи я не менял.), то форма снова (!) отправляется. Ну, на сервер $_POST приходит. А ведь не должен приходить, я же не нажимал кнопку "Отправить", я перезагрузил страницу.
А если поставлю курсор в адресную строку браузера и нажму Enter, страница перезагрузится и $_POST не придет. Как мне сделать, чтобы при нажатии F5 или Ctrl+R или Ctrl+Shift+R был тот же эффект, как если бы я поставил курсор в адресную строку и нажал Enter?
  • Вопрос задан
  • 116 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
Immortal_pony
@Immortal_pony
Разделите страницу с обработкой и страницу с формой.

Например, форма у вас расположена по адресу your-site.com/form.
Поставьте обработчик на url your-site.com/handle
У формы пропишите action="/handle"
После завершения обработки отправляйте пользователя обратно на /form.
Если хотите показать пользователю сообщение об успехе, то пользуйтесь сессиями.

PS
А ведь не должен приходить, я же не нажимал кнопку "Отправить"

Неверно. Когда вы наживаете на кнопку "Обновить", вы повторно отправляете запрос, который сорфмировали, нажав кнопку "Отправить". Браузеры, кстати, нередко о таком предупреждают соответствующим сообщением:
SLGEk.gif
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы