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 相关文章推荐
BBS(php &amp; mysql)完整版(六)
Oct 09 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 PHP
浅谈php扩展imagick
Jun 02 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
thinkphp分页集成实例
Jul 24 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
PHP实现的支付宝支付功能示例
Mar 26 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
destoon复制新模块的方法
2014/06/21 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
小程序实现留言板
2018/11/02 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
Python制作刷网页流量工具
2017/04/23 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
django Admin文档生成器使用详解
2019/07/22 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
python 下载文件的几种方法汇总
2021/01/06 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
活动总结的格式
2014/05/07 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书