СКРИПТЫ alt phpjshtmlcssblog
ТЕГИ:
php (267)
js (136)
html (132)
css (98)
html tags (58)
edit text (37)
jquery (36)
form html (29)
php array (28)
foto (23)
fonts (22)
forum (19)
atom (18)
html book (17)
board (17)
Показать еще :
js method (16)
svg (16)
hosting (15)
php file (15)
color (14)
osclass (13)
htaccess (13)
ruweb.net (13)
table (12)
path (12)
icon (11)
php date (11)
online (11)
info (11)
js delete (11)
notepad (11)
yandex (11)
input (11)
php img (10)
url (10)
jsphp (10)
form (8)
cookie (7)
task (7)
php url (7)
comment (7)
ftp (6)
click (6)
js url (6)
value (5)
reg.ru (5)
mb (5)
adminka (5)
js id (4)
select (4)
search (4)
bbcode (4)
js copy (4)
js form (4)
iframe (3)
js time (3)
vs code (3)
captcha (3)
vk (3)
ukoz (2)
browser (2)
dosite (2)
seo (2)
tag hr (2)
js post (2)
sitemap (2)
console (2)
header (1)
domen (1)
smile (1)
ssl (1)
books (1)
numbers (1)
archive (1)

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

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

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

  1. Пример повторной отправки формы
  2. Отключаем повторную отправку формы php
  3. Еще вариант отключения повторной отправки формы. + скачать...

  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".


    И далее вы должны получить вот такой результат:
    Пример повторной отправки формы
    Пример повторной отправки формы

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

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

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

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


  2. Отключаем повторную отправку формы 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" на якорь не срабатывает... пока не знаю в чем причина.

    Ищу...!

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

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


  3. Еще вариант отключения повторной отправки формы.

    Как избавиться от повторной отправки формы? Для этого нам понадобится...

    Сделать отдельную страницу, на которую произойдет переадресация после выполнения php.

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

    Для вывода результата... тоже можно использовать сессию.

    После всех манипуляций... уничтожаем сессию.

    Об использовании этого варианта отключения повторной отправки формы?

    Можно ли использовать такой вариант отключения повторной отправки формы? Вполне! Этот вариант

    Как происходит процесс отключения повторной отправки формы в php?

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

    Пример формы, чтобы отправить первичный post запрос.

    <form method="post">
    <input type="text" name="povtornaya_otpravka_fomyi" value="Здесь текст">
    <input type="submit" value="Нажми на меня" name="submit1">
    </form>

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

    <a name="echo_redirect_text"></a>

    Далее нам нужен скрипт php, который обработает наш post запрос, он будет состоять из двух частей:
    3.1). Первая часть скрипта - располагаем в самом верху страницы, он будет состоять из:
    3.1.1). Проверяем - отправлен ли запрос post с нашим именем:

    if ($_POST["povtornaya_otpravka_fomyi"])

    3.1.2). Создаем сессию "$_SESSION[redirect]" - куда поместим адрес страницы, куда будем возвращаться, прописываем вручную либо через php + добавляем якорь.
    3.1.3). Создаем вторую сессию "$_SESSION[redirect_text]" - куда помещаем текст(например...)
    3.1.4). Далее exit, чтобы скрипт остановился. И туда помещаем переадресацию html, с адресом страницы, куда будем перемещаться.
    if ($_POST["povtornaya_otpravka_fomyi"])
    {
    $_SESSION[redirect] = 'адрес_страницы_куда_будем_возвращаться#echo_redirect_text';
    $_SESSION[redirect_text] = strip_tags($_POST["povtornaya_otpravka_fomyi"]);
    exit ('<meta http-equiv="Refresh" content="0; URL=адрес_страницы_куда_будем_отправлять">');
    }

    3.2). Вторая часть скрипта, расползается ниже того, чтобы представлен выше, в двух словах... убиваем сессии, выводим результат:
    if($_SESSION[redirect])
    {
    unset($_SESSION[redirect]);
    $echo_redirect_text = '<blackblock>'.$_SESSION[redirect_text].'</blackblock>';
    unset($_SESSION[redirect_text]);
    }
    echo $echo_redirect_text;

    Далее нам потребуется отдельный файл, это строка "адрес_страницы_куда_будем_отправлять" - туда помещаем адрес вашей страницы. Наша страница, которая будет использоваться в примере.Вы можете сходить посмотреть на неё, хотя вы там ничего не увидите, кроме белого листа...wall

    4.1). Скрипт php на этой странице... кратко...
    4.1.1). проверяем запустилась ли сессия(на всякий пожарный.)
    4.1.2). проверяем существует ли сессия "$_SESSION[redirect]".
    4.1.3). Если да, то возвращаемся на страницу с которой пришли.
    <?
    if(!$_SESSION) {session_start(); }
    if($_SESSION[redirect])
    {
    exit( '<meta http-equiv="Refresh" content="0; URL='.$_SESSION[redirect].'">');
    }
    Собирать скрипт воедино не будем и выводить тоже. Его можно будет скачать... скачать...

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

    Переходим к примеру. который отключит повторную отправку формы!

    В поле ввода введите свой текст, либо оставьте так...

    Нажмите кнопку Удали повторную отправку формы! :

    После получения ответа... попробуйте нажать "F5"...

    Вы ничего не увидите, страница просто перезагрузится... му убрали повторную отправку формы!


Пользуйтесь на здоровье! Не забудьте сказать спасибо
Теги :
повторная отправка формы
php повторные запросы страницы
подтвердите повторную отправку формы
повторная отправка формы php
как убрать повторную отправку формы
запретить повторную отправку формы
как убрать повторную отправку формы php
повторная отправка формы при обновлении страницы
защита от повторной отправки формы
повторная отправка формы после обновления страницы
подтвердите повторную отправку формы как убрать php
запретить повторную отправку формы php
что такое повторная отправка формы

Сообщение системы комментирования :

01.09.2021

Форма пока доступна только админу... скоро все заработает...надеюсь...

Последние комментарии :
Марат :
17.10.2021 39:28
Давно не делал и страницу и видео в один день... чет, как-то выжитый как…
подробнее.
Марат :
10.10.2021 17:20
Добавлен новый смайл
подробнее.
Марат :
05.10.2021 26:37
Страница sitemap.html восстановлена. Но будут вводиться только страницы…
подробнее.
Марат :
04.10.2021 38:22
Добавил несколько вариантов поставить смайл на страницу своего сайта! 3 варианта! Кроме варианта скачать…
подробнее.
Марат :
17.09.2021 28:02
Установка Яндекс поиск на сайт! Контент обновлен на 100%. Такое ощущение, что старый текст не я…
подробнее.
Марат :
07.09.2021 23:21
Частенько приходится исправлять ошибки и вот...как-то я обратил внимание на надпись: "нажми ctrl enter" на сайте и…
подробнее.