LOGO: 深埋在最最狂野的季节
WWW.VGOT.NET
My heart is like an open highway, Like franke said I did it my way.
科技创造力量,网络成就梦想。凝聚天下,开阔眼界

PHP httpRequest function

发布时间:2010/08/09 15:44 分类:PHP开发 作者:pader 点击:4672
PHP开发
/**
* Respose A Http Request
*
* @param string $url
* @param array $post
* @param string $method
* @param bool $returnHeader
* @param string $cookie
* @param bool $bysocket
* @param string $ip
* @param integer $timeout
* @param bool $block
* @return string Response
*/
function httpRequest($url,$post='',$method='GET',$limit=0,$returnHeader=FALSE,$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE) {
   $return = '';
   $matches = parse_url($url);

   !isset($matches['host']) && $matches['host'] = '';
   !isset($matches['path']) && $matches['path'] = '';
   !isset($matches['query']) && $matches['query'] = '';
   !isset($matches['port']) && $matches['port'] = '';

   $host = $matches['host'];
   $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
   $port = !empty($matches['port']) ? $matches['port'] : 80;

   if(strtolower($method) == 'post') {
       $post = (is_array($post) and !empty($post)) ? http_build_query($post) : $post;
       $out = "POST $path HTTP/1.0\r\n";
       $out .= "Accept: */*\r\n";
       //$out .= "Referer: $boardurl\r\n";
       $out .= "Accept-Language: zh-cn\r\n";
       $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
       $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
       $out .= "Host: $host\r\n";
       $out .= 'Content-Length: '.strlen($post)."\r\n";
       $out .= "Connection: Close\r\n";
       $out .= "Cache-Control: no-cache\r\n";
       $out .= "Cookie: $cookie\r\n\r\n";
       $out .= $post;
   } else {
       $out = "GET $path HTTP/1.0\r\n";
       $out .= "Accept: */*\r\n";
       //$out .= "Referer: $boardurl\r\n";
       $out .= "Accept-Language: zh-cn\r\n";
       $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
       $out .= "Host: $host\r\n";
       $out .= "Connection: Close\r\n";
       $out .= "Cookie: $cookie\r\n\r\n";
   }

   $fp = fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

   if(!$fp) return ''; else {
       $header = $content = '';

       stream_set_blocking($fp, $block);
       stream_set_timeout($fp, $timeout);
       fwrite($fp, $out);
       $status = stream_get_meta_data($fp);

       if(!$status['timed_out']) {//未超时
           while (!feof($fp)) {
               $header .= $h = fgets($fp);
               if($h && ($h == "\r\n" ||  $h == "\n")) break;
           }

           $stop = false;
           while(!feof($fp) && !$stop) {
               $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
               $content .= $data;
               if($limit) {
                   $limit -= strlen($data);
                   $stop = $limit <= 0;
               }
           }
       }
    fclose($fp);

       return $returnHeader ? array($header,$content) : $content;
   }
}

本文内容由 VGOT Design 原创,转载请保留原文链接:http://www.vgot.net/?A250.htm

网友评论
  • 评论正在加载...
发表评论
名字: 主页: 邮箱:
© Copyrights VGOT.NET 2008-2009 皖ICP备17000202号-1
Processed in 0.00704 second(s), 4 Queries, Memory 566.45 KB.