Php Codeigniter重定向/加载视图

Php Codeigniter重定向/加载视图,php,codeigniter,session,Php,Codeigniter,Session,我真的想知道这两种功能的最佳用途是什么 控制器:经过大量处理后,让我们直接跳到创建会话 $isLoggedin = array( 'user_name' => $row['username'] , 'user_type' => 'user' , 'is_loggedin' => TRUE); $this->session->set_user($isLoggedin); redirect('controller/index'); 在控制器中 public fun

我真的想知道这两种功能的最佳用途是什么

控制器:经过大量处理后,让我们直接跳到创建会话

$isLoggedin = array( 'user_name' => $row['username'] , 'user_type' => 'user' ,  'is_loggedin' => TRUE);
$this->session->set_user($isLoggedin); 
redirect('controller/index');
在控制器中

public function __construct()
{
parent::__construct();
    //should i check for the session here?
}

function index(){
 // or should i check here?
}
在登录控制器中,创建会话后,我将其传递给主控制器,在访问主页之前,我想验证会话['is_loggedin']==TRUE是否表示创建的会话=登录

我的困惑是,因为每次调用控制器时都会首先加载构造函数。如果我错了,请纠正我。所以在登录控制器的重定向中,我不应该调用索引

我应该在那里调用控制器,然后让构造函数处理,然后在构造函数中,像这样

public function __construct(){
parent::__construct();
if($session['is_loggedin'] == TRUE)
$this->load->view('homepage');
else
redirect('Login');
}

所以我想我不再需要索引了,对吗?这样叫控制器可以吗?在重定向中,我还必须将$session从一个控制器传递到另一个控制器吗?

使用构造函数加载该特定类中其他函数所需的公共库和帮助程序。 当没有提到其他函数时,索引函数作为默认函数工作。 例如,你可以这样做

public function index(){
  $this->login();
}

public function login(){
  login code

}
因此,通过这种方式,基本url/类名/和基本url/类名/登录都可以工作。 如果在application/config/autoload.php文件中自动加载会话库,则无需担心会话,只需在config.php文件中设置加密密钥即可


如果不想自动加载会话,则需要在需要维护会话的每个类的构造函数上手动加载会话。

在加载任何库或帮助程序之前,最好检查用户是否在构造函数函数中有登录会话。但请确保已加载会话和数据库以检查用户的登录状态。这可以帮助您防止对网站的其他功能和资源进行任何其他未经授权的访问,因为您可以直接在URL中键入其他功能的名称

在codeigniter中,构造函数的使用主要是加载可用于类的其他函数的公共库和帮助程序。当没有提到特定函数时,索引函数作为默认函数工作。我已经在配置中加载了所需的每个库和帮助程序。那么这是否意味着构造函数现在已经过时了?无论如何,重定向和加载视图怎么样。我想最大限度地利用我的资源。我想开发与体面的代码网站。你能给我解释一下用法的不同吗?autoload就像一个超级普通的任务持有者,构造函数就像一个特定类的普通任务持有者。除非所有控制器的所有功能都需要每个库和帮助程序,否则不应自动加载所有内容。如果用户已登录,是否尝试不显示登录页面?如果用户试图通过url访问登录页面,您希望重定向回主页?只需使用会话进行简单的登录,如果用户登录,则应首先验证会话是否已创建。另外,我有我的困惑,如果我设置$session,我就不需要将它从一个控制器传递到另一个控制器,对吗?比如说,如果我有一个用于登录的控制器,并且我在那里设置了$session数据,如果我在另一个控制器中访问该$session数据以查看它是否存在。哦,是的,我该怎么办?如果用户使用浏览器上的“后退”按钮怎么办?我是否应该在登录页面视图中添加一个php函数来检查是否已经登录?