Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.2.15] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Вот такая(думаю распространенная) проблема. Отсылаю форму POSTом на страницу, пусть будет, test.php. На этой странице ее успешно обрабатываю и выдаю, например, сообщение: ВСЕ ОК.
Теперь нажимаю на какую-нибудь ссылку на этой же странице и уже с помощью кнопки BACK возвращаюсь обратно на test.php. IE предупреждает, что данные с той формы будут перепосланы заново(или еще в памяти, короче обработаны будут еще раз),но факт в том, что если я нажму Refresh - форма обработается 2 раз. А мне надо 1(так как работаю я с базой - а лишние запросы ни к чему) Единственная мысль, пришедшая мне в голову - это foreach ($HTTP_POST_VARS as $key => $value) { unset($HTTP_POST_VARS[$key]); }; Ну или хотя бы: unset($HTTP_POST_VARS[$submit_button]); Скажите, это сработает или суть дела не в том... Короче, как выйти из ситуации?? |
Сообщ.
#2
,
|
|
|
Суть в том, чтобу после обработки формы сделать как бы refresh самому т.е. выдать браузеру какой-то там код переадресации что ли. Это что касается сути А по поводу примеров - точно не скажу, но здесь знают Кажется header("Location: index.php"); может помочь... Вместо index.php пишешь нужный запрос, который должен вывести страницу подтверждения или результата опроса... короче следующую. Тогда браузер в хистори запишет её вместо той, которой POST прилагается.
|
Сообщ.
#3
,
|
|
|
Че-то я не совсем понял... Я обрабатываю форму(до отображения всякого хтмл), потом делаю
header("Location: test.php") А как я тогда смогу вывести сообщение, что все ОК? Броузер-то не знает как завершилось общение с базой... может быть можно header("Location: test.php?result=ok") или я суть недопонял? |
Сообщ.
#4
,
|
|
|
Цитата shipbrother wrote: может быть можно header("Location: test.php?result=ok") Да, именно так. Но учти, что если ты используешь на своем сайте сессии, могут возникнуть некоторые проблемы с передачей их идентификаторов... |
Сообщ.
#5
,
|
|
|
использую сессии...
о каких проблемах идет речь? о том, что идентификатор не передастся, что ли? Как тогда быть? хммм, прямо в тупик меня поставили ...а почему никто не сказал про предложенный unset()? этот способ почему не годится? |
Сообщ.
#6
,
|
|
|
Алгоритм такой:
Вызванный постом скрипт обрабатывает твои данные, если все ок - переадресует с помощью "Location" на страницу, где написано - ОК, если ошибка - на страницу с ошибкой... можно для этого другой скрипт создать, а можно в этом же... ОК или не ОК задаешь параметрами test.php?ok=true&page=ok& ... Идентификатор сессии передаешь там же в параметрах через константу SID, которая бедт установлена, если не переданы куки... короче просто дописываешь ... &SID и отдыхаешь Если че не так написал - меня поправят, надеюсь |
Сообщ.
#7
,
|
|
|
shipbrother, поймешь работает ли unset() ты только тогда, когда попробуешь сам
|
Сообщ.
#8
,
|
|
|
unset() не работает:( - не способ это
А вот с header() - очень хорошее решение, но не для моей страницы:( У меня там хтмл и пхп в перемежку - а чтобы их разделить надо очень постараться, поэтому может еще есть спопобы??? ПОМОГИТЕ!!! может есть чего-нибудь хитроумное? |
Сообщ.
#9
,
|
|
|
Цитата shipbrother, 17.08.04, 12:51 А вот с header() - очень хорошее решение, но не для моей страницы У меня там хтмл и пхп в перемежку - а чтобы их разделить надо очень постараться, поэтому может еще есть спопобы??? ПОМОГИТЕ!!! может есть чего-нибудь хитроумное? хитроумного не знаю, но можно проверку данных сделать в самом начале, до вывода чего-либо. Другой вариант, сделать обработку вообще в другом файле? PS чего все в последнее время рванулись в одном файле и форму делать и ее обрабатывать? |
Сообщ.
#10
,
|
|
|
у меня на странице обрабатывается несколько форм.
Одна из них находится на другой странице, а две формы - на этой же. Страница играет роль личной папки(profile), поэтому я считаю, что если манипуляции происходят с содержимым личной папки, то после выполнения запроса по данным формы надо вернуться в эту же личную папку(для наглядности произошедших изменений) и выдать маленькое сообщение - успех или неуспех. Вот. тактика такая, поэтому я и стал Цитата в одном файле и форму делать и ее обрабатывать |
Сообщ.
#11
,
|
|
|
А чем тебе не подходит способ проверять не инициализирована ли переменна?
Типа так if (isset($_GET['value'])) { //do_show_message } else { //do_show_form } |
Сообщ.
#12
,
|
|
|
А как насчет буферизации вывода через ob_start / ob_end_flush?
А что если еще и template engine использовать, чтобы не лепить код и дизайн в одном месте ? Например, Smarty |
Сообщ.
#13
,
|
|
|
rvt, не разводи оффтопик, ты о чем тут пишется читал вообще?
|
Сообщ.
#14
,
|
|
|
Парень жалуется, мол header не могу использовать, т.к. php вперемежку с html, а как ты знаешь header должен стоять до вывода клиенту... Вот я и говорю, а не поможет ли ему буферизация вывода. А оффтопиками пусть модератор занимается B)
|
Сообщ.
#15
,
|
|
|
Хм... Мож я тупой? Насколько я понял, парень жалуется на:
Цитата shipbrother, 17.08.04, 14:30 в одном файле и форму делать и ее обрабатывать |