无法在codeigniter中重定向

时间:2016-09-29 06:26:24

标签: php codeigniter session authentication login

我创建了一个用户登录和注销系统。登录后,用户将被重定向到他的仪表板。目前,在正确的URL的帮助下,用户无需登录即可直接进入仪表板。为了限制这一点,我使用了以下代码,以便用户在登录前无法访问任何内部页面

class User extends CI_Controller
    {
        public function __construct()
            {
                parent::__construct();
                if(!$this->session->userdata('logged_in'))
                    {
                        $this->session->set_flashdata('no_access', 'sorry you are not allowed');
                        redirect('user/noaccess');
                    }
            }
    }   

现在,当我尝试使用正确的URL访问仪表板时,如果没有登录,我无法查看它,但也没有重定向到noaccess。我收到以下错误

  

页面未正确重定向

任何人都可以告诉你如何正确地做到这一点

1 个答案:

答案 0 :(得分:0)

Sam考虑这样做

public function logged_in()
{
    $logged_in = $this->session->userdata('logged_in');
    if (!isset($logged_in) || $logged_in != true)
    {
      redirect("Checkin"); //insert your login page
    }
}

然后在您的控制器中进行页面访问,您可以调用此方法

public function admin()
  {
  $this->logged_in();
  //rest of controller here
  }

这可以防止任何人在未登录的情况下访问您的管理页面。 " logged_in"方法会将它们重定向到登录页面。这样你就不会重定向到另一个页面(user / noaccess)或使用flashdata。使用$ this-> logged_in();在任何需要登录的方法