我正在创建一个应用程序,in用户必须登录才能访问各种模块。在提供对每个模块的访问之前,我需要检查用户会话是否存在。
现在我在每个功能/模块/控制器中检查这样的会话,以避免未经授权的访问。
if($this->session->userdata('userId')!=''){
do something; }
有更好的方法吗?我能有类似的通用功能吗
sessionExist();
以便可以从整个项目通用的任何模块/控制器/函数调用它?
如果是这样的话,我应该在哪里编写这个公共函数,以便可以从任何地方调用它。
如果是类,则创建库。ifonly函数然后创建helper,然后自动加载它们,这样它就可以被称为anywhare。
如果想要一个辅助函数,它就是:
if ( ! function_exists('sessionExist'))
{
function sessionExist(){
$CI =& get_instance();
return (bool) $CI->session->userdata('userId');
}
}
将文件保存在application/helpers/
中,并将其包含在application/config/autoload.php
文件中:
$autoload['helper'] = array('my_helper_file');
您可以在创建函数的库或其他库中创建函数
例如:application/libraries/Common.php
public function logged_in()
{
return (bool) $this->session->userdata('userId');
}
像这样使用:
if ($this->common->logged_in()) {
// User logged
} else {
// User not logged
}
在您设置会话的模型中:
$data = array(
'sid' =>$this->input->post('sid'),
'is_logged_in' => true,
);
$this->session->set_userdata($data);
在您的功能/模块/控制器中:
function __construct(){
$this->is_logged_in()
}
function is_logged_in(){
$is_logged_in =$this->session->userdata('is_logged_in');
if(!isset($is_logged_in) || $is_logged_in != TRUE)
{
echo 'You dont have permission to acces this page';
die();
}
if(!function_exists('sessionExist'))
{
函数sessionExist(){
$CI=&get_instance()
$userId=$CI->session->userdata('userId')
if(空($userId)){
重定向(base_url('login'))
}其他{
return(bool)$userId
}
}
}