ID:               36604
 Updated by:       [EMAIL PROTECTED]
 Reported By:      chentie at livedoor dot cn
-Status:           Feedback
+Status:           Closed
 Bug Type:         *URL Functions
 Operating System: freebsd 5
 PHP Version:      5.1.2
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

Has been fixed in CVS for a while now.
http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/http_fopen_wrapper.c?r1=1.99.2.8&r2=1.99.2.9&diff_format=u


Previous Comments:
------------------------------------------------------------------------

[2006-03-03 16:18:36] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5.1-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.1-win32-latest.zip



------------------------------------------------------------------------

[2006-03-03 13:23:34] chentie at livedoor dot cn

conside => consider

------------------------------------------------------------------------

[2006-03-03 13:09:04] chentie at livedoor dot cn

Description:
------------
get_headers("http://bugs.php.net/welcometochina.php";)

the result is like this:
Warning: get_headers (http://bugs.php.net/welcometochina.php): failed
to open stream: HTTP request failed! HTTP/1.1 404 Not Found

but i think it should be like this:
HTTP/1.1 404 Not Found
Content-Length: 1635
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 03 Mar 2006 11:30:47 GMT
Connection: close

and other http status code such as 403

i hate to touch you in others method,here is my code for that problem:

   function get_headers($url,$format=0) {
       $url=parse_url($url);
       if (empty($url["path"])) {
           $url["path"]="/";
       }
       print_r($url);
       $end = "\r\n\r\n";
       $fp = fsockopen($url['host'],
(empty($url['port'])?80:$url['port']), $errno, $errstr, 30);
       if ($fp) {
           $out  = "GET {$url["path"]} HTTP/1.1\r\n";
           $out .= "Host: ".$url['host']."\r\n";
           $out .= "Connection: Close\r\n\r\n";
           $var  = '';
           fwrite($fp, $out);
           while (!feof($fp)) {
               $var.=fgets($fp, 1280);
               if(strpos($var,$end))
                   break;
           }
           print $var; 
           fclose($fp);

           $var=preg_replace("/\r\n\r\n.*\$/",'',$var);
           $var=explode("\r\n",$var);
           if($format) {
               foreach($var as $i) {
                   if(preg_match('/^([a-zA-Z -]+):
+(.*)$/',$i,$parts))
                       $v[$parts[1]]=$parts[2];
               }
               return $v;
           }
           else
               return $var;
       }
   }

here i didn't conside the loction of code 301,because i think 
it's not the true URI ,just return the 301 response is OK 

at last, sorry for my english,welcome to china 2008! ;-p  



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=36604&edit=1

Reply via email to