CI钩子实现登录满6小时,提示重新登录

本文介绍了如何在CodeIgniter(CI)框架中利用钩子(Hooks)实现登录满6小时自动提示用户重新登录的功能。通过在`config/hooks.php`配置文件中设置钩子点`post_controller_constructor`,并在`hooks`目录下创建`CheckRelogin.php`类,判断用户cookie中的登录时间与当前时间的差距,达到时间限制即触发重新登录提示。
摘要由CSDN通过智能技术生成

CI钩子的简单配置

config/hooks.php

$hook["post_controller_constructor"][] = array(  //挂钩点根据自己的需求写
    'class' => 'CheckRelogin',
    'function' => 'checkLogin',
    'filename' => 'CheckRelogin.php',
    'filepath' => 'hooks'
);

CI手册上的,根据自己的需要来选择挂钩点

以下是所有可用挂钩点的一份列表:

  • pre_system 在系统执行的早期调用,这个时候只有 基准测试类 和 钩子类 被加载了, 还没有执行到路由或其他的流程。
  • pre_controller 在你的控制器调用之前执行,所有的基础类都已加载,路由和安全检查也已经完成。
  • post_controller_constructor 在你的控制器实例化之后立即执行,控制器的任何方法都还尚未调用
  • post_controller 在你的控制器完全运行结束时执行。
  • display_override 覆盖 _display() 方法,该方法用于在系统执行结束时向浏览器发送最终的页面结果。 这可以让你有自己的显示页面的方法。注意你可能需要使用 $this->CI =& get_instance() 方法来获取 CI 超级对象,以及使用 $this->CI->output->get_output() 方法来 获取最终的显示数据。
  • cache_override 使用你自己的方法来替代 输出类 中的 _display_cache() 方法,这让你有自己的缓存显示机制。
  • post_system 在最终的页面发送到浏览器之后、在系统的最后期被调用。

在hooks文件夹下创建对应的类 CheckRelogin.php  简单实例如下:

<?php
class CheckRelogin
{
    private $CI;
    //判断是否登录满6小时需要重新登录
    public function checkLogin()
	{
	    $this->CI = & get_instance();

        //若请求的url中的方法是MY_Controller这个基类中的 则放行
        $whiteList = get_class_methods('MY_Controller');

        $con = $this->CI->router->fetch_class();  //获取当前类名
        $func = $this->CI->router->fetch_method(); //获取当前方法名

        if (in_array($func, $whiteList)) return true;
        if ($con == "Login") return true;   //登录控制器
        $index_func = array("reLogin","doRelogin"); //顶部的父框架
        if ($con == "Defaults" && in_array($func,$index_func)) return true;

        $now = time();
        $login_time = get_cookie("login_time");
        $diff_hours = floor(($now-$login_time)/3600);
        if($diff_hours >= 6){
            $this->CI->load->view("Index/doRelogin");
        }
    }

}

思路:登录时,把登录时间写入到cookie里面,钩子里面去取值和当前时间对比,超过则提示(post_controller_constructor此挂钩点是在所有方法执行前执行的

Mark it...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值