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读取数据库信息的几种方法
May 24 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
php学习之function的用法
Jul 14 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
jquery 笔记 事件
2011/11/02 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
介绍Java的内部类
2012/10/27 面试题
大学三年的自我评价
2013/12/25 职场文书
促销活动总结报告
2014/04/26 职场文书
雷锋电影观后感
2015/06/10 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
关于vue中如何监听数组变化
2021/04/28 Vue.js
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript