2014-10-05 68 views
0

我真的很想了解两个函数的最佳用法。Codeigniter重定向/加载视图

控制器:(多的处理之后,可让直接跳到创建会话)

$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? 
} 

在登录控制器,在创建会话之后,我通过它到主控制器,在访问主页之前,我想验证是否表示创建的会话= session['is_loggedin'] == TRUE =登录。

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

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

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

所以我想我不会再需要索引了吗?以这种方式调用控制器可以吗?在重定向中,我也必须将$ session从控制器传递给控制器​​吗?

+0

在codeigniter中,构造函数的使用主要是加载可以在类的其他函数中使用的通用库和辅助函数。当没有提到特定功能时,索引函数作为默认函数工作。 – user1906399 2014-10-05 07:09:50

回答

0

在加载任何库或助手之前,您最好检查用户是否在构造函数中有登录会话。但要确保会话和数据库已加载,以检查用户登录状态。这可以帮助您防止任何其他未经授权的访问您网站的其他功能和资源,导致您可能直接在URL中输入其他一些功能的名称!

0

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

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

public function login(){ 
    login code 

} 

所以这样your base url/class name/base url/class name/ login既会工作。 如果您在application/config/autoload.php文件自动加载会话库,你不需要担心会话,只需要在config.php文件

设置加密密钥如果您不希望自动加载的会话,那么你需要加载会话手动在需要维护会话的每个类的构造函数上。

+0

我已经在我的配置中加载了我需要的每个库和帮助程序。那么这是否意味着构造函数现在已经过时了?无论如何,无论如何,重定向和加载视图怎么样。我想最大限度地利用我的用法。我想开发具有体面代码的网站。你能向我解释在使用上的差异吗? – 2014-10-05 07:34:14

+0

自动加载就像是一个超级普通任务的持有者,构造函数就像一个特定类的普通任务持有者。除非您需要所有控制器的所有功能中的每个库和帮助程序,否则不应自动加载所有内容。 – user1906399 2014-10-05 07:46:42

+0

如果用户已经登录,您是否尝试不显示登录页面?如果用户尝试通过url访问登录页面,则需要重定向回主页? – user1906399 2014-10-05 07:50:13