[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление страницы
Hunter80
На странице есть форма... форму заполнили... ткнули кнопки... выполнился скрипт... если обновить страницу браузер пытается отправить старые данные формы, несмотря на то, что они не были заполнены... Необходимо добиться чтоб форма становилась пустой после ыпо... т.е. чтоб браузер не повторял отправку данных из формы.

Наверно не понятно что сказал, вот цитата браузера: "Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая повторит любое ранее произведённое действие (например, запрос на поиск или онлайн-покупка)."
Хочется избавиться от повторности отправки данных... smile.gif



Спустя 15 минут, 7 секунд (28.01.2009 - 23:48) kirik написал(а):
Hunter80, после отправки данных нужно перезагрузить страницу через header('Location: ./'); (где вместо ./ можно вставить адрес, на который нужно сделать редирект)

Спустя 31 минута, 16 секунд (29.01.2009 - 00:19) twin написал(а):
Не совсем так. Редирикт нужно делать с дполнительным параметром, и лучше чтоб он был рандомным. Иначе простой редирикт успеха не принесет, если есть автозаполнение полей, а с постоянным параметром третья отправка формы вернет на ту же страницу. F5 будет работать.
Вот так хотя бы надо:

PHP
<?
header("location: ".$_SERVER['PHP_SELF']."?r=".rand());

Спустя 6 часов, 43 минуты, 3 секунды (29.01.2009 - 07:02) Sylex написал(а):
Цитата (twin @ 29.01.2009 - 03:19)
Не совсем так. Редирикт нужно делать с дполнительным параметром, и лучше чтоб он был рандомным. Иначе простой редирикт успеха не принесет, если есть автозаполнение полей, а с постоянным параметром третья отправка формы вернет на ту же страницу. F5 будет работать.

не наблюдал такого

Спустя 51 минута, 19 секунд (29.01.2009 - 07:54) twin написал(а):
PHP
<?php 
$test 
= isset($_POST['test'])?$_POST['test']:null;
if(
$test)
{
file_put_contents("text.txt",$test."<br>\r\n".file_get_contents("text.txt"));
header("location: ".$_SERVER['PHP_SELF']);
//header("location: ".$_SERVER['PHP_SELF']."?r=1");
//header("location: ".$_SERVER['PHP_SELF']."?r=".rand());

?> 
<form action="?" method="post"> 
<input name="test" type="text"  value="<?php echo htmlspecialchars($test?>"/><br /> 
<input name="ok" type="submit" /> 
</form>
<?
echo file_get_contents("text.txt");
Ну вот так может понятнее будет о чем я.

Спустя 6 часов, 1 минута, 24 секунды (29.01.2009 - 13:55) Hunter80 написал(а):
Twin данный пример работает если что-то ввели smile.gif А если не ввели - ругается... Вообщем не столь важно уже... спасибо огромное smile.gif

Спустя 9 минут, 20 секунд (29.01.2009 - 14:04) twin написал(а):
Он на вот это место у Вас ругается:
PHP
<?
file_put_contents("text.txt",$test."<br>\r\n".file_get_contents("text.txt"));
Потому что файла нет. А потом файл делает и все норм. можете собаку поставить перед file_get_contents и всё.

Спустя 4 часа, 30 минут, 54 секунды (29.01.2009 - 18:35) Hunter80 написал(а):
Не не не... файл я создал сам заранее smile.gif Ругается именно на то, что заново надо отправлять данные формы! smile.gif

Спустя 33 минуты, 4 секунды (29.01.2009 - 19:08) twin написал(а):
Так а я зачем в комментах варианты поставил то? Пробуйте все три, смотрите какой и как ругается.

Спустя 1 час, 4 минуты, 20 секунд (29.01.2009 - 20:13) Sylex написал(а):
Цитата (twin @ 29.01.2009 - 10:54)
PHP
<?php 
$test 
= isset($_POST['test'])?$_POST['test']:null;
if(
$test)
{
file_put_contents("text.txt",$test."<br>\r\n".file_get_contents("text.txt"));
header("location: ".$_SERVER['PHP_SELF']);
//header("location: ".$_SERVER['PHP_SELF']."?r=1");
//header("location: ".$_SERVER['PHP_SELF']."?r=".rand());
} 
?>
 
<form action="?" method="post"> 
<input name="test" type="text"  value="<?php echo htmlspecialchars($test) ?>"/><br /> 
<input name="ok" type="submit" /> 
</form>
<?
echo file_get_contents
("text.txt");
Ну вот так может понятнее будет о чем я.

нет, не понятно... не вижу разницы между
PHP
header("location: ".$_SERVER['PHP_SELF']);

и
PHP
header("location: ".$_SERVER['PHP_SELF']."?r=".rand());


?

Спустя 5 минут, 37 секунд (29.01.2009 - 20:18) twin написал(а):
При правильном заполнении полей нужно их очистить. А при автозаполнении они не чистятся при простом редирикте, можно кнопку сто раз подряд нажать. А если параметр статичен, то два раза нужно заполнить, и опять можно сто раз нажать.

Спустя 6 минут, 36 секунд (29.01.2009 - 20:25) Sylex написал(а):
Цитата (twin @ 29.01.2009 - 23:18)
А при автозаполнении они не чистятся при простом редирикте

у меня чистятся

Спустя 4 минуты, 35 секунд (29.01.2009 - 20:29) twin написал(а):
Объясняю порядок действий.
1. Заполняем поле.
2. Пуск
3. F5
4. Заполняем поле
5. Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск Пуск
Продолжаем эксперимент.

Спустя 11 минут, 12 секунд (29.01.2009 - 20:41) Sylex написал(а):
twin
все нормально.

Если потом нажимаешь кнопку, и отправляешь ПУСТОЕ значение... а потом F5, то в IE заметил что требует повторную отправку данных... но это тока если отдача была с ПУСТЫМ полем, почему? И редирект с рандомным значением тут не помог - та же картина!

Спустя 9 минут, 5 секунд (29.01.2009 - 20:50) twin написал(а):
Это потому что нет проверки на заполнение. Массив POST есть (кнопка), а редирикта нет.

Спустя 3 минуты, 52 секунды (29.01.2009 - 20:54) Sylex написал(а):
twin
точно, я че-т не посмотрел... так что нет у меня такой фишки smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.