本帖最后由 h420943302 于 2012-12-11 11:18:30 编辑

解决方案 »

  1.   

    // 模拟请求数据
    Function Curl($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 => 1,
    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("/ssid\=(.[^;]*)/i",$Cook,$Out);
    Return $Out[1];
    } $url = "http://pcik.7di.net/pcik_in";
    $postfields='g=yes&username=see7di&password=www.7di.net999&id=&code=';
    $a=Curl($url,$postfields);
    unSet($postfields,$url); Echo "<textarea style='width:100%;height:200px'>",Chr(10),$a,Chr(10),"</textarea>";Die();
    你試試我這個
      

  2.   

    你的 $cookie_id 的值是从哪里来的?看上去表单是 ThinkPHP 的,如果目标页启用了 token,那么你这静态的 cookie 是不可能通过验证的
      

  3.   

    呵呵 谢谢大家的 回答 我已经解决了
    cookie  抓包得到的  可用的  我上面说了 是可以到达 指定页面的  (也就是cookie可用) 只是没有post效果