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中与数组相关的函数
Mar 22 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
Yii框架中memcache用法实例
Dec 03 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
php传值和传引用的区别点总结
Nov 19 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通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
PHP递归创建多级目录
2015/11/05 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python微信库:itchat的用法详解
2017/08/14 Python
python 实现return返回多个值
2019/11/19 Python
python绘制随机网络图形示例
2019/11/21 Python
浅谈django channels 路由误导
2020/05/28 Python
全球性的女装店:storets
2019/06/12 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
查询优化的一般准则有哪些
2015/03/08 面试题
目标责任书范文
2014/04/14 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
信访维稳承诺书
2015/05/04 职场文书