问什么下面这段代码得不到正确的cookie?$url = "http://www.edai365.cn/Index/login.aspx";
$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
$cookie = "cnzz_eid=43361819-1349499907-&ntime=1349499907&cnzz_a=1&retime=1349499930944&sin=none&ltime=1349499930944&rtime=0";
$ch= curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_REFERER, "http://www.edai365.cn/Index/login.aspx");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
curl_exec($ch);
$tempCn = curl_multi_getcontent($ch);
curl_close($ch);
echo  $tempCn;

解决方案 »

  1.   

    $cookie_jar="";
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
    指定一个cookie的保存地址;
    用的时候
    加上curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);不知道符不符合你的要求
      

  2.   

    不知道你想干什么
    http://www.edai365.cn/Index/login.aspx 是登陆页面,核心是一个表单
    如果你是想模拟登陆,至少也需要模拟提交的表单数据
      

  3.   

    是这样的 我总是得不到正确的cookie 而且总是返回登录界面
    刚接触CURL 望大神解救$url = "http://www.edai365.cn/Index/login.aspx";$post_fields = array(
    "txt_nickname"=>'baluwu',
    "txt_pwd"='000000');$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
    $cookie = "cnzz_eid=43361819-1349499907-&ntime=1349499907&cnzz_a=1&retime=1349499930944&sin=none&ltime=1349499930944&rtime=0";
    $ch= curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    curl_exec($ch);
    $tempCn = curl_multi_getcontent($ch);
    curl_close($ch);
    echo $tempCn;
      

  4.   

    <?php$url = "http://www.edai365.cn/Index/login.aspx";$post_fields = array(
    "txt_nickname"=>'baluwu',
    "txt_pwd"=>'000000');$useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)";
    $cookie = "cnzz_eid=43361819-1349499907-&ntime=1349499907&cnzz_a=1&retime=1349499930944&sin=none&ltime=1349499930944&rtime=0";
    $ch= curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS,  $post_fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_USERAGENT, $useragent);
    curl_exec($ch);
    $tempCn = curl_multi_getcontent($ch);
    curl_close($ch);
    echo $tempCn;?>
      

  5.   

    我測試了一下,可以抓取到成功登录的信息,至于为何进入登陆页面我也没有研究明白.
    // 模拟请求数据
    Function request($url,$postfields,$referer='',$cookie_jar='./cookie.txt'){
    $Cur = curl_init();
    $Opt = Array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => 1,
    CURLOPT_NOBODY => 1,
    CURLOPT_PORT => 80, //端口
    CURLOPT_POST => 1, //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
    CURLOPT_POSTFIELDS => $postfields,//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
    CURLOPT_RETURNTRANSFER => 1,// 获取的信息以文件流的形式返回,而不是直接输出。 CURLOPT_SSL_VERIFYHOST => 1,// 从证书中检查SSL加密算法是否存在
    CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
    CURLOPT_COOKIE => GetCook($url), CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",//模拟用户使用的浏览器,在HTTP请求中包含一个"user-agent"头的字符串。
    //CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
    CURLOPT_FOLLOWLOCATION => 0,
    CURLOPT_COOKIEJAR => Dirname(__FILE__).$cookie_jar,
    CURLOPT_COOKIEFILE => Dirname(__FILE__).$cookie_jar,
    CURLOPT_REFERER => $referer,
    );
    curl_setopt_array($Cur,$Opt);
    $code = curl_exec($Cur);
    curl_close($Cur);
    Unset($Cur);
    Return $code;
    }Function GetCook($url) {
    $Curl=curl_init($url);
    curl_setopt($Curl,CURLOPT_HEADER,1);
    curl_setopt($Curl,CURLOPT_RETURNTRANSFER,1);
    $Cook=curl_exec($Curl);
    curl_close($Curl);
    $Out='';
    preg_match("/_SessionId\=(.[^;]*)/i",$Cook,$Out);
    Return $Out[1];
    }$url = "http://www.edai365.cn/Index/login.aspx";
    $postfields='txt_nickname=baluwu&txt_pwd=000000&ddlcookietime='.UrlEncode('一周').'&ibt_login=';
    $a=request($url,$postfields);
    unset($postfields,$url);Echo "<textarea style='width:100%;height:200px'>",Chr(10),$a,Chr(10),"</textarea>";Die();
      

  6.   

    http://www.21andy.com/blog/20080507/1095.html
    看下,或许有帮助
      

  7.   

    解决这种问题最好的办法就是截包,看看正常的包和curl通信的包有什么不同就知道了
      

  8.   

    实在不行你就如楼上所说用sniffer拦截数据包看下吧
    http://www.52z.com/soft/1843.html