Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果未登录codeigniter,如何防止用户访问某些页面_Php_Codeigniter_Login_Codeigniter 3 - Fatal编程技术网

Php 如果未登录codeigniter,如何防止用户访问某些页面

Php 如果未登录codeigniter,如何防止用户访问某些页面,php,codeigniter,login,codeigniter-3,Php,Codeigniter,Login,Codeigniter 3,当前,如果我访问了主/订阅者,并且在未登录时能够查看页面,我已经在主控制器中创建了一个功能-请参阅以了解代码的详细信息 public function subscriber() { $this->load->view('header', $data); $this->load->view('dashboard/subscriber', $data); $this->load->view('footer'); } 你需要保护你

当前,如果我访问了主/订阅者,并且在未登录时能够查看页面,我已经在主控制器中创建了一个功能-请参阅以了解代码的详细信息

public function subscriber() {

    $this->load->view('header', $data);
    $this->load->view('dashboard/subscriber', $data);
    $this->load->view('footer');
    }

你需要保护你的页面。假设您的
$\u会话['email']
变量仅在用户登录时设置。我们可以使用它作为标志来确定用户是否登录

将这些功能添加到您的
用户\u模型中
(确保模型已自动加载)

然后控制器:

class Subscriber extends CI_Controller {

    public function construct() {
        parent::__construct();
        $this->user_model->is_logged(); // can merge with below func, just make sure it is called first (!imp)
        $this->user_model->is_allowed('subscriber');
    }

    public function subscriber() {
        $this->load->view('header', $data);
        $this->load->view('dashboard/subscriber', $data);
        $this->load->view('footer');
    }
}
这是最基本的。如果你愿意,你可以做得更花哨些。我个人使用基于数据库的ACL系统


也可以考虑在DB和其他地方重命名<代码>角色<代码> >代码>角色> /代码>,考虑到用户只有1个角色(以前的问题),这是令人困惑的。

您需要保护页面。假设您的
$\u会话['email']
变量仅在用户登录时设置。我们可以使用它作为标志来确定用户是否登录

将这些功能添加到您的
用户\u模型中
(确保模型已自动加载)

然后控制器:

class Subscriber extends CI_Controller {

    public function construct() {
        parent::__construct();
        $this->user_model->is_logged(); // can merge with below func, just make sure it is called first (!imp)
        $this->user_model->is_allowed('subscriber');
    }

    public function subscriber() {
        $this->load->view('header', $data);
        $this->load->view('dashboard/subscriber', $data);
        $this->load->view('footer');
    }
}
这是最基本的。如果你愿意,你可以做得更花哨些。我个人使用基于数据库的ACL系统


还考虑在DB和其他地方重命名<代码>角色<代码> >代码>角色< /代码>,考虑到用户只有1个角色(以前的问题),这是令人困惑的。

< P>如果您想阻止用户访问某些页面,如果没有登录到代码点火器,

登录时应首先设置用户数据

更改控制器,如下所示。当会话数据不为空时,它会将您重定向到特定页面。否则,“写下需要做的事情”

public function subscriber()
    {
        if($this->session->userdata('id')!="")
        {
            $this->load->view('header', $data);
            $this->load->view('dashboard/subscriber', $data);
            $this->load->view('footer');

        } else {
            //your code here
        }           
    }

如果您想阻止用户在未登录codeigniter的情况下访问某些页面

登录时应首先设置用户数据

更改控制器,如下所示。当会话数据不为空时,它会将您重定向到特定页面。否则,“写下需要做的事情”

public function subscriber()
    {
        if($this->session->userdata('id')!="")
        {
            $this->load->view('header', $data);
            $this->load->view('dashboard/subscriber', $data);
            $this->load->view('footer');

        } else {
            //your code here
        }           
    }

根据用户是否登录保护不同路由的最简单方法是使用会话变量。 当用户登录到你的应用程序时,设置如下sessiono变量

$this->session->set_userdata('is_logged_in', TRUE);
并在控制器的构造函数中检查该变量,以便在调用任何方法之前验证用户

class Demo_controller extends CI_Controller{
 public function __construct(){
   parent::__construct();
   // check if user is logged in
   if(!$this->session->userdata('is_logged_in')){
     // user is not logged in then redirect user to any page you want
   }
 }
}

您还可以使用钩子在Codeigniter中创建这样的系统。根据用户是否登录,保护不同路由的最简单方法是使用会话变量。 当用户登录到你的应用程序时,设置如下sessiono变量

$this->session->set_userdata('is_logged_in', TRUE);
并在控制器的构造函数中检查该变量,以便在调用任何方法之前验证用户

class Demo_controller extends CI_Controller{
 public function __construct(){
   parent::__construct();
   // check if user is logged in
   if(!$this->session->userdata('is_logged_in')){
     // user is not logged in then redirect user to any page you want
   }
 }
}

您还可以使用钩子在Codeigniter中创建这样的系统

根据您的问题,当用户未登录时,您将如何传递数据?您的主题和描述说明了两种不同的要求。让我知道你到底需要什么?我希望一箭双雕。也许我不清楚,我可以登录并进入用户角色页面。但是,即使我没有登录,并且我转到URL xxx/main/subscriber,我仍然能够查看我认为不正确的页面。@DanielOmara检查我下面给出的答案。根据您的问题,当用户没有登录时,您将如何传递数据?您的主题和描述说明了两个不同的要求。让我知道你到底需要什么?我希望一箭双雕。也许我不清楚,我可以登录并进入用户角色页面。然而,即使我没有登录,并且我转到URL xxx/main/subscriber,我仍然能够查看我认为不正确的页面。@DanielOmara检查我下面给出的答案。