Using PHP to read a web page with fsockopen(), but fgets is not working

Posted by asdasd on Stack Overflow See other posts from Stack Overflow or by asdasd
Published on 2010-06-14T04:53:44Z Indexed on 2010/06/14 5:02 UTC
Read the original article Hit count: 288

Filed under:
|
|

Im using this code here: http://www.digiways.com/articles/php/httpredirects/

public function ReadHttpFile($strUrl, $iHttpRedirectMaxRecursiveCalls = 5)
{
    // parsing the url getting web server name/IP, path and port.
    $url = parse_url($strUrl);
    // setting path to '/' if not present in $strUrl
    if (isset($url['path']) === false)
  $url['path'] = '/';
    // setting port to default HTTP server port 80
    if (isset($url['port']) === false)
 $url['port'] = 80;
    // connecting to the server]



    // reseting class data        
    $this->success = false;
    unset($this->strFile);
    unset($this->aHeaderLines);
    $this->strLocation = $strUrl;

$fp = fsockopen ($url['host'], $url['port'], $errno, $errstr, 30); // Return if the socket was not open $this->success is set to false. if (!$fp) return; $header = 'GET / HTTP/1.1\r\n'; $header .= 'Host: '.$url['host'].$url['path']; if (isset($url['query'])) $header .= '?'.$url['query']; $header .= '\r\n'; $header .= 'Connection: Close\r\n\r\n'; // sending the request to the server echo "Header is:
".str_replace('\n', '\n
', $header)."
"; $length = strlen($header); if($length != fwrite($fp, $header, $length)) { echo 'error writing to header, exiting
'; return; } // $bHeader is set to true while we receive the HTTP header // and after the empty line (end of HTTP header) it's set to false. $bHeader = true; // continuing untill there's no more text to read from the socket while (!feof($fp)) { echo "in loop"; // reading a line of text from the socket // not more than 8192 symbols. $good = $strLine = fgets($fp, 128); if(!$good) { echo 'bad'; return; } // removing trailing \n and \r characters. $strLine = ereg_replace('[\r\n]', '', $strLine); if ($bHeader == false) $this->strFile .= $strLine.'\n'; else $this->aHeaderLines[] = trim($strLine); if (strlen($strLine) == 0) $bHeader = false; echo "read: $strLine
"; return; } echo "
after loop
"; fclose ($fp);

}

This is all I get:

Header is:
GET / HTTP/1.1\r\n
Host: www.google.com/\r\n
Connection: Close\r\n\r\n
in loopbad

So it fails the fgets($fp, 128);

© Stack Overflow or respective owner

Related posts about php

Related posts about read