СКРИПТЫ
ТЕГИ:
php (283)
js (166)
html (138)
css (116)
html tags (61)
jquery (40)
edit text (37)
php array (30)
form html (29)
fonts (27)
ruweb.net (23)
foto (22)
atom (20)
online (19)
forum (19)
svg (18)
Показать еще :
board (17)
hosting (17)
html book (16)
php file (16)
js method (16)
input (15)
color (15)
link (15)
php date (15)
js events (14)
htaccess (13)
table (13)
osclass (13)
path (12)
js delete (12)
select (12)
download (11)
img (11)
form (11)
dw block (11)
notepad (11)
icon (11)
php time (11)
keyboard (11)
php img (11)
jsphp (11)
mouse (10)
url (10)
js time (9)
info (9)
yandex (9)
php url (7)
comment (7)
cookie (7)
dosite (7)
hover (7)
task (7)
js url (6)
list (6)
iframe (6)
click (6)
year (6)
mysql (6)
search (5)
ftp (5)
chart (5)
browser (5)
js id (5)
mb (5)
php get (5)
heading (5)
adminka (5)
value (5)
symbols (4)
vk (4)
js form (4)
console (4)
mounth (4)
submit (4)
reg.ru (4)
bbcode (4)
day (4)
week (4)
captcha (3)
js img (3)
ucoz (3)
line (3)
ssl (3)
scandir (3)
pages (3)
js post (3)
https (3)
vs code (3)
padding (3)
рся (2)
second (2)
money (2)
youtube (2)
video (2)
typeof (2)
seo (2)
sitemap (2)
title (2)
tag hr (2)
cursor (2)
js vars (2)
counter (2)
arrows (2)
base64 (2)
qr kod (2)
height (2)
details (2)
archive (1)
numbers (1)
domen (1)
books (1)
куб (1)
scroll (1)
smile (1)
header (1)
windows (1)
google (1)
speed (1)

Запретить/отключить повторную отправку формы php

Довольно часто встречается проблема"повторной отправки формы в php". На самом деле - "отключить повторную отправку формы в php" очень просто! Рассмотрим это с примерами.

Подробно о повторной отправке формы php

  1. Пример повторной отправки формы
  2. Убрать повторную отправку формы php
  3. Форма для проверки повторной отправки формы
    Скачать - что в архиве?
  4. Отключаем повторную отправку формы php

  1. Пример повторной отправки формы

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

    Html + Php :

    <a name="result"></a>

    <?

      if (trim($_POST["example"])) {

        echo "POST запрос был отправлен" . strip_tags($_POST[example]);

      }

    ?>

    <form action="#result" method="post">

      <input type="text" name="example" value="привет мир">

      <input type="submit" value="Нажми на меня" name="submit">

    </form>

    Разместим выше приведенный код прямо здесь:

    Что нужно сделать!?

    Нажмите кнопку "Нажми на меня".

    После перезагрузки страницы нажмите "F5".


    Форма скрыта
    action="#result" method="post">
    И далее вы должны получить вот такой результат:
    Пример повторной отправки формы
    Пример повторной отправки формы

    Если вы нажмете "продолжить", то первые данные отправятся второй раз на сервер.

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

    Нам это не нужно!

    Как избавиться от "повторной отправки формы!?"


  2. Убрать повторную отправку формы php.

    С самого начала давайте обговорим "логику убирания повторной отправки формы", а далее приступим к теории!

    Логика отключения повторной отправки формы №1

    Обрабатываем post на отдельной странице.

    На данную страницу отправляем с помощью action.

    У нас есть такая вещь как сессия - это будет контейнером для переноса полученного результата.

    Приступим к...

    Теория : "убрать повторную отправку формы".

    Для того, чтобы отключить повторную отправку формы Вам понадобится:

    Тег form.

    В тег помещаем action с адресом(это живой пример) :

    https://dwweb.ru/__a-data/__all_for_scripts/__examples/html/redirect.php

    Чтобы не оправлять бессмысленные "post"-ы, возьмем два типа number - это будет импровизированный калькулятор... соберем форму:

    <form action="https://dwweb.ru/__a-data/__all_for_scripts/__examples/html/redirect.php" method="post" class="variant_action">
     <input type="number" name="variant_action_1" required>
     <input type="number" name="variant_action_2" required>
     <input type="submit" value="Отключи повторную отправку" name="variant_action">
    </form>

    Добавим стили, чтобы наши "input"-ы выглядели чуть поинтереснее.


    Вторая страница.

    Перейдем ко второй странице(которая в action). На ней расположим:

    Проверим стартовала ли сессия - располагаем в самом верху.

    Примем два post с использованием strip_tags.

    Сложим их(у нас два числа - вы же можете отправлять и принимать любые post-ы).

    Помещаем в сессию полученное значение.

    Сделаем переадресацию назад на эту страницу.

    Если требуется вывести результат в сессии выводим с помощью echo

    echo $_SESSION[имя_сессии];

    Далее убиваем сессию.

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

    Соберем весь код и помещаем одну часть здесь на странице... вторую часть кода на второй странице...

    Пример удаления удаления повторной отправки формы через action

    Для того, чтобы "удалить повторную отправку формы через action" - введите :

    В первое поле - первое число.

    Во второе поле - второе число.

    И нажмите кнопку - "Отключи повторную отправку"


    Пример формы для отключения повторной отправки формы


    Скачать - что в архиве?

    В архиве приведенный пример теории:

    Файл №1 с формой:

    Вторая страница - полностью соответствует описанию

    Бонус!

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

    Скачать здесь.


  3. Отключаем повторную отправку формы php

    Чтобы отключить "повторную отправку формы php" нам придется немного изменить код, который мы написали ранее.

    Чем отличается выше приведенный код(в предыдущем пункте).

    Запускаем сессию:

    session_start();

    В условии

    if (trim($_POST["example1"]))

    Создаем сессию "$_SESSION[example1]" и предаем туда данные из "_POST".

    Далее header + refresh - перезагрузка.

    + exit, чтобы программа дальше не пошла.

    При перезагрузке проверяем существует ли сессия:

    if($_SESSION[example1])

    Если да, то передаем данные в переменную $echo1 + сессию уничтожаем

    $_SESSION[example1] ='';

    Соберем весь код отмены повторной отправки формы php

    <?

    session_start();

    if (trim($_POST["example1"]))

    {

      $_SESSION[example1] = 'POST запрос2 был отправлен = ' . strip_tags($_POST[example1]);

      header(" refresh: 0; url=#result1");

      exit;

    }


    if($_SESSION[example1])

    {

      $echo1 = '<blackblock>'.$_SESSION[example1].'</blackblock>';

      $_SESSION[example1] ='';

    }

    ?>


    <a name="result1"></a>

    <? echo '.$echo1;?>

    <form action="#result1" method="post">

      <input type="text" name="example1" value="привет мир">

      <input type="submit" value="Нажми на меня" name="submit1">

    </form>

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

    Ищу...!

    Как найду, так исправлю.

    Если у вас тоже не срабатывает, то выделенное красным можно удалить.

Пользуйтесь на здоровье! Не забудьте сказать спасибо
Теги :
повторная отправка формы
php повторные запросы страницы
подтвердите повторную отправку формы
повторная отправка формы php
как убрать повторную отправку формы
запретить повторную отправку формы
как убрать повторную отправку формы php
повторная отправка формы при обновлении страницы
защита от повторной отправки формы
повторная отправка формы после обновления страницы
подтвердите повторную отправку формы как убрать php
запретить повторную отправку формы php
что такое повторная отправка формы
форма php защита от повторов
Еще никто не прокомментировал! COMMENTS+   BBcode
аватар
🞨
Загрузить свой аватар
(max ширина, высота = 200px)

Подписаться + =

Счетчик в график :

Построение гравиков
Основа для графика : счетчик посещаемости.
Последние комментарии :
вывы :
05.06.2022 12:32
сейчас яндекс добавил индексацию js в…
подробнее.
Марат :
02.06.2022 20:14
Михаил :
02.06.2022 20:10
Ну вот только для этого может быть ;) А так, нет смысла…
подробнее.
Марат :
02.06.2022 15:59
Чтобы вы зашли на данную страницу и нажали на…
подробнее.
Михаил :
02.06.2022 14:33
Ну вот только для этого может быть :) А так, нет смысла…
подробнее.
Алексей :
26.05.2022 14:19
👍👍👍
подробнее.
ruweb
Страница загружена за : 0.02413 секунд. Подробнее