Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запрет повторной отправки формы / 25 сообщений из 29, страница 1 из 2
19.06.2016, 16:55
    #39258479
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
После отправки формы, СКРИПТОМ ОБРАБОТКИ отправки выводится сообщение о том что данные успешно отправлены. Но при обновлении этой страницы в брауере, выскакивает сообщение о том что данные будет повторно отправлены...

Некоторые браузеры просто тупо еще раз шлют данные на сервер. И потом получается то что на сриншоте http://itmages.ru/image/view/4444099/7c7023ac

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

Но может кто предложит вариант получше, или просто другой.

Есть идея что после отправки надо сделать редирект на страницу сообщения об успегной отправке. Но для этого нужно иметь эту страницу. ИЛИ редирект на страницу с параметром гет (?send=ok).

Вообщем я хочу увидеть разные варианты решения.
...
Рейтинг: 0 / 0
19.06.2016, 16:59
    #39258481
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskin, зачем Вам разные варианты?

Post/Redirect/Get — Википедия

Модель поведения веб-приложений, используемая разработчиками для защиты от повторной отправки данных веб-форм (от т. н. double submit problem). Модель PRG обеспечивает интуитивно понятное поведение веб-приложений при обновлении страниц в браузере и при использовании закладок в браузере.
...
Рейтинг: 0 / 0
19.06.2016, 17:12
    #39258485
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinЕсть идея что после отправки надо сделать редирект на страницу сообщения об успегной отправке.Можно, конечно, но не обязательно. Достаточно редиректить "на саму себя", на ту же самую страницу.
...
Рейтинг: 0 / 0
19.06.2016, 17:16
    #39258487
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
skyANAaliskin, зачем Вам разные варианты?
.
??? как "зачем". Хочу знать, просвещаться и развиваться ;:).
...
Рейтинг: 0 / 0
19.06.2016, 17:32
    #39258492
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinskyANAaliskin, зачем Вам разные варианты?
.
??? как "зачем". Хочу знать, просвещаться и развиваться ;:).
Там на Вики ссылки есть - почитайте.
...
Рейтинг: 0 / 0
19.06.2016, 21:38
    #39258540
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
Сделал следующее:
1.
2. После отправки и записи данных, редирект на этот скрипт обработка формы, но с ГЕТ параметром (его значение не имеет никакого значения, эээ тоесть значение этого параметра нигде и никак не используется).

Код: php
1.
 header("Location: /send.php?sent=1");



А потом (указано в ответе 1.) Код размещен в начале скрипта обработки формы (форм).

Код: php
1.
2.
3.
4.
5.
   if (isset($_GET['sent'])) {
    //echo 'sent is SET.';

    ok(1);//вывод "сообщ отправлено успешно"
    }


И никаких сканирований таблиц, никаких дополнительных полей в таблицах, никаких лишних переменных в формах.
...
Рейтинг: 0 / 0
19.06.2016, 22:47
    #39258557
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
Фтопку этот ваш гет-параметр. До перезагрузки страницы сохранить признак успешной отправки можно в сессии.
...
Рейтинг: 0 / 0
19.06.2016, 23:19
    #39258571
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
можно и так, но "Кто как хочет, так и делает" ;%))
---
Я же могу сказть что фтопку эту вашу сессию.

---
ИТОГ: Уже все решил.
...
Рейтинг: 0 / 0
19.06.2016, 23:20
    #39258572
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
*Я же тоже могу сказать: "фтопку эту вашу сессию". %;
...
Рейтинг: 0 / 0
19.06.2016, 23:50
    #39258577
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskin,

Да говорите, конечно же, на то он и форум. Только аргументы изложите, пожалуйста, чем лучше Ваш вариант.

Для сравнения. Если добавить в закладки или послать другу УРЛ страницы с "?sent=1", что будет при открытии страницы? Наверно, "Ваше сообщение успешно отправлено". Немного странно, на мой взгляд. И, теперь, те же действия при передаче сообщения об успешной отправке уведомления через с сессию. Есть сессионная переменная установлена - отдаём "успешно отправлено" (или "не отправлено", это уж по ситуации), нет переменной - отдаём пустую форму.
...
Рейтинг: 0 / 0
20.06.2016, 00:25
    #39258584
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinИ никаких сканирований таблиц, никаких дополнительных полей в таблицах, никаких лишних переменных в формах.
Прям архитектор :)
...
Рейтинг: 0 / 0
20.06.2016, 00:28
    #39258585
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
vkle, сессию фтопку. Мы же пишем высоконагруженные системы и у нас не один бекенд-сервер :)
...
Рейтинг: 0 / 0
20.06.2016, 00:33
    #39258587
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
skyANA, о, тады да! :)
...
Рейтинг: 0 / 0
20.06.2016, 02:14
    #39258595
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
Запись в сессию это лишнее обращение к диску. И если после отправки данных и записи их в тбл записать триггер в сессию, то потом что??? Все равно нужно показать некую станицу (редирект). И на этой странице все равно нужно проверить этот триггер.
...
Рейтинг: 0 / 0
20.06.2016, 02:19
    #39258596
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
vklealiskin,
Для сравнения. Если добавить в закладки или послать другу УРЛ страницы с "?sent=1", что будет при открытии страницы? Наверно, "Ваше сообщение успешно отправлено". Немного странно, на мой взгляд.

та, да. как-то не таво. Может что-то изменю...
...
Рейтинг: 0 / 0
20.06.2016, 02:23
    #39258597
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
skyANAПрям архитектор :)
от вам смешно ;%)) что бы вы без меня делали? Грустили бы?
...
Рейтинг: 0 / 0
20.06.2016, 02:30
    #39258598
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
А что будет если после отправки формы, пользователь в новой вкладке еще раз захочет отправить форму, а сессионный тригер отправки уже будет указывать на то что польхователь уже отправлял форму?

хм-м... нужно подумать...
...
Рейтинг: 0 / 0
20.06.2016, 02:45
    #39258599
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
кажись уже придумал. нужно еще во сне обдумать.
...
Рейтинг: 0 / 0
20.06.2016, 08:28
    #39258636
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinЗапись в сессию это лишнее обращение к диску.
...
Рейтинг: 0 / 0
20.06.2016, 08:34
    #39258637
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinА что будет если после отправки формы, пользователь в новой вкладке еще раз захочет отправить форму, а сессионный тригер отправки уже будет указывать на то что польхователь уже отправлял форму?

хм-м... нужно подумать...
Скорее всего пользователь захочет не того, что Вы ему понаделаете.



Основная мысль книги - проектирование взаимодействия должно предшествовать программированию.

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

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

Как определиться для кого вы разрабатываете своё приложение?
Какие цели преследуют ваши пользователи? Как удовлетворить их требования?

Всё это вы можете узнать из книги.
...
Рейтинг: 0 / 0
20.06.2016, 10:57
    #39258704
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
skyANAaliskinЗапись в сессию это лишнее обращение к диску.

что не так? или вы не знаете где на стороне сервера хранятся переменные сессии? http://itmages.ru/image/view/4446368/4b3c9f57

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

Если есть какое-то другое решении без ГЕТа, то напишите (или не пишите %))

У меня тот же код что указан в 6 сообщении этой темы, но перед редиректом устанавливается сессионный трригар отправки формы.

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

---
О проэктировании: У меня все как-бэ параллельно как-то катится (идет).
...
Рейтинг: 0 / 0
20.06.2016, 11:11
    #39258711
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
дочитался http://phpclub.ru/talk/threads/пример-обработки-формы.8683/

Код: php
1.
if ($_SERVER['REQUEST_METHOD']=='POST') {  


незн. нужно что-то выбрать...
...
Рейтинг: 0 / 0
20.06.2016, 12:02
    #39258749
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
aliskinне потому что сам не знаю как решить, а потому что без ГЕТа тут я решения не вижу.
автор А что будет если после отправки формы, пользователь в новой вкладке еще раз захочет отправить форму, а сессионный тригер отправки уже будет указывать на то что польхователь уже отправлял форму?

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

На сервер пришел запрос методом GET и нет переменной в триггере - отдаём пустую форму.
Запрос методом POST - обрабатываем данные формы, по результатам ставим в триггере переменную с информацией (успех, в данном случае).
Редирект "на себя".
Запрос GET и в триггере инфо об успехе - обнуляем триггер и отдаём клиенту инфо об успехе.
Всё!


Конечно, если до пользователя нужно донести ОЧЕНЬ важное сообщение, которое пользователь ни в коем разе не должен пропустить, то такой способ не годится.
...
Рейтинг: 0 / 0
20.06.2016, 12:03
    #39258752
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
csrf токен?
...
Рейтинг: 0 / 0
20.06.2016, 13:27
    #39258834
aliskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет повторной отправки формы
[quot vkle]aliskinКонечно, если до пользователя нужно донести ОЧЕНЬ важное сообщение, которое пользователь ни в коем разе не должен пропустить, то такой способ не годится.
потому что сообщение будет показано один раз. (?)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запрет повторной отправки формы / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]