За последние 24 часа нас посетили 61853 программиста и 1591 робот. Сейчас ищут 907 программистов ...

Заголовки браузера приходят POST или GET?

Тема в разделе "PHP для новичков", создана пользователем блудный сын, 12 июл 2008.

  1. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Подскажите каким методом браузер передает свои заголовки на сервер, методом POST или GET?
     
  2. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
  3. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    а если серьёзно, то Http
     
  4. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Так каким же?
     
  5. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    А каким вы хотите? :)
     
  6. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    блудный сын
    Ухоха, заголовки отправляются И для метода пост, И для метода гет. Теперь перечитай свой вопрос )))
     
  7. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Спасибо! Кажись немного прояснилось. Но все равно мне непонятно, как так получается у сервера разделить данные на заголовки браузера и на сами ПОСТ данные? Вот смотрите, заголовки браузера идут в переменные $_SERVER, например:
    Код (Text):
    1. _SERVER["HTTP_USER_AGENT"]  Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3
    2. _SERVER["HTTP_ACCEPT"]  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    3. _SERVER["HTTP_ACCEPT_LANGUAGE"] ru,en-us;q=0.7,en;q=0.3
    4. _SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate
    5. _SERVER["HTTP_ACCEPT_CHARSET"]  windows-1251,utf-8;q=0.7,*;q=0.7
    6. _SERVER["HTTP_KEEP_ALIVE"]  300
    7. _SERVER["HTTP_CONNECTION"]  keep-alive
    а ПОСТ данные идут в переменные $_POST:
    Код (Text):
    1. _POST["name"]3453454
    2. _POST["pass"]***** 
    3. _POST["send"]Отправить
    Почему заголовки браузера передаваемые методом ПОСТ не идут в переменные $_POST? И наоборот, почему для данных ПОСТ на серверe не фигурируют переменные $_SERVER?
     
  8. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    вот я смотрю на тему во фрилансе про залогинивание. Читаю эту тему. И вопрос: а зачем это вообще нужно? Может поставить какой-нить ALL robo form иль какой-нить менеджер паролей?
     
  9. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    блудный сын
    Потому, что это разные вещи. Заголовки формирует агент (браузер либо сервер, смотря куда идут данные), остальное формирует пользователь (либо приложение на сервере). Первая часть является служебной, и предназначена в основном для нужд веб-сервера либо браузера. Вторая - для нужд самого веб-приложения. Конечно, эти нужды нередко пересекаются, например в заголовках указывается кодировка содержания, но все же это понятия разного уровня.

    А чисто технически, как их ухитряются разделять при анализе запроса-ответа - ты будешь смеяться, но очень просто. Содержимое идет после заголовков и отделяется от них пустой строкой. Вот и все :)
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    блудный сын
    Браузер их просто передает :)
    Понимаешь, это как астральные суперзагловоки, которые кастово-иерархически выше POST и GET на два переноса строки. Поэтому маг PHP помещает их в колбу высшего существа, к которому может обращаться браузер - $_SERVER.
     
  11. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Надо.
    Эти твои слова действительно все бы объяснили! Но вот мой код и в нем ПОСТ данные от заголовков пустой строкой не отделены, однако Имя и Пароль фигурируют на сервере в переменных $_POST , а заголовки браузера в переменных $_SERVER. Как так сервер угадал, что и куда раскидывать по переменным если нет пустой строки?
    PHP:
    1. <?php
    2. $hostname="test";
    3. $path="/index.php";
    4. $line="";
    5. //Устанавливаем соединение имя которого передано
    6. //в параметре $hostname
    7. $fp=fsockopen($hostname,80,$errno,$errstr);
    8. //проверяем успешность установки соединения
    9. if (!$fp) echo "$errstr($errno)<br />\n";
    10.     else
    11.     {
    12.     //HTTP POST данные запроса
    13.     $data="name=".urlencode("Имя")."&pass=".urlencode("Пароль")."\r\n\r\n";
    14.     //заголовок HTTP - запроса
    15.     $headers="POST $path HTTP/1.1\r\n";
    16.     $headers.="Host: $hostname\r\n";
    17.     $headers.='User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3\r\n';
    18.     $headers.="Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
    19.     $headers.="Accept-Encoding: gzip,deflate\r\n";
    20.     $headers.="Content-type: application/x-www-form-urlencoded\r\n";
    21.     $headers.="Content-Length: ".strlen($data)."\r\n";
    22.     $headers .="Connection: Close\r\n\r\n";
    23.     //Отправляем HTTP  - запрос серверу
    24.    
    25.     fwrite($fp,$headers.$data);
    26.     // Получаем ответ
    27.     while(!feof($fp))
    28.         {
    29.         $line .=fgets($fp,32);
    30.         }
    31.     fclose($fp);
    32.     }
    33. echo $line;
    34. ?>
     
  12. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    блудный сын
    А это что?
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    блудный сын
    Вот два примера реальных заголовков:
    1. Перехожу в этот топик (GET- Запрос)
    2. Отсылаю этот пост:

    Отсылать заголовки в PHP можно через fsockopen или через curl
     
  14. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Но извините! Пустая строка ведь идет после ПОСТ данных! А не между заголовками и данными ПОСТ! Как же сервер догадался, что куда?
     
  15. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Я пока узаю fsockopen
     
  16. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Ой! Все! Врубился! Тьфу блин! В заголовках ведь только длина данных указывалась, а сами данные пошли после во fwrite($fp,$headers.$data);! Вот невнимательный стал :( Спасибо Dagdamor!!!
     
  17. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Правда теперь ошибка наверно в том. что при отправке ПОСТ данных в заголовке правильно писать не $headers .="Connection: Close\r\n\r\n"; а что-то другое? Наверное Connection: keep-alive ?
     
  18. Anonymous

    Anonymous Guest

    Где? Не вижу. данные шлются вот тут:
    fwrite($fp,$headers.$data);
    т.е. Заголовки + данные.
     
  19. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Я это недоглядел :(
     
  20. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    А какой в случае ПОСТ данных Connection: правильно в заголовках слать? Connection: Close\r\n\r\n наверно не подходит. т.к. получается что соединение должно закрыться до отправки самих ПОСТ данных?
     
  21. Anonymous

    Anonymous Guest

    По большому счету без разницы. Это для другого используется.
     
  22. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Хорошо. Спасибо!
     
  23. snug

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

    С нами с:
    8 июн 2008
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    Донецк
    А как отправить данные, допустим на google.ru?
    Например мне нужно вставить в форму поисковика запрос "site:www.moisite.ru" и "нажать" поиск чтоб выдало колличество проиндексированных страниц.
    Для этого приемлима функция fwrite($fp,$headers.$data); И если да , то как вписать данные и сделать так, чтоб они попали в форму?
     
  24. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Люди, перестаньте насиловать сами себя и пользуйтесь уже cURL-ом. :/
     
  25. Cron

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

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    На google.ru данные о поиске передаються методом Get. Зайдите туда, введите запрос, нажмите искать и обратите внимание на адресную строку браузера.