php работа с сокетами

Discussion in 'PHP' started by yesman, 23 Sep 2012.

  1. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    При работе с сокетами выдается ошибка 400 или приходит содержание страницы, но без заголовков. в чем проблема?

    код:

    $addr="aport.ru" ;
    $f=fsockopen($addr,80) or die("No connect");
    if($f)
    {
    fputs($f,"GET/HTTP /1.0 \r\n");
    fputs($f,"host:http://".$addr."\r\n");
    fputs($f,"Referer:$addr \r\n");
    fputs($f,"Accept:text/html \r\n");
    fputs($f,"Accept-charset:windows-1251 \r\n");
    fputs($f,"Accept-language:ru \r\n");

    while(!feof($f))
    {
    $text=fgets($f,4096);
    echo '<pre>'.htmlspecialchars($text).'<pre>';
    }
     
  2. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    красным выделены места с ошибками

    правильно:
    PHP:
    <?php
    $addr
    ="aport.ru" ;
    $f=fsockopen($addr,80) or die("No connect");
    if(
    $f)
    {
    fputs($f,"GET / HTTP/1.0 \r\n");
    fputs($f,"host:".$addr."\r\n");
    fputs($f,"Referer:$addr \r\n");
    fputs($f,"Accept:text/html \r\n");
    fputs($f,"Accept-charset:windows-1251 \r\n");
    fputs($f,"Accept-language:ru \r\n\r\n");

    while(!
    feof($f))
    {
    $text=fgets($f,4096);
    echo 
    '<pre>'.htmlspecialchars($text).'<pre>';
    }
    }
    http://php.net/manual/en/function.fsockopen.php
     
    #2 Skofield, 23 Sep 2012
    Last edited: 23 Sep 2012
  3. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    почему при отправке get запроса в поиск не возвращаются результаты поиска, а просто обычная страницы? код тот же, только одно поле другое

    fputs($f,"GET /?r=search%2FbestSite&q=hai/HTTP /1.0 \r\n");
     
  4. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Может быть потому, что вы опять синтаксические ошибки допускаете? Может нужно быть боле внимательным, или прочитать все же мануал, как бы сильно вам этого не хотелось, но это сэкономить уйму времени, как вашего, так и других людей!

     
    #4 Skofield, 25 Sep 2012
    Last edited: 25 Sep 2012
  5. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    бесполезно, даже ваш запрос ничего не выдает. почему при обращении к некоторым сайтам приходят заголовки ответа вместе с содержимым страницы, а при обращении к другим только содержимое страницы? почему при обращении к некоторым сайтам выдает ошибку 404, хотя сайт правильный? Возможно такое, что сервер просто блокирует сокеты? работаю через денвер, если что. может быть поэтому?
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    yesman
    Это технически невозможно.
    Значит URL неправильный, либо вы не передаете всех необходимых заголовков
    Нет, невозможно
    Без конкретных примеров страниц и вашего кода - невозможно сказать. Но судя по всему - ошибки происходят из-за того, что ваш код неправилен, только и всего
     
    _________________________
  7. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    где тогда можно прочитать мануал по правильному составлению заголовков?
     
  8. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    WIKI HTTP протокол,
     
  9. Electr0sis

    Electr0sis New Member

    Joined:
    7 May 2008
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    fopen not healty, sometimes making problem..
     
  10. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    ТС хоть бы спасибо Skofield'у, Gifts'у и mironich'у сказал. :\