PHP 模拟登陆功能实例详解


Posted in PHP onSeptember 10, 2019

本文实例讲述了PHP 模拟登陆功能。分享给大家供大家参考,具体如下:

说明:该模拟登陆实例仅适用于没有验证码的模拟登陆实例

该程序基本功能是,模拟登陆高校图书馆网站,并获取读者信息和借书信息。

程序截图:

PHP 模拟登陆功能实例详解

PHP 模拟登陆功能实例详解

目录结构:

PHP 模拟登陆功能实例详解

login.php

<form method="post" class="am-form" action="judge.php">
   <label for="sid">学号:</label>
   <input type="text" name="number" id="sid" value="">
   <br>
   <label for="password">密码:</label>
   <input type="password" name="passwd" id="password" value="">
   <br>
   <div class="am-cf">
    <input type="submit" name="" value="登 录" class="am-btn am-btn-primary am-btn-sm am-fl">
    <input type="submit" name="" value="忘记密码 ^_^? " class="am-btn am-btn-default am-btn-sm am-fr">
   </div>
  </form>

judge.php

session_start();
require_once 'curl.php';
$url = "http://opac.lib.ustc.edu.cn/reader/redr_info.php";
$number = $_POST['number'];
$passwd = $_POST['passwd'];
$res = run_curl($url,$number,$passwd);
$pattern = '/<TD><span class=\"bluetext\">姓名:<\/span>(.*)<\/TD>/';
preg_match($pattern, $res,$arr1);
if(is_array($arr1)){
 $_SESSION['number'] = $number;
 $_SESSION['passwd'] = $passwd;
 $_SESSION['name'] = $arr1[1];
 echo "<script>window.location.href='index.php';</script>";
}else{
 echo "<script>history.go(-1);</script>";
}

curl.php

<?php
function run_curl($content_url,$number='',$passwd=''){
  $cookie_file = tempnam('./temp','cookie');
  $url = "http://opac.lib.ustc.edu.cn/reader/redr_verify.php";
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
  $post_fileds = "number=$number&passwd=$passwd&select=bar_no";
  curl_setopt($ch,CURLOPT_POST,1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fileds);
  curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
  curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
  $content = curl_exec($ch);
  curl_close($ch);
  $ch = curl_init($content_url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
  curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
  curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
  $res = curl_exec($ch);
  curl_close($ch);
  return $res;
}

index.php

<?php
  session_start();
  $number = $_SESSION['number'];
  $passwd = $_SESSION['passwd'];
  $username = $_SESSION['name'];
  if($number==''||$passwd==''||$username==''){
    echo "<script>window.location.href='login.php';</script>";
    exit();
  }
  require_once 'curl.php';
  header('Content-type:text/html;charset=utf-8');
  $url = "http://opac.lib.ustc.edu.cn/reader/book_lst.php";
  $res = run_curl($url,$number,$passwd); //通过curl抓取数据
  $pattern = '/<td class="whitetext" width="35%"><a class="blue" href="(.*)" rel="external nofollow" >(.*)<\/a>/';//正则匹配获得图书信息
  preg_match_all($pattern, $res,$book_arr);
  $booklist = array();
  $booklist = $book_arr[2];  //借阅图书列表
  //var_dump($booklist);
  $pattern = '/<font color=(red|)>(.*)<\/font>/';//正则匹配获得还书信息
  preg_match_all($pattern, $res,$date_arr);
  $datelist = array();
  $datelist = $date_arr[2];  //应归还日期列表
  $taglist = array();
  $taglist = $date_arr[1];  //标记是否超期
  //var_dump($date_arr);
?>

logout.php

<?php
session_start();
$_SESSION = array();
session_destroy();
?>
<script>window.location.href='login.php'</script>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 动态执行带有参数的类方法
Apr 10 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
Smarty模板配置实例简析
Jul 20 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
Yii框架日志操作图文与实例详解
Sep 09 #PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 09 #PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 #PHP
Yii框架常见缓存应用实例小结
Sep 09 #PHP
Yii框架函数简单用法分析
Sep 09 #PHP
Yii框架的路由配置方法分析
Sep 09 #PHP
PHP实现时间日期友好显示实现代码
Sep 08 #PHP
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JavaScript代码调试方法实例小结
2019/01/05 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
Python collections模块实例讲解
2014/04/07 Python
Python实现的批量下载RFC文档
2015/03/10 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
django foreignkey(外键)的实现
2019/07/29 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
建筑专业自我鉴定
2013/10/22 职场文书
大二学期个人自我评价
2014/01/13 职场文书
保险专业求职信
2014/07/07 职场文书
学校教师读书活动总结
2014/07/08 职场文书
2015年消防工作总结
2015/04/24 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书