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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
php简单获取目录列表的方法
Mar 24 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
Laravel创建数据库表结构的例子
Oct 09 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调用Java对象的方法
2006/10/09 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
Javascript中Eval函数的使用
2010/03/23 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
js实现无缝轮播图
2020/03/09 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
python实现扫雷游戏的示例
2020/10/20 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
华为C++笔试题
2014/08/05 面试题
软件配置管理有什么好处
2015/04/15 面试题
留学推荐信怎么写
2014/01/25 职场文书
法人代表委托书
2014/04/04 职场文书
四年级小学生评语
2014/12/26 职场文书
英文升职感谢信
2015/01/23 职场文书
警示教育观后感
2015/06/17 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
python通过新建环境安装tfx的问题
2022/05/20 Python
浅谈Redis的事件驱动模型
2022/05/30 Redis