2015-04-07 84 views
0

在我的codeigniter项目中,我有一个内核/ MY_Controller.php,每个控制器扩展了MY_Controller。我的控制器没有正确重定向

如果我$ignore = array()的in_array应该忽略他们,但后来还是重定向到错误页,但随后显示Firefox的错误页面后,页面没有正确重定向

我不知道为什么没有忽略文件那是在我的数组?

任何建议提前致谢。我已经尝试过钩同样的问题。

<?php 

class MY_Controller extends MX_Controller { 

public function __construct() { 
    parent::__construct(); 
    $files = glob(FCPATH . 'application/modules/admin/controllers/*/*.php'); 
    foreach ($files as $file) { 
     $part = explode('/', dirname($file)); 

     $permission = end($part) . '/' . basename($file, '.php'); 

     $ignore = array(
      'common/Column_left', 
      'common/Dashboard', 
      'common/Login', 
      'common/Logout', 
      'common/Footer', 
      'common/Header', 
      'error/Permission' 
     ); 

     if (!in_array($permission, $ignore)) { 
      redirect('admin/error/permission'); 
     } 
    } 
} 
} 
+0

显然你的in_array测试总是失败。基本的调试时间...所以你要做的第一件事就是检查所有有关的变量。所以你应该做一个var_dump($ files)和一个var_dump($ permission)来看看你实际得到了什么。所以$是否允许任何$ permission条目与$ ignore数组中的内容匹配? – TimBrownlaw

+0

当你每次都在运行时,当你遇到不匹配的情况时,你将在无限循环中执行重定向。你认为你试图用这个做什么? – TimBrownlaw

+0

如果folder/file.php不在该数组中,则会被重定向到该控制器。重定向( '管理员/错误/许可'); – user4419336

回答

0

请内改变的内容,如果要

redirect('admin/error/permission'); exit; 

只需添加一个退出。

+0

没有工作尝试过。 – user4419336