CURL 补充

今天一同学提醒了我,为什么一直用的php模拟登陆必须要io操作呢,然后帮他测试代码,
附上成功实现的程序,以模拟登陆南理工教务管理系统为例。认证成功后获取cookie,访问成绩页面。


<?php
header ('Content-Type: text/html; charset=utf-8');



$id='';
$psw='';


$pswd=strtoupper(md5($psw));

$url_login = "http://202.119.81.112:9080/njlgdx/xk/LoginToXk?method=verify&USERNAME=$id&PASSWORD=$pswd";
echo $url_login;

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url_login);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content=curl_exec($ch);
curl_close($ch);


preg_match('/Set-Cookie:(.*);/iU',$content,$str);
print_r($str);
$cookie=trim($str[1]);
echo $cookie;


$url="http://202.119.81.112:9080/njlgdx/kscj/cjcx_list";
$data = array (
'xsfs'=>'all',
);

//post
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HEADER,1);


curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect'));

mark!! CURLOPT_COOKIE
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 500);
$re=curl_exec($ch);
curl_close($ch);

echo $re;


?>

注意几点:1.获取认证成功后的cookie 2.发送cookie字符串用curl 的参数 CURLOPT_COOKIE,而不是发送cookie文件地址的CURLOPT_COOKIEFILE

这提醒了我,以前的学习都是浅尝则止,只要实现了功能就满足了,没有深入思考如何使效率更高,代码可重用性。。
多思考,精益求精。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值