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 相关文章推荐
echo(),print(),print_r()之间的区别?
Nov 19 PHP
PHP session有效期问题
Apr 26 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
php生成图形(Libchart)实例
Nov 06 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
PHP xpath()函数讲解
Feb 11 PHP
基于laravel Request的所有方法详解
Sep 29 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实现采集程序原理和简单示例代码
2007/03/18 PHP
php中设置多级目录session的问题
2011/08/08 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
图片之间的切换
2006/06/26 Javascript
代码生成器 document.write()
2007/04/15 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
Javascript函数的参数
2015/07/16 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
Jquery Fade用法详解
2020/11/06 jQuery
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python Requests 基础入门
2016/04/07 Python
详解python持久化文件读写
2019/04/06 Python
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
Java程序员综合测试题
2014/04/25 面试题
优秀大学生推荐信范文
2013/11/28 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
个人整改措施书面材料
2014/10/24 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
新闻稿格式范文
2015/07/18 职场文书
数学备课组工作总结
2015/08/12 职场文书
九年级数学教学反思
2016/02/17 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript