За последние 24 часа нас посетили 19495 программистов и 1604 робота. Сейчас ищут 854 программиста ...

как уничтожить данные формы после их отправки скрипту?

Тема в разделе "PHP для новичков", создана пользователем Hard1911, 15 май 2008.

  1. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    Сталкнулся с проблемой. Допустим на странице есть текстовое поле. Посетитель вводит туда текст нажимает submit и текст идет скрипту-обработчику.... но если после этой операции пользователь перезагрузит страницу нажав "Обновить" в своем браузере тот текст каторый был введен в текстовое поле сного пойдет обработчику хотя посетитель, после перезагрузки, ничего не писал в форме. Как этого избежать? как уничтожить данные после первой отправки? Можно какойнибуть рецепт... :)
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Сохранять в сессии последние переданные данные и проверять на сходство при приемке данных.
     
  3. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    Можно впринципе организовать с помощью сессий. Других способов не придумаю
    PHP:
    1. <?php
    2.     session_start();
    3.     if(isset($_POST['submit']) && $_SESSION['form']) {
    4.         echo('Вы только что нажали на Submit');
    5.         unset($_SESSION['form']);
    6.     } else {
    7.         if(isset($_POST['submit'])) {
    8.             echo('Вы нажали обновить<br />');
    9.         } else {
    10.             $_SESSION['form'] = true;
    11.             echo('<form method="POST"><input type="submit" value="Submit" name="submit"></form>');
    12.         }
    13.     }
    14. ?>
    Ещё делал когда-то, чтобы автоматически переносило на страницу хидером.

    Kreker, опередил)
     
  4. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    спаспибо попробую
     
  5. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    а если запретить кеширование страницы с формой? поможет?
     
  6. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    как-то писал для себя класс антифлуда, который как раз предотвращает запись по ф5. могу показать, если интересно.
     
  7. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    нет, спасибо
     
  8. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Мне интересно. Вас не затруднит ?
     
  9. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    сам мучаюсь с этим.
    варианты решения такой проблемы:
    1) отправлять через ajax. Если у пользователя отключен JS, то или вообще работать не будет, или будет флуд
    2) перенаправлять через html-теги. Если у пользователя отключены редиректы - не поможет
    3) header location - не всегда возможно сделать такое. Вот сейчас у меня не получается.
    4) возможно как-то через сессии, но это cookies, и опять могут быть ошибки о посланых заголовках.

    Есть еще какие-то альтернативы?
     
  10. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Если я правильно понял суть вопроса то это делается след. образом:
    страница1 - на ней форма, при нажатии сабмит все данные отправляются странице2, которая отрабатывает данные и редиректит снова на страницу1.

    Вариант2: Перед отправкой данных java-script'ом очищать все поля.
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    да, наверно буду делать какую-нить recive.php, которая будет обрабатывать данные.