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 分页分组类
Dec 10 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
laravel入门知识点整理
Sep 15 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 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猜单词游戏
2015/09/29 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
原生JS实现留言板
2020/03/26 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
列举Python中吸引人的一些特性
2015/04/09 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
python gdal安装与简单使用
2019/08/01 Python
Python实现搜索算法的实例代码
2020/01/02 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
会计专业导师推荐信
2014/03/08 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
党课心得体会范文
2014/09/09 职场文书
西安兵马俑导游词
2015/02/02 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技