Как очистить post запрос php
Заголовок запроса содержит некоторые данные 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-переменных.
Это работает для меня:
Вы можете сделать это следующим образом:
Это перезагружает страницу с сервера. Очень важно логическое «истинное». Это сработало для меня!
23 Answers 23
The request header contains some POST data. No matter what you do, when you reload the page, the rquest would be sent again.
The simple solution is to redirect to a new (if not the same) page. This pattern is very common in web applications, and is called Post/Redirect/Get. It’s typical for all forms to do a POST, then if successful, you should do a redirect.
Try as much as possible to always separate (in different files) your view script (html mostly) from your controller script (business logic and stuff). In this way, you would always post data to a seperate controller script and then redirect back to a view script which when rendered, will contain no POST data in the request header.
To prevent users from refreshing the page or pressing the back button and resubmitting the form I use the following neat little trick.
The POST data is now in a session and users can refresh however much they want. It will no longer have effect on your code.
Simple PHP solution to this:
this is a common question here.
Here’s a link to a similar question. You can see my answer there. Why POST[‘submit’] is set when I reload?
The basic answer is to look into post/redirect/get, but since it is easier to see by example, just check the link above.
My usual technique for this is:
You can’t, this is treated by the browser, not by any programming language. You can use AJAX to make the request or redirect the user to the same (or another) page.
The «best» way to do this is Post / Redirect / Get
After the post send a 302 header pointing to the success page
This will remove the annoying confirm submission on refresh, the code is self-explanatory:
You may pass also the initial page URL to set the browser back button.
So you just need to think logically and make it idiot proof for your users.
22 ответа
Заголовок запроса содержит некоторые данные POST. Независимо от того, что вы делаете, при перезагрузке страницы запрос будет отправлен снова.
Постарайтесь как можно больше всегда отделять (в разных файлах) ваш скрипт вида (в основном html) от скрипта вашего контроллера (бизнес-логика и прочее). Таким образом, вы всегда будете отправлять данные в отдельный скрипт контроллера, а затем перенаправлять обратно в скрипт представления, который при визуализации не будет содержать данных POST в заголовке запроса.
Это работает для меня:
Вы должны добавить в заголовок директиву no cache:
Таким образом, вы вернетесь на новую страницу, все данные POST будут очищены.
Я вижу, на это был дан ответ. Однако я столкнулся с той же проблемой и исправил ее, добавив следующее в заголовок php-скрипта.
Это очень простой трюк, при котором мы перезагружаем страницу без переменной post.
Данные Post можно очистить с помощью некоторых уловок.
Если так или иначе, проблема связана с множественными вставками в вашу базу данных «при обновлении». Проверьте мой ответ здесь Отключить переменные сообщения после отправки формы. Это должно помочь.
Я вижу, что это старая ветка, просто подумал, что отдам свои 2 цента. Не уверен, что это подойдет для любого сценария, но это метод, который я успешно использую в течение нескольких лет:
На самом деле не удаляет значения POST-ed из браузера, но что касается вашего php-скрипта ниже этих строк, переменных POST больше нет.
Это сработало для меня
Вы также можете передать исходный URL-адрес страницы, чтобы установить кнопку браузера назад.
Это удалит надоедливую отправку подтверждения при обновлении, код не требует пояснений:
После публикации отправьте заголовок 302, указывающий на страницу успеха.
Вы не можете, это лечит браузер, а не какой-либо язык программирования. Вы можете использовать AJAX, чтобы сделать запрос или перенаправить пользователя на ту же (или другую) страницу.
Моя обычная техника для этого:
$ _POST должен заполняться только при запросах POST. Браузер обычно отправляет GET-запросы. Если вы попали на страницу через POST, он обычно спрашивает вас, следует ли повторно отправлять данные POST, когда вы нажимаете кнопку «Обновить». Он просто снова отправляет данные POST. Для PHP это выглядит как другой запрос, хотя семантически он содержит те же данные.
Это частый вопрос здесь.
Вот ссылка на аналогичный вопрос. Здесь вы можете увидеть мой ответ. Почему при перезагрузке устанавливается POST [‘submit’]?
Простое решение PHP для этого:
Чтобы запретить пользователям обновлять страницу или нажимать кнопку «Назад» и повторно отправлять форму, я использую следующий небольшой трюк.
Данные POST теперь находятся в сеансе, и пользователи могут обновлять, сколько захотят. Это больше не повлияет на ваш код.
Заголовок запроса содержит некоторые данные 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-формы
Я делаю простую форму, с которой сталкиваюсь, когда я отправляю значения формы, которые все еще остаются в поле. и я хочу очистить его после УСПЕШНОГО представления. Пожалуйста помоги.
Любая помощь будет назначена
Они остаются в полях, потому что вы явно говорите PHP, чтобы заполнить форму представленными данными.
Или, если удастся, перенаправить пользователя на другую страницу:
Данные 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, например:



