`
baiyuxiong
  • 浏览: 174954 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

fsockopen读取、发送cookie及注意事项 -代码示例

    博客分类:
  • php
PHP 
阅读更多
代码:

function httpPost($url, $data,$cookieStr='')
{
	$url_array = parse_url($url);	
	$host = $url_array['host'];
	$port = isset($url_array['port'])?($url_array['port']):80;
	
	 if(!($conn = fsockopen($host,$port,$errno, $errstr, 30)))
	{
		 return false; 
	} 
			
	$header = "POST ".$url." HTTP/1.1\r\n";
	$header.= "Host : {$host}\r\n";
	$header.= "Content-type: application/x-www-form-urlencoded\r\n";
	$header.= "Content-Length:".strlen($data)."\r\n";
	$header.= "Connection: close\r\n";
        //这里是用来写cookie的
	if (!empty($cookieStr)) {
		$header.="Cookie: ".$cookieStr."\r\n";
	}
	//注意下面开头还加了个换行,结尾是两个换行
	$header.= "\r\n{$data}\r\n\r\n";
	
	//写数据
	fwrite($conn,$header);
	
    //这里读cookie
	$cookieStr=array();
    //下面的判断,读到空行时,说明头已经结束了,接下来是内容。
    while( ($line=trim(fgets($conn))) != "" )   
        {   
			$header.=$line; /*   */
            if(strstr($line,"Set-Cookie:"))   
            {   
                list($coo,$cookieLine)=explode(" ",$line);
                $cookieStr[] = $cookieLine;
            } 
        } 
    //if($len <= 0)   
    //{   
    //    return false; 
   // } 
    //读数据
    //$body=fread($conn,$len); 
    while (!feof($conn)) {
	  $body .= fread($conn, 8192);
	}
      
	fclose($conn);
	
	$result['body'] = $body;
	$result['cookieArr'] = $cookieStr;
	
	return $result;
}

分享到:
评论
3 楼 baiyuxiong 2010-11-10  
用到的时候自然会想起来的,呵呵


hjb510 写道
  不错,是篇好文章啊!现在只知道在抓取网页的时候有用,不知道在别的什么地方还可以使用啊?

有空介绍下使用场景也不错啊!学习学习!

2 楼 hjb510 2010-11-10  
  不错,是篇好文章啊!现在只知道在抓取网页的时候有用,不知道在别的什么地方还可以使用啊?

有空介绍下使用场景也不错啊!学习学习!
1 楼 mimang2007110 2010-10-19  
我再来深度支持一下牛大哥,O(∩_∩)O~ 

相关推荐

Global site tag (gtag.js) - Google Analytics