Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
2 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 73

Как защититься от повторной отправки формы

18.05.2015, 15:43. Показов 3591. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перечитал кучу информации, предлагают либо редирект, либо сессии. помоготи сделать чтобы хоть что-то заработало. Пытался с редиректом, но error постоянно
koj.zip
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2015, 15:43
Ответы с готовыми решениями:

Как избежать повторной отправки формы?
Пробовала после получения данных формы и их обработки header('Location: /file.php'); но выдает ошибку - Cannot modify header information -...

Отмена повторной отправки формы
Добрый день! У меня такая казалось бы тривиальная задача но никак не могу сообразить как сделать. У меня есть форма обычная постовская с...

защита от повторной отправки формы
Как вы думайте в чем недостаток такой защиты от повторной отправки формы? if(isset($_SESSION)) //блокируем повторную отправку если ip...

11
 Аватар для Dorbah
5 / 5 / 3
Регистрация: 21.09.2011
Сообщений: 46
18.05.2015, 15:52
Может в php при открытии формы записывать в базу уникальный idшник(как бы начинать транзакцию) и в htmlку его передавать в скрытом поле, а потом проверять, правильный idшник пришёл или нет и в базу писать нужную инфу и второй раз форму с этим idшником не записывать.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
18.05.2015, 15:55
Обычно делается так:
В сессию пишется сообщение (или массив сообщений, не важно), затем происходит перенаправление назад.
Там сообщения из сессии выводятся и удаляются (т.е. одноразовые сообщения получаются).
Вот и всё. И повторной отправки формы не будет.
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
18.05.2015, 21:01
Все что написано выше все не правильно
Форма сама по себе не отправляется.
1. Умудриться продублировать отправку форму (частая ошибка кто знакомится с js) можно только отправив ее с помощью js при этом не отменив поведение по умолчанию
JavaScript
1
2
3
4
$( "#muform" ).submit(function( event ) {
  
  event.preventDefault(); // отменяет событие по умолчанию
});
2. Вариант это когда вы несколько раз навешиваете одинаковых обработчиков
В вашем коде нет формы и не понятно как вы ее отправляете
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
18.05.2015, 21:14
Никакими js'ами там и не пахнет... Думаю речь идет о том, когда пользователь обновляет страницу, форма с method=post пытается отправиться повторно...
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
18.05.2015, 21:21
pav1uxa, а ну поясни как это при обновлении страницы форма может сама отправится без нажатия кнопочки submit или js
Во ... живая форма
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
18.05.2015, 21:25
Цитата Сообщение от Poznakomlus Посмотреть сообщение
а ну поясни как это при обновлении страницы форма может сама отправится без нажатия кнопочки submit или js
Как обычно читаешь между слов...

1. Я не говорил что она отправляется сама. Я сказал что предлагает отправить повторно.
2. Спокойно без кнопочки submit и без js.
HTML5
1
2
3
<form method="post">
    <input type="submit">
</form>
Нажми кнопочку submit. А потом нажми F5. Может быть так поймешь о чем речь...
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
18.05.2015, 21:30
Цитата Сообщение от pav1uxa Посмотреть сообщение
А потом нажми F5
это поведение броузеров, каждый из них при этом по разному реагирует тем более, зачастую спрашивает отправить ли повторно данные. Без подтверждения пользователя данные не уйдут
Если надо очистить форму то autocomplete
Пусть Т.С. представит весь код(пояснения), тогда будет понятнее
0
Заблокирован
18.05.2015, 23:06
Вот чтобы браузеры не пытались что-то там спрашивать при нажатии на F5, используется перенаправление.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
18.05.2015, 23:20
Цитата Сообщение от Июнь Посмотреть сообщение
Вот чтобы браузеры не пытались что-то там спрашивать при нажатии на F5, используется перенаправление.
И у пользователя в браузере есть стрелочка вперед, назад и что
Форма отправленная без js и не фрейме автоматом делает переход на страницу указанную в атрибуте action(загружая страницу, указанную в теге action)
Какое еще пере направление, че это за костыль в проектирование при отправке фрормы
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
18.05.2015, 23:56
Цитата Сообщение от Poznakomlus Посмотреть сообщение
И у пользователя в браузере есть стрелочка вперед, назад
вот именно по этому принято после обработки пост запросов делать редирект, тогда в историю обработчик формы не попадет, чтобы пользователь случайно повторно не отправил форму.
1
Заблокирован
19.05.2015, 00:09
Цитата Сообщение от Poznakomlus Посмотреть сообщение
Форма отправленная без js и не фрейме автоматом делает переход на страницу указанную в атрибуте action(загружая страницу, указанную в теге action)
Какое еще пере направление, че это за костыль в проектирование при отправке фрормы
А по F5 браузер делает повторный POST-запрос к этой странице. Этот "костыль" предусмотрен протоколом. Почитайте про код ответа 303. Никто не заставляет вас использовать этот "костыль", однако очень часто он позволяет существенно улучшить юзабилити.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2015, 00:09
Помогаю со студенческими работами здесь

проблема повторной отправки данных
У меня есть страница с аутентификацией пользователя (через тэг &lt;form&gt;). В случае удачной аутентификации пользователь попадает на другую...

Защита от повторной отправки POST-данных
браузер кэширует _POST. Если рефрешнуть то пост данные остануться, а значит сработает код еще раз. Надо после того, как 1 рах отправили...

Как очистить данные после отправки формы ?
Всем привет, давно уже болит такой вопрос, как очистить htm форму после отправки? Очистить форму нужно после приема и обработки данных....

Как сделать редирект после отправки формы
Привет всем, подскажите плиз, как сделать редирект на страницу &quot;Спасибо за сообщение&quot;, после того как была отправлена форма. Вот...

Как вернуться на предыдущию страницу после отправки формы!
Я создал форму и отправил к обработчику форма &lt;form class=&quot;helpdevelop&quot; action=&quot;/main/forms/forhelpdev.php&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 01.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 31.01.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru