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中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
深入理解PHP中的global
Aug 19 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
php字符串函数学习之strstr()
Mar 27 PHP
PHP中filter函数校验数据的方法详解
Jul 31 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
PHP 8新特性简介
Aug 18 PHP
PHP7 list() 函数修改
Mar 09 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+Html+缓存
2006/12/20 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
Prototype String对象 学习
2009/07/19 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python中is和==的区别详解
2018/11/15 Python
python函数与方法的区别总结
2019/06/23 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
selenium自动化测试入门实战
2020/12/21 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
公积金转移接收函
2014/01/11 职场文书
2014春晚主持词
2014/03/25 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
个人合伙协议书范本
2014/10/14 职场文书
文明礼貌主题班会
2015/08/14 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
html粘性页脚的具体使用
2022/01/18 HTML / CSS