Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Защита формы от повторной отправки
Raymond  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 40
Пользователь №: 43562
На форуме: 9 месяцев, 13 дней
Карма:




Читал, что обычно для такой защиты используется следующая схема:

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

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

Подскажите, что с этим можно сделать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 958
Пользователь №: 37872
На форуме: 4 года, 23 дня
Карма: 37




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


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




Raymond
if(!empty($_POST)) {
$_SESSION['POST'] = $_POST;
header('location: form_handler.php');
exit;
}


//form_handler.php
if(empty($_SESSION['POST'])) {
exit;
}

$post_data = $_SESSION['POST'];
$_SESSION['POST'] = array();
...........



--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 25 дней


Только вот зачем сессию мучать?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




Цитата (twin @ 26.04.2017 - 03:37)
Только вот зачем сессию мучать?

- она для этого была создана, чтобы мучаться с промежуточными данными
- твой вариант?


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 25 дней


Цитата (AllesKlar @ 26.04.2017 - 06:47)
она для этого была создана, чтобы мучаться с промежуточными данными
Она была создана как более защищенный вариант кукисов. А тут чего защищать?

Вот давай рассуждать логически. Мы организовали сессию. Как её идентифицировать? А тем же кукисом или GET. Какой смысл прятать рандомную уникальную строку, если её потом нужно идентифицировать по рандомной уникальной строке. smile.gif Для того, чтобы еще сервер напрячь лишними файлами?

Мой вариант- GETпараметр. Не мудрствуя лукаво. Ибо это никакая не секретная информация. Ну или кукис на худой конец.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




twin
Речь же не о том. Речь о том, как предотвратить повторную отправку формы.
Форма отправляется POST.
Браузер перешел на обработчика формы.
Я жмакаю F5, форма отправляется повторно, не важно с GET параметром или без него.


... или я вообще не понял, о чем ты biggrin.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 25 дней


Я вот про это:
Цитата (Raymond @ 25.04.2017 - 17:47)
- создается переменная сессии с уникальным значением
- к форме добавляется скрытое поле с этим уникальным значением
- в обработчике формы сверяются значения из сессии и из скрытого поля
- если все совпадает, то обновляем сессионное значение и выполняем необходимые процессы. Если нет - выдаем ошибку или что-нибудь по своему вкусу.
Вообще это больше похоже на защиту от CSRF. Ну и за одно от повтора. Так то все верно описано, только токен не обязательно в сессию прятать. Собственно как и с редиректом. Сессия там совсем не нужна. Просто сбрасывается POST и обновляется токен.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




Цитата (twin @ 26.04.2017 - 09:16)
Сессия там совсем не нужна. Просто сбрасывается POS

покажи


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 25 дней


Чего показать? Всё тоже самое, только вместо сессии кукис.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




Цитата (twin @ 26.04.2017 - 10:22)
Всё тоже самое, только вместо сессии кукис.

Т.е. данные из POST складывать в кукисы?
А если их у меня там несколько метров?
Это значит, сначала POST- ом отправить на сервер, потом, фактически, этот же объем скачать с сервера, чтобы положить их в кукисы, а потом еще раз тот же объем отправить на сервер.

Не эффективненько как-то получается smile.gif
Помимо прочего, засирать пушить в браузер пользователю Х Мб. данных как-то не красиво, могут и в морду дать smile.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16220
Пользователь №: 6543
На форуме: 8 лет, 10 месяцев, 15 дней
Карма: 304

Трезвый :
6 лет, 7 месяцев, 25 дней


Цитата (AllesKlar @ 26.04.2017 - 09:48)
Т.е. данные из POST складывать в кукисы?
Зачем вообще куда то складывать? Я чет не понимаю... С другой стороны, складывать мегабайты в сессию тоже не лучшая затея. И главное, ну ладно бы действительно CSRF боялись, а тут всего навсего F5.

Почему нельзя проверить токен и потом обработать данные? Это примерно как с каптчей. Только сравнивать не с сессией, а с кукой. Или GET. Или вообще отдельным заголовком можно, если REST.

Просто POST сбросить, так и токен не нужен. Не понимаю, зачем столько сложностей.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 19 дней
Карма: 13




обычный redirect нет? :lol: :lol: :lol:


header('Location: http://www.example.com/');


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3708
Пользователь №: 38635
На форуме: 3 года, 7 месяцев, 22 дня
Карма: 199




Цитата (VeRTak @ 26.04.2017 - 12:35)
обычный redirect нет? :lol: :lol: :lol:


header('Location: http://www.example.com/');

Откуда POST данные будешь брать в пункте назначения редиректа?


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 19 дней
Карма: 13




AllesKlar Речь ведь идет просто о повторной отправки формы. Как уже говорилось f5. Отработал скрипт, далее redirect. Попали на страницу какую нужно, уже с пустым постом. Что не так? Или я где то не так понимаю ph34r.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса