本帖最后由 u014203582 于 2014-04-05 12:06:58 编辑

解决方案 »

  1.   

    CURLOPTFOLLOWLOCATION
    应为
    CURLOPT_FOLLOWLOCATION还有就是你的这些代码的执行次序
      

  2.   

     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      

  3.   

    而且你的验证码也不需要curl获取。直接
    <img src="http://xk.shnu.edu.cn:82/ValidateCode.aspx?codeLen=5&aFineness=90&ImgWidth=85&PosX=4&PosY=1&FontFamily=Arial&FontSize=14&FontStyle=3"> 即可
      

  4.   

    curl 访问 http://xk.shnu.edu.cn:82/index.aspx 用于获取 cookie
    解析出验证码图片地址
    表单页,填写用户信息和验证码值
    curl 提交
      

  5.   

    流程中只第一次才有 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    以后每部都不能有,不然读到的 cookie 会改变
      

  6.   

    刚接触 还是不理解   
    意思是 我的post页面里不再需要curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);吗?
      

  7.   

    怎么知道验证码需不需要curl获取啊?
      

  8.   

    版主 我加上隐藏值了  也还是不行
    <?php$user=$_POST["stuno"];
    $password=$_POST["stupwd"];
    $yzm=$_POST["stuyzm"];
    //echo $user;
    //echo $password;
    //echo $yzm;
    $cookie_file = tempnam('./temp','cookie');
    $login_url = 'http://xk.shnu.edu.cn:82/index.aspx';
    $post_fields = array("cktime"=>"3153600","__VIEWSTATE"=>"/wEPDwUKMTU3NjIwMDY1MQ9kFgICAw9kFgQCEQ88KwAJAQAPFgQeCERhdGFLZXlzFgAeC18hSXRlbUNvdW50AghkFhBmD2QWAmYPFQQx5pys5a2m5pyf5a2m55Sf5oiQ57up6K+35LqOMjAxNOW5tDHmnIgyNuaXpeafpeivoggwMDAwMDAzMzHmnKzlrabmnJ/lrabnlJ/miJDnu6nor7fkuo4yMDE05bm0MeaciDI25pel5p+l6K+iCDIwMTQwMTE2ZAIBD2QWAmYPFQQ3MjAxMee6p+acrOenkeeUn+WPr+S7peWPguWKoOS4iua1t+W4gumrmOagoeWFseS6q+ivvueoiwgwMDAwMDAzMjcyMDEx57qn5pys56eR55Sf5Y+v5Lul5Y+C5Yqg5LiK5rW35biC6auY5qCh5YWx5Lqr6K++56iLCDIwMTMxMjIwZAICD2QWAmYPFQQd5Yid6YCJMjAxM+W5tDEy5pyIMTLml6XlvIDlp4sIMDAwMDAwMzEd5Yid6YCJMjAxM+W5tDEy5pyIMTLml6XlvIDlp4sIMjAxMzExMjhkAgMPZBYCZg8VBHPlhbPkuo7miJHmoKEyMDEx57qn5pys56eR55Sf5Y+C5Yqg5LiK5rW35biC6auY5qCh5YWx5Lqr6K++56iL6YCJ6K++4oCc56Gu6K6k44CB5aKe6YCJ44CB6YCA5pS56YCJ4oCd5bel5L2c55qE6YCa55+lCDAwMDAwMDMwc+WFs+S6juaIkeagoTIwMTHnuqfmnKznp5HnlJ/lj4LliqDkuIrmtbfluILpq5jmoKHlhbHkuqvor77nqIvpgInor77igJznoa7orqTjgIHlop7pgInjgIHpgIDmlLnpgInigJ3lt6XkvZznmoTpgJrnn6UIMjAxMzA5MDJkAgQPZBYCZg8VBCTlrabnlJ/or7fms6jmhI/vvJrmnJ/mnKvmnIDmlrDpgJrnn6UIMDAwMDAwMjkk5a2m55Sf6K+35rOo5oSP77ya5pyf5pyr5pyA5paw6YCa55+lCDIwMTMwNzE2ZAIFD2QWAmYPFQQn6K+35ZCE5L2N5ZCM5a2m5LiN6KaB6ZSZ6L+H5aSN6YCJ5pe26Ze0CDAwMDAwMDI4J+ivt+WQhOS9jeWQjOWtpuS4jeimgemUmei/h+WkjemAieaXtumXtAgyMDEzMDYyNGQCBg9kFgJmDxUEJ+S4iua1t+W4gumrmOagoeWFseS6q+ivvueoi+mAieivvumAmuefpQgwMDAwMDAyNyfkuIrmtbfluILpq5jmoKHlhbHkuqvor77nqIvpgInor77pgJrnn6UIMjAxMzA2MjFkAgcPZBYCZg8VBDflhbPkuo4yMDEz5bm056eL5a2j5YWl5a2m5paw55Sf5L+h5oGv5qC45a+55pON5L2c5oyH5Y2XCDAwMDAwMDE2N+WFs+S6jjIwMTPlubTnp4vlraPlhaXlrabmlrDnlJ/kv6Hmga/moLjlr7nmk43kvZzmjIfljZcIMjAxMzA5MDZkAhMPD2QPDxQrAAEWCB4ETmFtZQULc3RyQ29uZHRpb24eBFR5cGULKVxTeXN0ZW0uVHlwZUNvZGUsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4ORIeDERlZmF1bHRWYWx1ZQVlIGlkX01zZyBpbiAoIHNlbGVjdCBpZF9Nc2cgZnJvbSBYeE1zZ05vdGlmeVJvbGUgd2hlcmUgUm9sZUlkID0gJzAwMDEwMDA1Jykgb3JkZXIgYnkgcmVsZWFzZWRhdGUgZGVzYyAeDlBhcmFtZXRlclZhbHVlZBQrAQECA2RkZGIgE9UDulG9GvRO4dsU+SdCCEFM","__EVENTVALIDATION"=>"/wEWBgKY0u7vCwLT8dy8BQLG8eCkDwKuqciQCQKC3IeGDAKO8J4Nk+MLn7wUWUDvvoz1eyVjqKX9ZAs=","pwuser"=>$user,"pwpwd"=>$password);
        $ch = curl_init($login_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    curl_exec($ch);
        curl_close($ch);
        
        $url='http://xk.shnu.edu.cn:82/StudentManage/wfmXsStuBaseUpdate.aspx';
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
        $contents = curl_exec($ch);
        curl_close($ch);?>
      

  9.   

    你在 pos 页面中
    $cookie_file = tempnam('./temp','cookie');
    你在获取验证码程序中
    $cookie_file =  $filedir."/cookie.txt";整个过程中使用了不同的 cookie 文件,显然不能保证 cookie 是一致的
      

  10.   

    我用firebug调试 发现隐藏值没有传进去,为什么啊?
    其他的值都有,传输方式跟其他的一样
    $user=$_POST["stuno"];
    $password=$_POST["stupwd"];
    $yzm=$_POST["stuyzm"];
    //echo $user;
    //echo $password;
    //echo $yzm;
    $cookie_file = tempnam('./temp','cookie');
    $login_url = 'http://xk.shnu.edu.cn:82/index.aspx';
    $post_fields = array("cktime"=>"3153600","__VIEWSTATE"=>"/wEPDwUKMTU3NjIwMDY1MQ9kFgICAw9kFgQCEQ88KwAJAQAPFgQeCERhdGFLZXlzFgAeC18hSXRlbUNvdW50AghkFhBmD2QWAmYPFQQx5pys5a2m5pyf5a2m55Sf5oiQ57up6K+35LqOMjAxNOW5tDHmnIgyNuaXpeafpeivoggwMDAwMDAzMzHmnKzlrabmnJ/lrabnlJ/miJDnu6nor7fkuo4yMDE05bm0MeaciDI25pel5p+l6K+iCDIwMTQwMTE2ZAIBD2QWAmYPFQQ3MjAxMee6p+acrOenkeeUn+WPr+S7peWPguWKoOS4iua1t+W4gumrmOagoeWFseS6q+ivvueoiwgwMDAwMDAzMjcyMDEx57qn5pys56eR55Sf5Y+v5Lul5Y+C5Yqg5LiK5rW35biC6auY5qCh5YWx5Lqr6K++56iLCDIwMTMxMjIwZAICD2QWAmYPFQQd5Yid6YCJMjAxM+W5tDEy5pyIMTLml6XlvIDlp4sIMDAwMDAwMzEd5Yid6YCJMjAxM+W5tDEy5pyIMTLml6XlvIDlp4sIMjAxMzExMjhkAgMPZBYCZg8VBHPlhbPkuo7miJHmoKEyMDEx57qn5pys56eR55Sf5Y+C5Yqg5LiK5rW35biC6auY5qCh5YWx5Lqr6K++56iL6YCJ6K++4oCc56Gu6K6k44CB5aKe6YCJ44CB6YCA5pS56YCJ4oCd5bel5L2c55qE6YCa55+lCDAwMDAwMDMwc+WFs+S6juaIkeagoTIwMTHnuqfmnKznp5HnlJ/lj4LliqDkuIrmtbfluILpq5jmoKHlhbHkuqvor77nqIvpgInor77igJznoa7orqTjgIHlop7pgInjgIHpgIDmlLnpgInigJ3lt6XkvZznmoTpgJrnn6UIMjAxMzA5MDJkAgQPZBYCZg8VBCTlrabnlJ/or7fms6jmhI/vvJrmnJ/mnKvmnIDmlrDpgJrnn6UIMDAwMDAwMjkk5a2m55Sf6K+35rOo5oSP77ya5pyf5pyr5pyA5paw6YCa55+lCDIwMTMwNzE2ZAIFD2QWAmYPFQQn6K+35ZCE5L2N5ZCM5a2m5LiN6KaB6ZSZ6L+H5aSN6YCJ5pe26Ze0CDAwMDAwMDI4J+ivt+WQhOS9jeWQjOWtpuS4jeimgemUmei/h+WkjemAieaXtumXtAgyMDEzMDYyNGQCBg9kFgJmDxUEJ+S4iua1t+W4gumrmOagoeWFseS6q+ivvueoi+mAieivvumAmuefpQgwMDAwMDAyNyfkuIrmtbfluILpq5jmoKHlhbHkuqvor77nqIvpgInor77pgJrnn6UIMjAxMzA2MjFkAgcPZBYCZg8VBDflhbPkuo4yMDEz5bm056eL5a2j5YWl5a2m5paw55Sf5L+h5oGv5qC45a+55pON5L2c5oyH5Y2XCDAwMDAwMDE2N+WFs+S6jjIwMTPlubTnp4vlraPlhaXlrabmlrDnlJ/kv6Hmga/moLjlr7nmk43kvZzmjIfljZcIMjAxMzA5MDZkAhMPD2QPDxQrAAEWCB4ETmFtZQULc3RyQ29uZHRpb24eBFR5cGULKVxTeXN0ZW0uVHlwZUNvZGUsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4ORIeDERlZmF1bHRWYWx1ZQVlIGlkX01zZyBpbiAoIHNlbGVjdCBpZF9Nc2cgZnJvbSBYeE1zZ05vdGlmeVJvbGUgd2hlcmUgUm9sZUlkID0gJzAwMDEwMDA1Jykgb3JkZXIgYnkgcmVsZWFzZWRhdGUgZGVzYyAeDlBhcmFtZXRlclZhbHVlZBQrAQECA2RkZGIgE9UDulG9GvRO4dsU+SdCCEFM","__EVENTVALIDATION"=>"/wEWBgKY0u7vCwLT8dy8BQLG8eCkDwKuqciQCQKC3IeGDAKO8J4Nk+MLn7wUWUDvvoz1eyVjqKX9ZAs=","btnLogin"=>"登陆","txtUserID"=>$user,"txtUserPwd"=>$password,"txtValidateCode"=>$yzm);
      

  11.   

    <?php
    $url_yzm= 'http://61.139.105.138/CheckCode.aspx';
    $fp = fopen("CheckCode.gif","wb");   //验证码文件
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url_yzm);
    curl_setopt($curl, CURLOPT_HEADER, 0);    //不读取http头,因为只要得到图片数据即可。
    curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie.txt");                  //保存cookie
    curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie.txt");                   //读取cookie
    $data = curl_exec($curl);        //得到图片数据
    fwrite($fp, $data);       //保存
    fclose($fp);
    print_r($data);$post_data= array (
        "txtUserName" => "11041050121",
        // 要上传的本地文件地址
        "TextBox2" => "zy794006157",
        "txtSecretCode" => $data,
        "RadioButtonList1" => "学生",
        "hidsc" => "",
        "hidPdrs" => "",
        "Button1" => "登陆",
        "Button2" => "",
        "lbLanguage" => ""

    );
    $ch = curl_init();
    $cookie_jar = tempnam('./tmp','cookie'); curl_setopt($ch, CURLOPT_URL,'http://61.139.105.138/default2.aspx'); //地址
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_NOBODY, false); 
    $out = curl_exec($ch); 
    curl_close($ch); 
    $ch0 = curl_init();$url = "http://61.139.105.138/xs_main.aspx?xh=".$post_data['txtUserName'];
    curl_setopt($ch0, CURLOPT_URL,$url); 
    curl_setopt($ch0, CURLOPT_HEADER, 0); 
    curl_setopt($ch0, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch0, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');curl_setopt($ch0, CURLOPT_COOKIEFILE, $cookie_jar); 
    $orders = curl_exec($ch0); echo $url,'</br>';echo $orders;
    ?>
    版主,这是我的代码,但始终提示Object moved to here.调试查阅了很久,不知道哪里错了,希望帮忙分析一下。教务系统地址http://61.139.105.138/default2.aspx