За последние 24 часа нас посетили 18920 программистов и 1635 роботов. Сейчас ищут 1120 программистов ...

как работает header?

Тема в разделе "PHP для новичков", создана пользователем bugy, 10 сен 2006.

  1. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    кто мне обьяснит? я читал, конечно, мануал по англиски, но чесно гря ничего не понял.

    что именно мне хотелось бы узнать:

    if ($_POST['flag']==2)
    {
    header('Location: xxx.php');
    $var=my_func($_POST['xxx1'], $_POST['xxx2'],$_POST['xxx3']);
    echo $var;

    }

    вопщем ничего у меня не выводица ((
     
  2. Mavir

    Mavir Guest

    header отправляет заголовки броузеру.

    Что означает заголовок "Location: xxx.php"? Или ты его бездумно откуда-то вставил?
     
  3. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    вопщем отсюда я взял )

    у меня перед приведенным кодом стоит проверка
    PHP:
    1. if (isset($_POST['flag']))
    испльзуеца ли метод пост при ДАННОЙ загрузке... или так проверять незя?(всмысле штобы страница могла загружатся без повторной отправки данных
     
  4. Mavir

    Mavir Guest

    А почему exit не поставил?

    "Location: xxx.php" дает указание броузеру перейти на страницу xxx.php. Как только броузер получает такой заголовок, то сразу переходит на указаную страницу. Поэтому ничего не будет показано, что стоит после этого header. А чтобы скрипт не выполнялся без толку, нужно ставить exit.
     
  5. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    хм... эфекта никакого (((
     
  6. Mavir

    Mavir Guest

    От чего эффекта нет?
     
  7. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    вопщем я прописал exit, но все равно переменная $var(см первый пост) не выводица ((
     
  8. Sh0t

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

    С нами с:
    14 июл 2006
    Сообщения:
    21
    Симпатии:
    0
    код в студию
    Я насчёт my_func
     
  9. Anonymous

    Anonymous Guest

    И не выведется. Независимо от кода my_func.
    Передается заголовок Location - и сразу начинается переход на страницу xxx.php. В момент получения этого заголовка браузер перестает принимать поток от старой страницы и устремляется по Location.
     
  10. Mavir

    Mavir Guest

    :) А что делает exit?

    А вообще я писал и Горбунов Олег, почему у тебя ничего не будет выводиться.

    Sh0t, значение, возращаемой функцией my_func, здесь роли не играет
     
  11. Sh0t

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

    С нами с:
    14 июл 2006
    Сообщения:
    21
    Симпатии:
    0
    Мда...
    Аффтар, лучше объясни задачу, а то по твоему коду не понятно зачем у тебя стоит редирект а потом вывод данных...
     
  12. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    <?php
    ...
    if (isset($_POST['flag'])) //вопщем если был запрос пост... (по моей
    //задумке, как это работает хз)
    {

    ...
    if ($_POST['flag']==2) /*если в данном запросе требуется изменить на странице что-то определенное со флагом 2*/
    {

    $var=my_func($_POST['xxx1'], $_POST['xxx2'],$_POST['xxx3']);
    //присваеваем переменной результат выполнения функции
    header('Location: xxx.php');
    //это мне сказали прописать чтобы не выскакивала табличка с
    //просьбой о повторной отправке данных
    exit;
    }
    unset($_POST['flag']);
    //указать что метод пост при обновлении не используецца(снова
    // по МОЕЙ задумке
    };
    ...
    echo //далее непосредственно данные, которые вводит юзер
    //и флаг, показывающий что с этими данными делать
    "<form method=post action=xxx.php>
    ...
    <input type=hidden name=flag value=2>
    ...
    </form>";
    ...
    ?>


    вот этот код. как мне зделать так чтобы переменной можно было присвоить значение, и приэтом при обновлении не выскакивал запрос на повторную отправку данных?
     
  13. Anonymous

    Anonymous Guest

    Все равно по не понял.
    Комментарии в код писать учили?
    Код форматировать учили?
    Задачу четко ставить - учили?
     
  14. Mavir

    Mavir Guest

    bugy, какая стоит задача? И почему так важно присвоить значение переменной?
     
  15. Mavir

    Mavir Guest

    Это меня умиляет. exit означает завершение скрипта :)
     
  16. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    ничему не учили, я самоучка )

    хм, забылсо (
    блин, даже не знаю как сказть ещё...
    что мне охота иметь:
    1. пользователь свободно загружает страницу
    2. он может обновить страницу, чтобы узнать - изменилось ли на ней что-либо(благодаря кому-либо другому, например)
    3. он может послать данные, тем самым сам изменив что-либо на странице.
     
  17. Anonymous

    Anonymous Guest

    Уточняющий комментарий - ты хочешь что бы пользователь обновлял страницу именно по F5 ?
    Или тебя естроит кнопочка на самой странице?
     
  18. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    желательно по ф5
     
  19. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    один из выходов - методом пост отправлять на другую страницу(2) с этой(1), а там уже через сессии передавать снова на (1)... правльно? но мне неохота в несколько шагов
     
  20. Anonymous

    Anonymous Guest

    Сессии тут необязательны... все гораздо проще можно решить...
     
  21. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    догадываюс что не обязательны +) а можно вопрося? "как решить"?
     
  22. Anonymous

    Anonymous Guest

    ПОПРАВЬ МЕНЯ, ЕСЛИ НУЖНО:
    Тебе надо по получению данных, их обработать в PHP и повторно вывести форму на экран, так? И ты хочешь сделать это в одном скрипте - так? и что бы обновлялось без предупрежнения о повторной посылке данных?
    Тогда, вероятно, тебе нужно это:
    PHP:
    1. <?PHP
    2. if (isset($_POST['in'])) { // Если по POST пришли данные, то
    3.                 //userfunc ($_POST['v_1'],$_POST['v_2'],$_POST['v_3']); // Здесь ты сначала вызываешь нужные тебе функции обработки
    4.                 header ('Location: index.php'); // Послав заголовок, ты перенаправишь браузер на ту же страницу - автоматически потеряются POST данные
    5.                 exit; // Заканчивешь обработку, браузер тебя уже не слышит, он ушел на тот Location, что ты ему послал
    6.                                  }
    7.  // Если данные по POST не приходили - выведется формочка с этого самого места начиная - выводи скриптом что хочешь.
    8. ?>
    9. <form action="?" method="post">
    10. Параметр, который будет передан методом POST:<br/>
    11. <input type="hidden" name="in" value="1"/><br/>
    12. <input type="text" name="post_value"/><br/>
    13. <input type="submit" value="Послать POST"/>
    14. </form>
    15.  
    16.  
     
  23. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    УРА! меня поняли )) да, ты апсалютна прав
     
  24. Anonymous

    Anonymous Guest

    Чуть поправил код сверху.
     
  25. bugy

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

    С нами с:
    25 июл 2006
    Сообщения:
    44
    Симпатии:
    0
    а вот сматрите -
    !! я ввел некоторый текст в поле post_value и нажал "послать POST" !!
    и как мне зделать так чтобы после этого загрузилась этаже страница, но в которой уже в каком-либо месте написаны данные из post_value?
    как я понимаю эти данные надо где-нить сохранить... так? где луше всего это зделать?