Есть ли способ избежать обработки форм при обновлении php-страниц? Я хотел бы предотвратить повторную отправку форм при обновлении ссылок на php-файлы с функцией insert в них. Например, я обрабатываю ряд заметок, написанных пользователями в верхней части каждой страницы для новой заметки. Кроме очевидного создания отдельного php-файла с функцией заголовка есть ли другой способ сделать это?Избегать повторной отправки форм на php-страницах
ответ
Используйте Post-Redirect-Get Pattern.
- принять запрос Публиковать
- процесса данные
- Issue ответ перенаправлять
- Принять запрос Получить
- Направить 200 ответ
Если необходимо отобразить данные представленный материал, затем включить идентификатор строки или аналогичный в (например) строку запроса URL-адреса, на который вы перенаправляете.
Лучшим способом было бы позвонить header("location: form.php");
после обработки формы. Это перенаправит вас обратно на страницу формы, и если вы обновите, браузер не будет повторно отправлять данные формы.
В качестве альтернативы вы можете проверить, были ли вы уже обработаны полученные данные, но это все равно даст вам предупреждающее сообщение о том, что вы собираетесь повторно отправить данные.
Вы можете сделать то и другое, на случай, если кто-то воспользуется кнопкой «Назад» и случайно щелкнет «Отправить» еще раз.
Просто установите флажок, когда вы обрабатываете форму в первый раз, чтобы вы могли проверить ее и позже прекратить переработку. Переменная сеанса или файл cookie будут работать нормально.
Вы можете поместить nonce на страницу, которая разрешена только один раз, так что если вы видите, что в нее входит то же самое, что и вы, вы не вставляете эту страницу.
Я перенаправляю пользователей на новую страницу после обработки формы.
Форма POST-запрос do-something.php
. Я проверяю входные данные и проверяет, обрабатываю ли я данные и выполняю перенаправление на do-something.php?somethingdone
. Таким образом, пользователь может нажать F5 без повторной отправки запроса POST.
- 1. Предотвращение повторной отправки форм Google
- 2. Остановить страницу от повторной отправки форм при обновлении
- 3. Предотвращение повторной отправки формы
- 4. Entity Framework 6 избегать повторной загрузки
- 5. Избегайте повторной отправки данных на странице обновления
- 6. Предотвращение отправки нескольких форм
- 7. предотвратить дублирование отправки форм на страницах jsp
- 8. Предотвращение отправки форм на основе ширины
- 9. Предотвращение отправки нескольких форм на распределенный сайт
- 10. избегать отправки, если любое поле пустое Axax
- 11. Использование jquery для предотвращения повторной отправки формы
- 12. C# ASP.NET MVC: простой способ/образец для повторной отправки коллекции форм?
- 13. Предотвращение повторной отправки, когда страница обновляется
- 14. Предотвращение повторной отправки формы в рамки Zend?
- 15. Предотвращение повторной отправки страницы после обновления asp.net
- 16. Избегайте «подтверждение формы повторной отправки после авторизации
- 17. Избегайте повторной отправки формы, если перезагрузка страницы
- 18. Как сохранить форму от повторной отправки данных?
- 19. Передача общего исключения из модуля повторной отправки
- 20. Спарк исключения после повторной отправки остановлено приложение
- 21. Предотвращение повторной отправки формы Yii 2
- 22. PHP Предотвращение повторной отправки F5 | Без перенаправления
- 23. Объединение нескольких форм для отправки
- 24. Перезагрузка формы повторной отправки страницы (PHP)
- 25. Использование Javascript для отправки форм
- 26. Несколько форм - одна кнопка отправки
- 27. PHP Codeigniter; Предотвращение повторной отправки формы
- 28. Предотвращение повторной отправки с сообщением в jquery
- 29. Остановить сообщение от повторной отправки информации
- 30. Пользовательские сохраненные данные для повторной отправки формы
ах узнать что-то новое каждый день :) –
Что вы подразумеваете под присягой получить запрос и выдать ответ 200? –
Браузер выдает запрос с «GET/url/you/redirected/to HTTP/1.1» в нем, и ваш сервер отвечает «HTTP/1.1 200 OK», некоторые другие заголовки и некоторый контент. – Quentin