需求使用curl_init 在同一域名下抓取,需要传cookie 跪求 怎么设置   curl_setopt($ch, CURLOPT_COOKIE, "");(写程序的抓的页面可以得到cookie) 在线等

解决方案 »

  1.   

    不管curl有没有提供cookie管理功能,cookie本身是在httpheader传递的,自己构造header就可以把cookie提交过去
      

  2.   

    获取从响应的header Set-Cookie可以把新的cookie读取出来
      

  3.   


    curl_setopt($this->curl, CURLOPT_HTTPHEADER, $this->buildHeader());
        protected function buildHeader()
        {
            $header = array();
            $header[] = "POST " . $this->url . " HTTP/1.1";
            $header[] = "Host: " . $this->host;
            $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            $header[] = "Accept-language: zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,da;q=0.2";
            $header[] = "Accept-Encoding: gzip, deflate";
            $header[] = "Connection: close";
            $header[] = "Cookie: session_id=a234ds3423dsfs";
            $header[] = 'Expect:100-continue';
            return $header;
        }
      

  4.   

    费那劲干嘛?
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
    就把 cookie 保存到了文件 $cookiejar 中
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
    就把文件 $cookiejar 中的 cookie 发送出去了curl_setopt($ch, CURLOPT_COOKIE, ".....");
    只是作为补充手段而存在的
      

  5.   


    $v=$_COOKIE['na'];
     $header = array();
       $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
       $header[] = "Cookie: $v";
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
     这个不行呢。
      

  6.   


    不错,咱是做.net的不熟悉php
      

  7.   


    那请问你一下  $cookiejar  这个文件的话 cookie是怎么存的,麻烦你告诉一下
      

  8.   


    $v=$_COOKIE['na'];
     $header = array();
       $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
       $header[] = "Cookie: $v";
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
     这个不行呢。格式不对
      

  9.   


    $v=$_COOKIE['na'];
     $header = array();
       $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
       $header[] = "Cookie: $v";
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
     这个不行呢。格式不对
    那样怎么弄?
      

  10.   

    那请问你一下  $cookiejar  这个文件的话 cookie是怎么存的,怎么设置呢,麻烦你告诉一下,谢谢了
      

  11.   

    $cookiejar 的值是一个真实存在的文件名(应该是绝对路径的)
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar); 后,该文件中会以浏览器 cookie 文件格式存放接收到的所有 cookie 数据