我有一个像这样的lib
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Iadmin {
function check()
{
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->helper('cookie');
if(!get_cookie('lemon')){
redirect('http://www.google.com/');
}
}
}
?>
在autoload.php中我有
$autoload['libraries'] = array('iadmin');
我想做什么:如果我没有cookie“柠檬”,当我尝试访问我网站的任何页面时,我将重定向到谷歌
问题:我没有被重定向到谷歌。
答案 0 :(得分:4)
您可以使用MY_Controller扩展默认控制器,然后在所有控制器中扩展它。
在application / libraries / MY_Controller.php
中<?php
class MY_Controller extends Controller {
function __construct(){
parent::__construct();
$this->load->helper('url');
$this->load->helper('cookie');
if(!get_cookie('lemon')){
redirect('http://www.google.com/');
}
}
}
?>
在application / controllers / home.php中
<?php
class Home extends MY_Controller {
function __construct(){
parent::__construct();
}
function index(){
// Index page
}
}
?>
如果您没有柠檬饼干,请访问www.site.com/index.php/home会重定向您。
你也可以用钩子做这样的事情,但我不确定,因为我从未使用它们。
答案 1 :(得分:1)
在这种情况下你需要使用Hooks,而不是库。创建一个在加载任何控制器之前运行的钩子,并将代码放在钩子构造函数中检查cookie。
答案 2 :(得分:0)
在库中添加类之后,需要调用函数Check()使其执行或将该代码放在构造函数中。
答案 3 :(得分:0)
为什么不把这些代码放在Iadmin
类'构造函数中?这应该可以解决您的问题,check
方法不会自动调用。