Html как убрать подтверждение повторной отправки формы
Перейти к содержимому

Html как убрать подтверждение повторной отправки формы

  • автор:

7 исправлений для всплывающего окна «Подтвердить повторную отправку формы»

Появляется ли диалоговое окно подтвердить повторную отправку формы в Chrome, когда вы нажимаете кнопку перезагрузки во время отправки данных. Это также происходит, когда вы обновляете Chrome, а также после нажатия кнопки Назад.

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

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

Но почему это происходит?

  1. Нет нормального подключения к Интернету.
  2. Страница, содержащая форму определенного типа, была обновлена.
  3. В середине отправки формы; вы пытаетесь нажать кнопку «Назад».

Например, покупка одного и того же товара дважды. Если вы обновите страницу после покупки чего-либо, с вашей кредитной карты может быть списана сумма дважды, если вас не попросят «подтвердить повторную отправку формы». Многие пользователи Chrome жаловались на эти отчеты об ошибках; эта проблема осталась актуальной.

Плакат SuperUser говорит, что модуль Chrome, который выполняет переадресацию назад/вперед, построен настолько слабо, что его невозможно исправить.

Как отключить подтверждение ошибки повторной отправки формы?

Ниже приведены методы, с помощью которых можно устранить ошибку «Подтвердить повторную отправку формы» в Chrome.

Способ № 1. Проверьте подключение к Интернету.

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

Способ №2 Сбросить настройки браузера Chrome

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

Шаг 1. Откройте Chrome и нажмите на три вертикальные точки в правом верхнем углу веб-страницы.

Шаг 2. Нажмите «Настройки» в раскрывающемся меню.

Шаг 3. Прокрутите страницу до пункта «Показать дополнительные настройки».

Шаг 4. Еще раз прокрутите вперед, пока не найдете параметр «Восстановить исходные настройки по умолчанию», и нажмите на него.

Шаг 5. Наконец, перед выходом нажмите «Сбросить настройки». Перезагрузите Chrome, чтобы увидеть, изменилось ли это.

Способ №3 Отключить поврежденные расширения

Расширения Chrome постоянно повреждаются. Простое отключение и повторное включение расширений может решить вашу проблему.

Для этого выполните следующие шаги.

Шаг 1. Откройте Chrome и нажмите на три вертикальные точки в правом верхнем углу веб-страницы.

Шаг 2.Нажмите «Дополнительные инструменты» и выберите параметр «Расширения».

Шаг 3. Перейдите и найдите поврежденное расширение. Отключите, а затем снова включите его

Шаг 4. Наконец, перезапустите Chrome, чтобы увидеть, продолжает ли всплывать диалоговое окно.

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

Метод № 4. Использование шаблона PRG

PRG означает шаблон POST/Redirect/GET. Как указывалось ранее, идеальным методом хранения контента в онлайн-формах должно быть использование шаблона PRG. Решением для исправления ошибки «Подтвердить повторную отправку формы» может стать переключение метода POST на весь шаблон PRG. Всякий раз, когда на какой-либо странице требуется форма, спроектируйте ее таким образом, чтобы она не отправляла данные непосредственно на сервер. Вместо этого попробуйте добавить одну страницу между этой страницей и фактической страницей после нее.

Он должен пройти более одного шага, чтобы окончательный механизм изменился на GET, а не на POST, что ограничивало появление диалогового окна. Поэтому при случайном обновлении страницы не будет всплывающего диалогового окна «Подтвердить повторную отправку формы». Пример этого предложен Майком из Stack Overflow:

if(!empty($_POST[‘имя пользователя’] && !empty($_POST[‘пароль’])) <

$user = новый пользователь;

$user-›login($_POST[‘имя пользователя’], $_POST[‘пароль’]);

echo «Ваше имя пользователя и пароль неверны»;

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

Способ № 5 с использованием кнопки отправки AJAX

Попробуйте использовать функцию AJAX jQuery после отправки формы. Для этого просто добавьте в код своей страницы следующую функцию:

Шаг 1:

данные: строка данных,

//Все, что вы хотите сделать при успешной отправке

Данные, введенные в форму в соответствии с файлом PHP, предоставленным в качестве свойства URL, И если данные проверены, это означает, что это была успешная отправка данных формы, и, таким образом, возвращается false, поэтому даже если страница перезагружается, она не t отправить новый запрос, поэтому диалоговое окно «Подтвердить повторную отправку формы» не появится.

Способ №6. Добавление тега внутрь детали ‹head›

Это метод, который вы можете попробовать, если ошибка возникает при ручном обновлении веб-страницы. Если вы можете получить доступ к исходному коду веб-страницы, добавьте следующий тег в раздел ‹head› страницы. Чтобы сделать это, выполните указанные шаги:

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

Шаг 1. Получите доступ к исходному коду веб-страницы.

Шаг 2. Добавьте следующий тег в раздел ‹head› веб-страницы. Расширение может отличаться в зависимости от того, которое вы используете:

‹мета http-equiv=”обновить” содержание=”60;

Способ №7 Удалить не магазин

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

header(‘Cache-Control: no-store, no-cache, must-revalidate, max-age=0’);

Выполните указанные шаги:

Шаг 1. удалите из заголовка слова «без магазина».

Шаг 2. Теперь обновите страницу в форме.

Шаг 3. Наконец, повторно введите форму и обновите ее, чтобы увидеть, появляется ли всплывающее окно.

Вывод

Ошибка «Подтвердить повторную отправку формы» — это ошибка, о которой сообщали слишком много людей в прошлом, и вполне понятно, почему она может вызывать разочарование у пользователей. Если вы кого-то решения ошибки, вы пришли в нужное место.

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

Можно ли отключить уведомление про повторную отправку формы?

После перехода по форме на другую страницу, и нажатие F5 выводится модальное окно:

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

Можно ли как то отключить это уведомление программно?

Можно. Для этого требуется на странице-приёмнике (которая получает данные формы) выполнить редирект (redirect) на другую (или эту же) страницу.

При нажатии F5 браузер передаёт все данные, необходимые данной странице для отображения (в вашем случае — данные формы). И чтобы эти данные не передавались — нужно отправить браузер на страницу, не передавая при этом никаких данных формы.

Например, если вы добавляете на Stackoverflow новый вопрос — при отправке формы на сервер он добавляет новую запись в базу данных с переданными вами данными, после чего получает из базы ID только что созданного вопроса — и редиректит вас по URL вида: stackoverflow.com/question/, где QUESTION_ID — это идентификатор вашего вопроса в базе. В результате, после отправки вопроса и обновлении страницы, на которую вы попали, вы не отправляете ваш вопрос снова и снова с каждым обновлением (засоряя базу данных дублями вопроса), а просто обновляете страницу с результатом.

Danil Valov's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.6.13.43492

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как исправить подтверждение повторной отправки формы при ошибке обновления

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

Исправить Подтвердить повторную отправку формы при обновлении

Подтверждение повторной отправки формы при ошибке обновления означает, что при отправке формы информация не была отправлена ​​на сервер, на который она должна была быть отправлена. Это может быть проблема с вашей стороны, например, вы не подключены к Интернету или ваше Интернет-соединение нестабильно и прерывается до того, как информация может быть отправлена. Это может быть проблема на стороне веб-сайта, т. Е. Сервер не отвечает, анализ данных занимает слишком много времени, сервер ожидает другие данные и т. Д.

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

1. Проверьте сеанс браузера.

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

Вы не используете окно просмотра в режиме инкогнито
Вы не обновляете форму вручную после нажатия кнопки «Отправить / отправить».
У вас не установлены приложения или расширения, которые могут прервать сеанс, например VPN, монитор сетевого трафика, прокси, переключатель агента пользователя и т. Д.

Если ошибка не исчезнет, ​​стоит использовать другой браузер, чем тот, который вы используете. Используйте современный браузер, например Chrome или Opera, вместо Firefox или Safari. Если вы видите эту ошибку в мобильном браузере, переключитесь на браузер для настольных компьютеров.

2. Удалите данные браузера и повторите попытку.

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

Очистить данные браузера в Chrome;

Откройте Chrome.
Нажмите кнопку «Дополнительные параметры» в правом верхнем углу и выберите «Настройки».
В разделе «Конфиденциальность и безопасность» нажмите «Очистить данные просмотра».
Выберите Файлы cookie и другие данные просмотра и Кэширование изображений и файлов.
Щелкните Очистить данные.

Fire Fox

Чтобы очистить данные просмотра в Firefox;

Откройте Firefox.
Нажмите кнопку «Дополнительные параметры» в правом верхнем углу и выберите «Настройки».
Перейдите в раздел Конфиденциальность и безопасность.
Щелкните Очистить данные.
Выберите Файлы cookie и данные сайта и Кэшированный веб-контент.
Щелкните Очистить данные и перезапустите браузер.
Отправьте форму еще раз.

3. Отключите расширения браузера.

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

Отключить расширения в Chrome;

Откройте Chrome.
Нажмите кнопку дополнительных параметров в правом верхнем углу и выберите Дополнительные инструменты> Расширения.
Выключите переключатель рядом с каждым добавочным номером.

Fire Fox

Чтобы отключить надстройки в Firefox;

Откройте Firefox.
Нажмите кнопку «Дополнительные параметры» в правом верхнем углу и выберите «Надстройки и темы».
Выключите переключатель рядом с каждой надстройкой.

4. Исправьте Подтверждение повторной отправки формы при обновлении для администраторов веб-сайтов.

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

POST против GET

Формы PHP могут отправлять данные одним из двух способов; POST или GET. Если вы используете метод POST, вы столкнетесь с ошибкой подтверждения повторной отправки формы при обновлении, тогда как вы не увидите ее с помощью метода GET.

Это означает, что существует проблема с тем, как команда POST была добавлена ​​в форму, или что пользователь обновляет форму перед ее отправкой. Метод POST следует использовать только в случае необходимости, например, с полями сброса пароля, а не с полями обычных форм.

Отключить подтверждение повторной отправки в браузере

Браузеры могут использовать собственные проверки форм. Обычно это функция, но вы можете заставить страницу игнорировать проверку браузера. Для этого вы можете использовать форму AJAX. Вы по-прежнему сможете использовать с ним функцию POST, если не хотите переключаться на GET.

Заключение

Ошибка подтверждения повторной отправки формы при обновлении может появиться, если вы обновите форму перед ее отправкой. Если вы видите ошибку при отправке формы, более чем вероятно, что проблема на стороне сервера. Возможно, это не в ваших силах исправить.

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

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

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

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

<?php
if (!empty($_POST[«sqr»])) <
echo «Квадрат числа «.$_POST[«x»].» равен «.pow($_POST[«x»], 2);
>
?>
<form name=»form» action=»» method=»post»>
<div>
<input type=»text» name=»x» />
<br />
<input type=»submit» value=»Возвести в квадрат» name=»sqr» />
</div>
</form>

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

Теперь поговорим о способах решения данной проблемы. Первый способ — выделить скрипт обработки в отдельный файл. Тогда в атрибуте action у тега form надо добавить путь к этому скрипту. А сам скрипт должен сохранять куда-нибудь результат своих действий, либо переменные пришедшие на скрипт, а после делать редирект обратно. В общем, смотрите код скрипта:

<?php
session_start();
$_SESSION[«x»] = $_POST[«x»];
header(«Location: «.$_SERVER[«HTTP_REFERER»]);
exit;
?>

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

<?php
session_start();
if (isset($_SESSION[«x»])) echo «Квадрат числа «.$_SESSION[«x»].» равен «.pow($_SESSION[«x»], 2);
>
?>
<form name=»form» action=»request.php» method=»post»>
<div>
<input type=»text» name=»x» />
<br />
<input type=»submit» value=»Возвести в квадрат» name=»sqr» />
</div>
</form>

Недостаток этого подхода очевиден — приходится создавать ещё один файл для такого простого скрипта. Поэтому рассказываю и про второй способ, как можно избежать повторной отправки формы:

<?php
session_start();
if (!empty($_POST[«sqr»])) <
$_SESSION[«x»] = $_POST[«x»];
header(«Location: «.$_SERVER[«REQUEST_URI»]);
exit;
>
if (isset($_SESSION[«x»])) echo «Квадрат числа «.$_SESSION[«x»].» равен «.pow($_SESSION[«x»], 2);
?>
<form name=»form» action=»» method=»post»>
<div>
<input type=»text» name=»x» />
<br />
<input type=»submit» value=»Возвести в квадрат» name=»sqr» />
</div>
</form>

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

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

  • Либо делать обработку в отдельном файле, а затем оттуда делать редирект назад.
  • Либо делать обработку в том же файле, что и форма, но при этом после обработки делать редирект на ту же страницу.

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

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

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