【问题标题】:post_controller_constructor Hooks redirection isseus in CodeIgniterCodeIgniter 中的后控制器构造函数 Hooks 重定向问题
【发布时间】:2015-09-30 10:38:02
【问题描述】:

大家好,任何人都可以帮助我解决 codeigniter 中的重定向问题。 我为登录身份验证创建了一个钩子。

下面是我的钩子

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login_auth {

    function __construct() {
        $this->CI = &get_instance();
         if (!class_exists('session'))
        {
            $this->CI->load->library('session');
        }            
    }

    function auth(){                                   
        if(! $this->CI->session->userdata('islogin')
        {
            redirect(base_url().'loginCtrl/index');
        }
    }

创建钩子的目的是当我在未登录时尝试输入任何网址时,它应该重定向到登录页面

但它显示网页有重定向循环

【问题讨论】:

  • 这是你这段代码的控制器名称
  • 控制器名称是 loginCtrl.php

标签: php codeigniter redirect hook


【解决方案1】:

它将有一个重定向循环,因为它正在检查每个页面的会话。包括登录页面。

你可以这样做;

if(!$this->CI->session->userdata('islogin')) {
    // Not logged in. Are they trying to login?
    if(!in_array($this->CI->uri->uri_string(), array('login', 'forgot-password')))
    {
        redirect('login');
    }
}

这将检查用户是否登录。如果没有,它将检查当前的 uri_string 并将其与“允许的”uri 的array('login', 'forgot-password')数组进行比较

希望这会有所帮助。

【讨论】:

  • 但是什么是数组('login','forgot-password')
  • array('login','forgot-password') 是用户无需登录即可访问的 URI 数组。
  • 但我必须只允许访问登录页面
  • 那么从数组中删除'forgot-password'
  • 用“loginCtrl”替换“login”,看看会发生什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多