<?php
set_time_limit(0);
//$cookfile = tempnam('./temp', 'cookie');
$cookfile = dirname(__FILE__).'/cookie.txt';// 创建一个新cURL资源
$ch = curl_init();// 设置URL和相应的选项
$HTTP_REQUEST_HEADER = array(
"method" =>  "POST", 
"timeout" => 30,
"Content-Type" => "application/x-www-form-urlencoded; charset=UTF-8",
"Referer" => "https://login.vancl.com/Login/Login.aspx?http://my.vancl.com/",
"Client-IP" => "112.4.2.12",
"X-Forwarded-For" => "112.4.2.12",
"Host" => "login.vancl.com"
);$url = "https://login.vancl.com/Login/XmlCheckUserName.ashx"; 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13)");
curl_setopt($ch, CURLOPT_HTTPHEADER, $HTTP_REQUEST_HEADER);
curl_setopt($ch, CURLOPT_POSTFIELDS, "[email protected]&Loginasync=true&[email protected]");     
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookfile);   // 连接断开后保存cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookfile); // cookie 写入文件
curl_setopt($ch, CURLOPT_COOKIESESSION, 1); 
//以下为SSL设置
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);// 抓取URL并把它传递给浏览器
$res = curl_exec($ch);echo curl_error($ch);//关闭cURL资源,并且释放系统资源
curl_close($ch);
var_dump( $res);  //这里如果登录失败会显示 密码错误, 但是成功的话好像也不返回什么东西?
//上面是模拟登陆的部分, 下面是直接进入一个成功登录之后的页面, 但是却不成功, 如果我把cookie.txt保存到的cookie直接编辑网站的cookie再刷新页面就没问题, 难道是cookie 没发送成功吗?
$ch1 = curl_init();$url = "http://my.vancl.com/1/Usercenter/Account.aspx"; curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookfile);
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 0); //1 不显示结果页
curl_setopt($ch1, CURLOPT_URL, $url);$res = curl_exec($ch1);
//关闭cURL资源,并且释放系统资源
curl_close($ch1);
?>

解决方案 »

  1.   

    登录时获取cookies,登录后发送cookies后面那部分为何没有发送cookies呢?登录后你看哪页都要发cookies啊,不然对方怎么知道你已经登陆了?
      

  2.   

    晕, 大哥麻烦你仔细看看, 我cookie怎么没发送了?curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookfile);还是我上面这句发送cookie的写错了?
      

  3.   

    curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookfile);
    只是接受 cookie
    curl_setopt($ch1, CURLOPT_COOKIEJAR, $cookfile);
    才是发送 cookie
      

  4.   


    no, 不需要的, 现在登陆没问题的, cookie 也都正常, 哎, 看着像是cookie发送不出去似的...