解决方案 »

  1.   


    替换成set-cookie也不行呀。
    其实一样的header不用curl发送是正常的,但是用curl发送就不行了。必须单独设置cookie才可以。
      

  2.   

    显然是你写的有问题了
    要这样的格式
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Cookie:b=2;a=3')); 
      

  3.   


    我之前就是这样写的呀。因为我不用curl发送header就正常,说明我的格式应该没有问题的。听了楼上的仁兄才试试set-cookie
      

  4.   

    之前你是怎么写的,你没说,我不知道!
    我给你的写法是不会错的在 HTTP 头中:
    Cookie 表示的是上行的 cookie
    Set-Cookie 表示的是下行的 cookie
      

  5.   


    我试过了真不行啊,不信你可以试试。
    $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,无论用何种格式。看看成不成功就知道了。
      

  6.   

    测试代码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); // 发送header
    curl_exec($ch);
    Array ( [a] => 1 [b] => 2 ) 你说你的不行,那是当然的!
    你的 $headers 都是被注释掉的
      

  7.   


    我的header哪里被注释了?我不知道你是怎么测试的。你可以测试一下百度登陆。把你的cookie放进去发送,看看获取到的网页百度是不是已经登陆了