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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
php桥接模式应用案例分析
Oct 23 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 json_encode()函数返回json数据实例代码
2014/10/10 PHP
php提高网站效率的技巧
2015/09/29 PHP
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
javascript基本语法
2016/05/31 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Django 内置权限扩展案例详解
2019/03/04 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
父亲追悼会答谢词
2014/01/17 职场文书
小学班主任培训方案
2014/06/04 职场文书
弄虚作假心得体会
2014/09/10 职场文书
党员三严三实心得体会
2014/10/13 职场文书
教师节慰问信
2015/02/15 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
四年级作文之植物
2019/09/20 职场文书
作文之亲情600字
2019/09/23 职场文书