用curl通过header发送cookie的问题。 http://www.netingcn.com/php-header-set-cookie.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 替换成set-cookie也不行呀。其实一样的header不用curl发送是正常的,但是用curl发送就不行了。必须单独设置cookie才可以。 显然是你写的有问题了要这样的格式curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cookie:b=2;a=3')); 我之前就是这样写的呀。因为我不用curl发送header就正常,说明我的格式应该没有问题的。听了楼上的仁兄才试试set-cookie 之前你是怎么写的,你没说,我不知道!我给你的写法是不会错的在 HTTP 头中:Cookie 表示的是上行的 cookieSet-Cookie 表示的是下行的 cookie 我试过了真不行啊,不信你可以试试。$ch = curl_init(); // 启动一个CURL会话curl_setopt($ch, CURLOPT_TIMEOUT, $this->read_timeout); // 设置超时curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址 //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 //$headers[] = array('X-FORWARDED-FOR:111.222.333.4', 'CLIENT-IP:111.222.333.4');//伪造来源ip //发送post数据 if(!empty($body)){ curl_setopt($ch, CURLOPT_POST,1); var_dump($body); curl_setopt($ch, CURLOPT_POSTFIELDS, $body); } //curl_setopt($ch, CURLOPT_COOKIE , $cookie_str ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 发送header curl_setopt($ch, CURLOPT_HEADER, 1); // 显示返回的Header区域内容 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $response = curl_exec($ch); //分离 $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $result_headers = substr($response, 0, $headerSize); $results = substr($response, $headerSize);不要使用 CURLOPT_COOKIE,我已经注释了。靠header发送cookie,无论用何种格式。看看成不成功就知道了。 测试代码if($_COOKIE) { print_r($_COOKIE); exit;}$url = "http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]";$headers = array('Cookie:a=1;b=2');$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 发送headercurl_exec($ch);Array ( [a] => 1 [b] => 2 ) 你说你的不行,那是当然的!你的 $headers 都是被注释掉的 我的header哪里被注释了?我不知道你是怎么测试的。你可以测试一下百度登陆。把你的cookie放进去发送,看看获取到的网页百度是不是已经登陆了 寻网站制作者,开发php+oracle,或JAVA+oracle的站点 一个验证码的问题,如何实现点击“看不清”,就能重刷新验证码呢? php输出图片的问题 phpMyAdmin一打开就乱码 PHP如何读XML(刚学PHP,请大家帮一下) 看到php文件中有这么一条语句: 无限分类的删除问题(高手请进) 求教:用jpgraph生成的含有X和Y轴的折线图,怎样修改X轴默认显示的坐标数值? 自己做的web文件上传页,本机上运行良好,传到虎翼发生错误,请高手指点 关于B/S开发的问题 Mamcached分布式部署方案设计(含PHP代码) 问个二位数组操作问题
替换成set-cookie也不行呀。
其实一样的header不用curl发送是正常的,但是用curl发送就不行了。必须单独设置cookie才可以。
要这样的格式
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cookie:b=2;a=3'));
我之前就是这样写的呀。因为我不用curl发送header就正常,说明我的格式应该没有问题的。听了楼上的仁兄才试试set-cookie
我给你的写法是不会错的在 HTTP 头中:
Cookie 表示的是上行的 cookie
Set-Cookie 表示的是下行的 cookie
我试过了真不行啊,不信你可以试试。
$ch = curl_init(); // 启动一个CURL会话curl_setopt($ch, CURLOPT_TIMEOUT, $this->read_timeout); // 设置超时
curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
//$headers[] = array('X-FORWARDED-FOR:111.222.333.4', 'CLIENT-IP:111.222.333.4');//伪造来源ip
//发送post数据
if(!empty($body)){
curl_setopt($ch, CURLOPT_POST,1);
var_dump($body);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
}
//curl_setopt($ch, CURLOPT_COOKIE , $cookie_str );
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 发送header
curl_setopt($ch, CURLOPT_HEADER, 1); // 显示返回的Header区域内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$response = curl_exec($ch);
//分离
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$result_headers = substr($response, 0, $headerSize);
$results = substr($response, $headerSize);
不要使用 CURLOPT_COOKIE,我已经注释了。靠header发送cookie,无论用何种格式。看看成不成功就知道了。
print_r($_COOKIE);
exit;
}
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]";
$headers = array('Cookie:a=1;b=2');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 发送header
curl_exec($ch);
Array ( [a] => 1 [b] => 2 ) 你说你的不行,那是当然的!
你的 $headers 都是被注释掉的
我的header哪里被注释了?我不知道你是怎么测试的。你可以测试一下百度登陆。把你的cookie放进去发送,看看获取到的网页百度是不是已经登陆了