подтвердите повторную отправку формы как убрать php

Как предотвратить повторную отправку формы при обновлении страницы (F5 / CTRL+R)

У меня есть простая форма, которая отправляет текст в моей таблице SQL. Проблема в том, что после того, как пользователь отправляет текст, они могут обновить страницу, и данные будут отправлены снова без повторного заполнения формы. Я мог бы перенаправить пользователя на другую страницу после отправки текста, но я хочу, чтобы пользователи оставались на той же странице.

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

18 ответов:

с помощью моего веб-сайта я сохраню сообщение в файле cookie или сеансе, перенаправлю после публикации, прочитаю файл cookie/сеанс, а затем очистите значение этой переменной сеанса или файла cookie.

Я также хотел бы отметить, что вы можете использовать подход javascript, window.history.replaceState чтобы предотвратить повторную отправку на кнопку Обновить и назад.

Я бы все равно рекомендовал подход Post/Redirect/Get, но это новое решение JS.

вы действительно должны использовать шаблон Post Redirect Get для обработки этого, но если вы каким-то образом оказались в положении, когда PRG нежизнеспособен (например, сама форма находится в include, предотвращая перенаправления), вы можете хэшировать некоторые параметры запроса, чтобы сделать строку на основе содержимого, а затем проверить, что вы ее еще не отправили.

вы можете повторно отправить форму через переменную сеанса, например

использовать заголовок и перенаправить страницу.

header(«Location:your_page.php»); вы можете перенаправить на ту же страницу или другую страницу.

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

вы также можете перенаправить на ту же страницу.

Если вы делаете что-то вроде комментариев и вы хотите, чтобы пользователь оставался на той же странице, вы можете использовать AJAX для обработки формы представления

довольно верный способ реализовать уникальный идентификатор в пост и кэшировать его в

тогда в вашем коде сделайте следующее:

Итак, у вас есть HTML-форма:

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

после обработки POST данные ЭД вы делаете небольшой

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

как вы можете видеть данные формы POST Эд process.php сценарий.
Этот скрипт процесс POST Эд данные и рендеринг /the/result/page сразу с:

в качестве другого решения я прошу запрос the Mozilla FireFox команда, чтобы позволить пользователям устанавливать NextPage заголовок, который будет работать как и сделать post/redirect/get шаблон устарел.

короче. Когда серверная форма процесса POST данные успешно это:

браузер, в свою очередь, когда вижу NextPage заголовок:

я думаю, что это было бы превосходно, если реализовали бы, не так ли? =)

просто перенаправьте его на ту же страницу после использования данных формы, и он работает. Я уже пробовал.

уточненная версия сообщения Moob. Создайте хэш сообщения, сохраните его как файл cookie сеанса и сравните хэши каждого сеанса.

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

unset ($_POST);

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

заголовок (‘Location:’.$_SERVER [‘PHP_SELF’]);

в принципе, вам нужно перенаправить с этой страницы, но это все еще может создать проблему, пока ваш интернет медленный (заголовок перенаправления с сервера)

пример базового сценария :

нажмите на кнопку Отправить дважды

на стороне клиента

в вашей html форме поставьте это:

Ps: Если вы используете форму Get, вы можете легко изменить все сообщения с GET, и это тоже работает.

Я использую эту строку javascript, чтобы заблокировать всплывающее окно с запросом на повторную отправку формы при обновлении после отправки формы.

просто поместите эту строку в нижний колонтитул вашего файла и увидеть магию

Использование шаблона Post / Redirect / Get из ответа Keverw-хорошая идея. Однако вы не можете оставаться на своей странице (и я думаю, что это было то, что вы просили?) Кроме того, это может иногда fail:

если веб-пользователь обновляется до завершения первоначальной отправки из-за задержки сервера, что приводит к дублированию запроса HTTP POST в некоторые агенты пользователей.

другой вариант будет хранить в сеансе, если текст должен быть записан в вашу базу данных SQL следующим образом:

Как говорили другие, невозможно выйти из использования post/redirect/get. Но в то же время это достаточно легко сделать, что вы хотите сделать на стороне сервера.

на странице POST вы просто проверяете пользовательский ввод, но не действуете на нем, вместо этого вы копируете его в массив сеанса. Затем вы снова перенаправляетесь на главную страницу отправки. Ваша главная страница отправки начинается с проверки наличия массива сеансов, который вы используете, и если да, то скопируйте его в локальный массив и снимите его. Оттуда вы можете действовать на него.

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

Источник

Как отправить форму в php, чтобы она не отправлялась повторно, после обновления страницы

Доброе время суток, уважаемые HABRовчане!

Сегодня тема пойдет об отправке формы на html-страничке, чтобы, при повторном обновлении, она не отправлялась заново в БД.

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

Во первых, почти все источники предлагают делать это таким образом:

Но, проблема в нем следующая, если вы, уже где то в начале страницы отправили заголовки, то на вас будут ругаться, мол, «заголовки отправлены, зачем ты хочешь, чтобы я это сделал еще один раз, угомонись!»

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

Меня же, все способы, встретившиеся на просторах интернета, не устроили. И я решила сделать то, что будет удобно мне и не будет занимать большое количество переменных/времени/ресурсов.
Приступим.

Для начала, создадим простенькую форму.

Затем добавим в форму метод отправки, действие и имя:
Действие будет происходить на другой странице, для удобства и дальнейшей функциональности.

Получается вот такой код:

Затем, мы создаем файлик redir.php и работаем над ним:

Все. Как видите это просто, быстро и удобно!

Источник

Отмена повторной отправки формы

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

Мне часто задают вопросы относительно отмены повторной отправки формы. Например, Вы сделали форму добавления комментария, добавили обработчик на эту же страницу. Затем при добавлении комментария он успешно добавляется, но стоит пользователю нажать F5, как форма будет отправлена ещё раз. А F5 пользователь может легко нажать, если страница будет долго грузиться. В итоге, вместо 1-го комментария будет целых 2, а то и больше. В этой статье я покажу, как этого можно избежать.

Для начала разберём более подробно проблему на примере этого кода:

Нажав на кнопку «Возвести в квадрат«, Вы увидите результат работы скрипта. Но стоит после этого пользователю нажать F5, как скрипт снова будет выполняться. В данном случае, это не так критично, как с добавлением комментарием, однако, зачем нужна лишняя нагрузка на сервер?

А код страницы с формой теперь будет выглядеть так:

Подведу итог того, как отменить повторную отправку формы:

Вот так это делается в простых скриптах. Да и, в сложных, в конечном счёте делается то же самое.

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 11 ):

Или написать в форме action=».»

При таком примере писать придется. Редирект убьет все POSTы

А я делал по проще: в форму добавил скрытый input, в котором храниться случайное число генерирующееся php. А также при генерации оно забивается в сессии. Затем при принятии формы сначала проверяется совпадение числа, и если нет совпадения форма не обрабатывается. Это как скрытая капча, которая сама вводиться

Я сделал так: if (isset($_POST[‘knopka’]))

А меня интересует совсем противоположный вопрос! А как зделать чтоб отправка формы продублировалясь три раза с интервалом в секунду! Какой обрабочик нужно добавить в код?

Здравствуйте. Не очень понял как делать. Изучаю Ваш курс основы PHP. Перепроверил код, но все равно при обновлении страницы комментарий дублируется. А у Вас на видео все нормально, без всяких редиректов. Вот сам код:

Добавить запись

Записи в гостевой книге:

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

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Запретить повторную отправку POST запроса при обновлении страницы

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Повторение POST запроса при обновлении страницы
Доброе время суток, может кто-нибудь подсказать можно ли избавиться от повторного отправления POST.

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать phpПовторный POST при обновлении страницы
Возникла такая проблема: Есть форма, которая добавляет данные в mysql, после чего чуть ниже.

webphp, КАК вывести информацию об ошибке? Если не верно что то заполнено в форме. Писать состояние ошибки в переменную сессии? подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

Поэтому грамотный подход разделяет функции чтения/отображения и записи/сообщений в два отдельных скрипта.

Как например это устроено на форуме и вообще практически всюду. Это кто хочет себе нажить проблем, тот старается все в одну кучу запихать.

У меня под ошибки и сообщения выведен целый класс, записываю код ошибки в куку, а js уже показываю что то вроде popup окна с сообщение.
Вобще можно еще сделать глобальную промежуточную страницу, которая в свою очередь будет отображать все сообщения об ошибках и успехах и возвращать юзера на предыдущую страницу, строго и сердито =)

Сами придумали? Откуда браузер узнает о том посте, если вы открыли страницу чтения гетом, или другим постом?

Пост кешируется браузером откуда и обсуждаемый эффект.

Источник

Как предотвратить повторную отправку формы при обновлении страницы (F5 / CTRL + R)

У меня есть простая форма, которая представляет текст в мою таблицу SQL. Проблема в том, что после того, как пользователь отправит текст, он может обновить страницу, и данные снова будут отправлены без повторного заполнения формы. Я мог бы перенаправить пользователя на другую страницу после отправки текста, но я хочу, чтобы пользователи оставались на той же странице.

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

Решение

На моем веб-сайте я буду сохранять сообщение в файле cookie или сеансе, перенаправлять после сообщения, читать файл cookie / сеанс, а затем очищать значение этой переменной сеанса или переменной cookie.

Другие решения

Я также хотел бы отметить, что вы можете использовать подход JavaScript, window.history.replaceState для предотвращения повторной отправки на кнопку «Обновить» и «Назад».

Я все еще рекомендую подход Post / Redirect / Get, но это новое решение JS.

Вы действительно должны использовать шаблон Post Redirect Get для обработки этого, но если вы каким-то образом оказались в положении, где PRG нежизнеспособен (например, сама форма находится во включении, предотвращающем перенаправления), вы можете хешировать некоторые параметры запроса создать строку на основе содержимого, а затем проверить, что вы ее еще не отправили.

Когда форма обработана, вы перенаправляете на другую страницу:

Вы также можете перенаправить на ту же страницу.

если вы делаете что-то вроде комментариев и хотите, чтобы пользователь оставался на той же странице, вы можете использовать Ajax для обработки отправки формы

Используйте заголовок и перенаправьте страницу.

header(«Location:your_page.php»); Вы можете перенаправить на ту же страницу или другую страницу.

Вы можете предотвратить повторную отправку формы через переменную сессии.

Довольно верный способ — внедрить уникальный идентификатор в сообщение и кэшировать его в

Затем в вашем коде сделайте это:

Я нашел следующий обходной путь. Вы можете избежать перенаправления после обработки POST запрос, манипулируя history объект.

Итак, у вас есть HTML-форма:

Когда вы обрабатываете эту форму на своем сервере, вы вместо перенаправления пользователя на /the/result/page путем настройки Location заголовок как это:

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

После обработки POST редактируемые данные, которые вы отображаете, небольшие

подтвердите повторную отправку формы как убрать php. Смотреть фото подтвердите повторную отправку формы как убрать php. Смотреть картинку подтвердите повторную отправку формы как убрать php. Картинка про подтвердите повторную отправку формы как убрать php. Фото подтвердите повторную отправку формы как убрать php

как вы можете видеть данные формы POST ед process.php скрипт.
Этот скрипт процесс POST редактирование данных и рендеринг /the/result/page однажды с:

В качестве другого решения я прошу запрос функции Mozilla FireFox команда, чтобы позволить пользователям настроить NextPage заголовок, который будет работать как Location заголовок и сделать post/redirect/get шаблон устарел.

Короче. Когда серверный процесс формируется POST данные успешно это:

Браузер в свою очередь, когда увидите NextPage заголовок:

Я думаю, что это было бы замечательно, если бы оно было реализовано, не так ли? =)

Источник

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

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