очистить post после отправки формы

Очистить post после отправки формы

Или, если удастся, перенаправить пользователя на другую страницу:

Данные POST, в которых хранятся представленные данные формы, отражаются в форме, например:

Либо очистите данные POST после того, как вы сделали это с формой, то есть все входы были в порядке, и вы выполнили все ваши результаты из формы.
Или, как только вы определили, что форма одобрена и вы сделали все, что бы вы ни действовали из формы, перенаправите пользователя на новую страницу, чтобы сказать «все сделано, спасибо» и т. Д.

Это останавливает данные POST, они известны как «Post / Redirect / Get»:
http://en.wikipedia.org/wiki/Post/Redirect/Get

Метод Post / Redirect / Get (PRG) и использование другой страницы также гарантирует, что если пользователи нажмут обновление браузера или кнопку перехода назад в другое место, ваша форма не будет отправлена ​​повторно.
Это означает, что если ваша форма вставляется в базу данных или отправляется кому-то по электронной почте (и т. Д.), Без метода PRG значения будут (вероятно) вставлены / отправлены по электронной почте каждый раз, когда они нажмут обновление или перейдут на страницу с помощью кнопки history / back.

Я столкнулся с этой подобной проблемой и не хотел использовать header () для перенаправления на другую страницу.

Решение:

Сообщения об ошибке или успехе могут быть добавлены условно после формы. Надеюсь это поможет 🙂

Поместите onClick в кнопку submit:

В определите функцию clearform () и установите для значения текстового поля значение «» :

Таким образом текстовое поле будет очищено при нажатии кнопки отправки.

Я просто пытался исправить ту же ошибку, я, наконец, исправил ее, поэтому я скопирую часть кода, возможно, это поможет вам.

это те входы, которые я хотел очистить после нажатия на мою кнопку.

$ usu = »;
$ varpass = »;

это линии, которые очищают входы: D

этот код поможет вам

Если вы хотите, чтобы поле формы было ясно, вы должны добавить только задержку в событии onClick, например:

Источник

Заголовок запроса содержит некоторые данные POST. Независимо от того, что вы делаете, когда вы перезагружаете страницу, rquest будет отправлен снова.

Постарайтесь как можно больше разделить (в разных файлах) сценарий просмотра (главным образом, html) из вашего сценария контроллера (бизнес-логика и т. Д.). Таким образом, вы всегда отправляете данные в отдельный скрипт контроллера и затем перенаправляете обратно в сценарий вида, который при визуализации не будет содержать данных POST в заголовке запроса.

Простое решение PHP для этого:

это общий вопрос здесь.

Вот ссылка на аналогичный вопрос. Вы можете увидеть мой ответ. Почему POST [‘submit’] устанавливается при перезагрузке?

Основной ответ – посмотреть в post / redirect / get, но так как это проще увидеть на примере, просто проверьте ссылку выше.

Чтобы пользователи не обновляли страницу или не нажимали кнопку «Назад» и не возвращали форму, я использую следующий аккуратный небольшой трюк.

Данные POST теперь находятся в сеансе, и пользователи могут обновлять все, что захотят. Он больше не будет влиять на ваш код.

$ _POST должен заполняться только по запросам POST. Браузер обычно отправляет запросы GET. Если вы достигли страницы через POST, она обычно спрашивает вас, следует ли ей повторно отправлять данные POST при нажатии обновления. То, что он делает, просто то, что снова отправляет данные POST. Для PHP, который выглядит как другой запрос, хотя он семантически содержит одни и те же данные.

это сработало для меня

Вы не можете, это обрабатывается браузером, а не каким-либо языком программирования. Вы можете использовать AJAX для запроса или перенаправления пользователя на ту же (или другую) страницу.

Вы должны добавить директиву no cache в свой заголовок:

Моя обычная техника для этого:

Вы также можете передать начальный URL-адрес страницы, чтобы установить кнопку «Назад».

Таким образом, вам просто нужно логически мыслить и сделать это идиотским доказательством для ваших пользователей …

«Лучший» способ сделать это – отправить / перенаправить / получить

После отправки сообщения заголовок 302, указывающий на страницу успеха

Я вижу, что это старая нить, просто подумал, что я дам свои 2центы. Не уверен, что это будет соответствовать каждому сценарию, но это метод, который я успешно использовал в течение нескольких лет:

Не действительно удаляет POST-ed значения из браузера, но, насколько ваш сценарий php ниже этих строк, больше нет POST-переменных.

Это работает для меня:

Вы можете сделать это следующим образом:

Это перезагружает страницу с сервера. Очень важно логическое «истинное». Это сработало для меня!

Источник

Очистка данных формы после отправки в PHP

Я застрял в точке очистки данных формы. После того, как пользователь отправляет форму, данные добавляются в базу данных. Это хорошо, пока здесь. Но если пользователь обновляет страницу, ранее введенные данные снова заносятся в базу данных. Я использую почтовый метод для отправки данных. Я не использую AJAX. Вся страница перезагружается после отправки данных для. Пожалуйста, помогите мне с этим. Если есть какой-либо способ очистить данные формы после отправки, чтобы после обновления страницы данные не добавлялись в базу данных, ответьте на этот вопрос.

8 ответов

После вставки данных выполните перенаправление:

После перенаправления обновление не приведет к повторной вставке данных.

Чтобы показать скрытый div, вы можете сделать функцию:

И используйте функцию следующим образом:

Если вы используете POST вместо GET в качестве свойства action в вашей форме, то обновление страницы результатов не приведет к повторной отправке формы (некоторые браузеры могут предлагать такую ​​возможность, но они по умолчанию не должны этого делать).

Лучше всего иметь в форме скрытое поле уникального идентификатора, чтобы вы могли знать, когда вы получаете форму, которая была отправлена ​​более одного раза, и ваша программа может игнорировать ее.

Большинство людей используют URL для отправки формы в, а затем перенаправляют обратно в исходную форму. Это может быть тот же URL.

Попробуйте использовать сеансы. Установите переменную сеанса, чтобы записывать, отправил ли пользователь уже форму.

Поместите это в начало вашего кода (это должно быть на каждой странице):

А затем, когда они отправляют форму, установите переменную сеанса:

$ _ SESSION [‘form_submitted’] = true;

Вот ссылка на учебник по сессиям: Учебник

Создайте уникальный ключ при создании HTML-формы и установите для этого ключа скрытое поле в форме. Сохраните ключ вместе с данными и не сохраняйте данные, если ключ уже присутствует в базе данных.

Если вы выбираете метод перенаправления, не забудьте добавить кристалл после перенаправления, чтобы дать веб-серверу команду остановить выполнение скрипта.

После вставки в базу данных вызовите метод unset (), чтобы очистить данные.

снята с охраны ($ _ POST);

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *