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 相关文章推荐
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php 静态化实现代码
Mar 20 PHP
php 静态变量的初始化
Nov 15 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
解析php开发中的中文编码问题
Aug 08 PHP
php Session存储到Redis的方法
Nov 04 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
php开发微信支付获取用户地址
Oct 04 PHP
简单解析PHP程序的运行流程
Jun 23 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
PHP命名空间定义与用法实例分析
Aug 14 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
js最简单的拖拽效果实现代码
2010/09/24 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python中的__slots__示例详解
2017/07/06 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Python socket处理client连接过程解析
2020/03/18 Python
python爬虫容易学吗
2020/06/02 Python
python中如何写类
2020/06/29 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
如何利用python发送邮件
2020/09/26 Python
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
责任胜于能力演讲稿
2014/05/20 职场文书
工作年限证明模板
2014/11/01 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
项目负责人岗位职责
2015/02/15 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
招商银行收入证明
2015/06/17 职场文书
MySQL数据管理操作示例讲解
2022/12/24 MySQL