На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Дополнения к правилам (только для данного раздела)
- Используйте подсветку синтаксиса при выделении исходного кода;
- В описании темы обязательно укажите язык программирования;
- Прежде чем задать вопрос, обязательно воспользуйтесь поиском и загляните в FAQ раздела.
- Если вопрос касается серверного ПО, указывайте ОС.
- Если вопрос касается ASP.NET то лучше будет задать его в соответствующем разделе. Там вы сможете получить ответ намного быстрее.

Модераторы: Serafim, fatalist
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> надо HTTP_POST_VARS сделать unset()
    Вот такая(думаю распространенная) проблема. Отсылаю форму POSTом на страницу, пусть будет, test.php. На этой странице ее успешно обрабатываю и выдаю, например, сообщение: ВСЕ ОК.
    Теперь нажимаю на какую-нибудь ссылку на этой же странице и уже с помощью кнопки BACK возвращаюсь обратно на test.php. IE предупреждает, что данные с той формы будут перепосланы заново(или еще в памяти, короче обработаны будут еще раз),но факт в том, что если я нажму Refresh - форма обработается 2 раз. А мне надо 1(так как работаю я с базой - а лишние запросы ни к чему)
    Единственная мысль, пришедшая мне в голову - это
    ExpandedWrap disabled
      foreach ($HTTP_POST_VARS as $key => $value) { unset($HTTP_POST_VARS[$key]); };

    Ну или хотя бы:
    ExpandedWrap disabled
      unset($HTTP_POST_VARS[$submit_button]);

    Скажите, это сработает или суть дела не в том...
    Короче, как выйти из ситуации??
      Суть в том, чтобу после обработки формы сделать как бы refresh самому :) т.е. выдать браузеру какой-то там код переадресации что ли. Это что касается сути :) А по поводу примеров - точно не скажу, но здесь знают :) Кажется header("Location: index.php"); может помочь... Вместо index.php пишешь нужный запрос, который должен вывести страницу подтверждения или результата опроса... короче следующую. Тогда браузер в хистори запишет её вместо той, которой POST прилагается.
        Че-то я не совсем понял... Я обрабатываю форму(до отображения всякого хтмл), потом делаю
        ExpandedWrap disabled
          header("Location: test.php")
        то есть пересылаю с этой на эту же страницу и переменные ПОСТа уже не будут переданы... Верно?
        А как я тогда смогу вывести сообщение, что все ОК? Броузер-то не знает как завершилось общение с базой...
        может быть можно
        ExpandedWrap disabled
          header("Location: test.php?result=ok")
        ?
        или я суть недопонял?
          Цитата
          shipbrother wrote:
          может быть можно
          header("Location: test.php?result=ok")

          Да, именно так. Но учти, что если ты используешь на своем сайте сессии, могут возникнуть некоторые проблемы с передачей их идентификаторов...
            использую сессии...
            о каких проблемах идет речь? о том, что идентификатор не передастся, что ли? Как тогда быть? хммм, прямо в тупик меня поставили

            ...а почему никто не сказал про предложенный unset()? этот способ почему не годится?
              Алгоритм такой:

              Вызванный постом скрипт обрабатывает твои данные, если все ок - переадресует с помощью "Location" на страницу, где написано - ОК, если ошибка - на страницу с ошибкой... можно для этого другой скрипт создать, а можно в этом же... ОК или не ОК задаешь параметрами test.php?ok=true&page=ok& ...

              Идентификатор сессии передаешь там же в параметрах через константу SID, которая бедт установлена, если не переданы куки... короче просто дописываешь ... &SID и отдыхаешь :) Если че не так написал - меня поправят, надеюсь :)
              Сообщение отредактировано: rvt -
                shipbrother, поймешь работает ли unset() ты только тогда, когда попробуешь сам ;)
                  unset() не работает:( - не способ это

                  А вот с header() - очень хорошее решение, но не для моей страницы:(
                  У меня там хтмл и пхп в перемежку - а чтобы их разделить надо очень постараться, поэтому может еще есть спопобы???
                  ПОМОГИТЕ!!! может есть чего-нибудь хитроумное?
                    Цитата
                    shipbrother, 17.08.04, 12:51
                    А вот с header() - очень хорошее решение, но не для моей страницы
                    У меня там хтмл и пхп в перемежку - а чтобы их разделить надо очень постараться, поэтому может еще есть спопобы???
                    ПОМОГИТЕ!!! может есть чего-нибудь хитроумное?


                    хитроумного не знаю, но можно проверку данных сделать в самом начале, до вывода чего-либо. Другой вариант, сделать обработку вообще в другом файле?

                    :offtop: PS чего все в последнее время рванулись в одном файле и форму делать и ее обрабатывать? :offtop:
                      у меня на странице обрабатывается несколько форм.
                      Одна из них находится на другой странице, а две формы - на этой же.
                      Страница играет роль личной папки(profile), поэтому я считаю, что если манипуляции происходят с содержимым личной папки, то после выполнения запроса по данным формы надо вернуться в эту же личную папку(для наглядности произошедших изменений) и выдать маленькое сообщение - успех или неуспех.
                      Вот. тактика такая, поэтому я и стал
                      Цитата
                      в одном файле и форму делать и ее обрабатывать
                        А чем тебе не подходит способ проверять не инициализирована ли переменна?
                        Типа так
                        ExpandedWrap disabled
                           
                          if (isset($_GET['value'])) {
                              //do_show_message
                          }
                          else {
                              //do_show_form
                          }
                          А как насчет буферизации вывода через ob_start / ob_end_flush?

                          А что если еще и template engine использовать, чтобы не лепить код и дизайн в одном месте :tong: ?

                          Например, Smarty ;)
                            rvt, не разводи оффтопик, ты о чем тут пишется читал вообще?
                              Парень жалуется, мол header не могу использовать, т.к. php вперемежку с html, а как ты знаешь :) header должен стоять до вывода клиенту... Вот я и говорю, а не поможет ли ему буферизация вывода. А оффтопиками пусть модератор занимается B)
                                Хм... Мож я тупой? Насколько я понял, парень жалуется на:
                                Цитата
                                shipbrother, 17.08.04, 14:30
                                в одном файле и форму делать и ее обрабатывать
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0629 ]   [ 16 queries used ]   [ Generated: 19.04.24, 02:56 GMT ]