当前位置:Gxlcms > PHP教程 > php模拟登陆教务出现objectmovedtohere,加上了curl_setopt($ch,CURLOPTFOLLOWLOCATION,1);

php模拟登陆教务出现objectmovedtohere,加上了curl_setopt($ch,CURLOPTFOLLOWLOCATION,1);

时间:2021-07-01 10:21:17 帮助过:11人阅读

学生一个,自己在摸索,希望大神们百忙之中指导一下,不知道到底哪里出现了问题
模拟登陆教务网站出现问题,求教大神们

教务网站http://xk.shnu.edu.cn:82/index.aspx
测试账号120154728 123612
登陆界面
  a绑定学号                
初始密码身份证后6位

获取验证码

post页面
"3153600","txtUserID"=>$user,"txtUserPwd"=>$password,"txtValidateCode"=>$yzm);    $ch = curl_init($login_url);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1);    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);    curl_exec($ch);    curl_close($ch);        $url='http://xk.shnu.edu.cn:82/index.aspx';    $ch = curl_init($url);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);	curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1);    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);    $contents = curl_exec($ch);    curl_close($ch);?>


回复讨论(解决方案)

大神们 来帮帮忙

CURLOPTFOLLOWLOCATION
应为
CURLOPT_FOLLOWLOCATION

还有就是你的这些代码的执行次序

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

而且你的验证码也不需要curl获取。直接
即可

CURLOPTFOLLOWLOCATION
应为
CURLOPT_FOLLOWLOCATION

还有就是你的这些代码的执行次序
代码执行次序应该是怎样的啊?代码还有其他的问题吗?
现在改好了 没有重定向的信息了 但是页面显示还是不对

而且你的验证码也不需要curl获取。直接
即可
那如何知道验证码是否与网站上的一致?目前进去变成这样子了

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

curl 访问 http://xk.shnu.edu.cn:82/index.aspx 用于获取 cookie
解析出验证码图片地址
表单页,填写用户信息和验证码值
curl 提交
我的流程是这样子的啊 模拟之后的页面 跟直接在地址栏里输入网址 产生的页面一样 根本不是个人的信息

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

流程中只第一次才有 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
以后每部都不能有,不然读到的 cookie 会改变
刚接触 还是不理解
意思是 我的post页面里不再需要curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);吗?

而且你的验证码也不需要curl获取。直接
即可
怎么知道验证码需不需要curl获取啊?

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
我的用户名密码验证码数据是不是还是没有传过去啊?

我 #7 没有说清楚吗?

我 #7 没有说清楚吗?
我的流程应该是你说的那个样子啊

他的登录表单里还有两个隐藏域,你也传过去里吗

他的登录表单里还有两个隐藏域,你也传过去里吗
版主 我加上隐藏值了 也还是不行

"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);?>

你在 pos 页面中
$cookie_file = tempnam('./temp','cookie');
你在获取验证码程序中
$cookie_file = $filedir."/cookie.txt";

整个过程中使用了不同的 cookie 文件,显然不能保证 cookie 是一致的

你在 pos 页面中
$cookie_file = tempnam('./temp','cookie');
你在获取验证码程序中
$cookie_file = $filedir."/cookie.txt";

整个过程中使用了不同的 cookie 文件,显然不能保证 cookie 是一致的 我用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);

你在 pos 页面中
$cookie_file = tempnam('./temp','cookie');
你在获取验证码程序中
$cookie_file = $filedir."/cookie.txt";

整个过程中使用了不同的 cookie 文件,显然不能保证 cookie 是一致的
版主 我现在模拟登陆成功了,我后来发现查询成绩不需要验证码
我只是把隐藏值也传进去了 就ok了
但现在又有个问题 就是有时候显示成绩,有时候又是什么都没有

人气教程排行