Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как корректно бороться с рефрешем формы?
Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2008
Помог: 0 раз(а)
Я начинаю web-программить (раньше виндовс-программил). Сделал страничку с формой, которая сама себе шлет данные на обработку. Причем все время сама себе данные шлет.
Я привык в винде пользоваться выражениями типа:
global $var; //Это я достал переменную, которую сделала форма
....
$var=!$var; //Инверсия
....
}
Тут у меня не прокатил такой фокус, т.к. человек в любой момент нажимает рефреш или еще что-то делает, что инициирует повторную отправку данных, и код повторно выполняет ту же самую операцию.
Как от такого повторного выполнения кода корректно защищаться?
Я пытался обнулить переменные по окончанию скрипта, но видать я нетак это пытался делать. Переменные не обнуляются.
PS: Нашел в факе что-то на эту тему (http://phpfaq[dot]ru/na_tanke - Способы общения браузера с сервером.), вот только осталось понять, как это применить у себя.
Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008 Откуда: Израиль
Помог: -6 раз(а)
Для того, что-бы защитить себя от повторной отправки данных, тебе нужно самому обновить страницу. Для этого, в основном, используется заголовки:
Header("Location: script.php");
----- Не знаешь - молчи.
evgenijj
Отправлено: 10 Февраля, 2008 - 16:57:08
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.