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中进行身份认证
Oct 09 PHP
php 删除cookie方法详解
Dec 01 PHP
PHP生成器简单实例
May 13 PHP
PHP扩展Memcache分布式部署方案
Dec 06 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
php常用字符函数实例小结
Dec 29 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP项目多语言配置平台实现过程解析
May 18 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
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
Django添加feeds功能的示例
2018/08/07 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
初中美术教学反思
2014/01/29 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
中学生运动会广播稿
2015/08/19 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Python中zipfile压缩包模块的使用
2021/05/14 Python
Django Paginator分页器的使用示例
2021/06/23 Python