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函数file_get_contents超时处理的方法详解
Jun 03 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
PHP中返回引用类型的方法
Apr 03 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
Laravel如何同时连接多个数据库详解
Aug 13 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
JavaScript window.location对象
2014/11/14 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
Vue中的v-cloak使用解读
2017/03/27 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python中List.count()方法的使用教程
2015/05/20 Python
详解Django中Request对象的相关用法
2015/07/17 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
公司财务自我评价分享
2013/12/17 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
酒店led欢迎词
2014/01/09 职场文书
家长会邀请书
2014/01/25 职场文书
检举信的格式及范文
2014/04/04 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
党员领导干部承诺书
2014/05/28 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
作风建设年度心得体会
2014/10/29 职场文书
会计工作检讨书
2015/02/19 职场文书