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下载文件的详解
Jun 02 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
PHP中的一些常用函数收集
May 26 PHP
php实现读取和写入tab分割的文件
Jun 01 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
Dec 25 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
php png失真的原因及解决办法
Nov 17 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微信支付通知的处理方式
2014/05/25 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Python调用C++程序的方法详解
2017/01/24 Python
详解Python pygame安装过程笔记
2017/06/05 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
禁止高声喧哗的标语
2014/06/11 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
入党申请书怎么写?
2019/06/21 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
python通配符之glob模块的使用详解
2021/04/24 Python
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
MySQL去除密码登录告警的方法
2022/04/20 MySQL