Есть ли способ избежать обработки форм при обновлении php-страниц? Я хотел бы предотвратить повторную отправку форм при обновлении ссылок на php-файлы с функцией insert в них. Например, я обрабатываю ряд заметок, написанных пользователями в верхней части каждой страницы для новой заметки. Кроме очевидного создания отдельного php-файла с функцией заголовка есть ли другой способ сделать это?
Используйте шаблон Post-Redirect-Get .
Если вам нужно отобразить данные из представленных материалов, укажите идентификатор строки или аналогичный в (например) строку запроса URL-адреса, на который вы перенаправляете.
Лучшим способом было бы сделать header("location: form.php");
вызов после обработки формы. Это перенаправит вас обратно на страницу формы, и если вы обновите, браузер не будет повторно отправлять данные формы.
Кроме того, вы можете проверить, были ли вы уже обработаны полученные данные, но это все равно даст вам предупреждающее сообщение о том, что вы собираетесь повторно отправить данные.
Вы можете сделать то и другое, на всякий случай кто-то использует кнопку «Назад» и случайно нажимает «Отправить» еще раз.
Просто установите флажок, когда вы обрабатываете форму в первый раз, чтобы вы могли проверить ее и позже прекратить переработку. Переменная сеанса или файл cookie будут работать нормально.
Вы можете поместить nonce на страницу, которая разрешена только один раз, так что если вы видите, что в нее входит тот же самый nonce, вы не вставляете эту страницу.
Я перенаправляю пользователей на новую страницу после обработки формы.
Форма представляет собой POST-запрос для do-something.php
. Я проверяю входные данные, и если он проверяет, обрабатываю ли я данные и выполняю перенаправление на do-something.php?somethingdone
. Таким образом, пользователь может нажать F5 без повторной отправки запроса POST.