欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-03 13:14:09
...
学生一个,自己在摸索,希望大神们百忙之中指导一下,不知道到底哪里出现了问题
模拟登陆教务网站出现问题,求教大神们

教务网站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获取。直接
php模拟登陆教务出现object moved to here,加上了curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1); 即可

CURLOPTFOLLOWLOCATION
应为
CURLOPT_FOLLOWLOCATION

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

而且你的验证码也不需要curl获取。直接
php模拟登陆教务出现object moved to here,加上了curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1); 即可
那如何知道验证码是否与网站上的一致?目前进去变成这样子了

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获取。直接
php模拟登陆教务出现object moved to here,加上了curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1); 即可
怎么知道验证码需不需要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了
但现在又有个问题 就是有时候显示成绩,有时候又是什么都没有

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • php模拟登陆教务出现object moved to here,加上了curl_setopt($ch, CURLOPTFOLLOWLOCATION, 1);
  • 专题推荐