За последние 24 часа нас посетили 22009 программистов и 1682 робота. Сейчас ищут 1742 программиста ...

Защита формы, от повторной отправки

Тема в разделе "Вопросы от блондинок", создана пользователем Mr. T, 4 фев 2012.

  1. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Добрый вечер,
    подскажите, пожалуйста, каким образом можно защитить форму от повторной отправки. Есть форма, с валидацией полей и каптчей. Если валидация прошла успешно, то данные, введенные в форму отправляются, но если, к примеру, нажать на кнопку F5, то данные, введенные в форму будут отправлены снова. Как с таким бороться?
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    редиректить на другую страничку или аякс
     
  3. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    Обновлять страницу после записи данных

    Добавлено спустя 1 минуту 14 секунд:
    Почему на другую? Можно на ту же редиректить
     
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Вопрос снимается. Нашел три решения:
    1. Делать unset сессии каптчи ("что забыл сделать изначально").
    2. Реализовать паттерн проектирования "Post/Redirect/Get", тобишь делать редирект сразу после отправки формы.
    3. Добавить в форме скрытое поле, значение которого будет проверятся. По сути, это защита от CRSF, но пока не до конца понял нюансы проверки...
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    ну да
     
  6. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    По редиректу есть один вопрос. После выполнения 302-го редиректа на эту же страницу, каким образом можно сообщить отправителю статус?
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Добавь в строку запроса какую-нибудь переменную и по ней отлавливай была ли отправлена форма, если была, то выведи чонить типа - запрос отправлен и всё такое...
     
  8. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    С дополнительным GET-параметром понятно, а если без, скажем? Через сессии?
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Делай через сессии, хуле =)