gpt4 book ai didi

CodeIgniter:检查用户是否登录多个页面

转载 作者:行者123 更新时间:2023-12-03 11:33:31 25 4
gpt4 key购买 nike

我有一个 Controller ,它映射到我网站的一部分,其中的所有页面(方法)应该只在用户登录时出现。否则它们应该被重定向回登录屏幕。

为了让它工作,我刚刚完成了这个:

function index() {

if ($this->session->userdata('logged_in')) {
$this->load->view('main');

} else {
redirect('/login');
}
}

function archive() {

if ($this->session->userdata('logged_in')) {

等等......在每种方法中重复该检查。对 Controller 中的多个或所有方法进行一次检查的最简单方法是什么?

最佳答案

您可以通过在 __construct() 中运行它来在 Controller 的每个方法中运行代码。方法:

function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('logged_in'))
{
// Allow some methods?
$allowed = array(
'some_method_in_this_controller',
'other_method_in_this_controller',
);
if ( ! in_array($this->router->fetch_method(), $allowed)
{
redirect('login');
}
}
}

如果你想限制对整个事物的访问,你可以删除“允许”位,但有更好的方法来做到这一点,比如创建一个基本 Controller :
// Create file application/core/MY_Controller.php
class Auth_Controller extends CI_Controller {

function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('logged_in'))
{
redirect('login');
}
}
}

然后让您的受限 Controller 扩展 Auth_Controller而不是 CI_Controller .现在您的代码将在每次加载 Controller 时运行。

有关扩展核心类的更多信息: http://www.codeigniter.com/user_guide/general/core_classes.html#extending-core-class

同样感兴趣: http://php.net/manual/en/language.oop5.decon.php

关于CodeIgniter:检查用户是否登录多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com