3

我正在创建一个应用程序,用户必须登录才能访问各种模块。在提供对每个模块的访问之前,我需要检查用户会话是否存在。

现在我在每个功能/模块/控制器中检查这样的会话,以避免未经授权的访问。

if($this->session->userdata('userId')!=''){
   do something;  }

有一个更好的方法吗?我可以有类似的通用功能吗

sessionExist();

这样就可以从整个项目通用的任何模块/控制器/功能中调用它?

如果是这样,我应该在哪里编写这个通用函数,以便可以从任何地方调用它。

4

5 回答 5

6

如果是类,则创建。if only function then create helper,然后自动加载它们,以便可以调用它。

于 2013-07-31T14:17:06.360 回答
4

你想要一个辅助函数,这里是:

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');
于 2013-07-31T16:00:10.833 回答
1

您可以在您创建它的库或另一个库中创建一个函数

前任: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
}
于 2013-07-31T13:42:56.570 回答
0

在您设置会话的模型中:

   $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();
    }
于 2013-08-02T03:07:08.547 回答
0
if ( ! function_exists('sessionExist')) 
{
function sessionExist(){
$CI =& get_instance();
$userId = $CI->session->userdata('userId');
if(empty($userId)){
redirect(base_url('login'));
}else{
返回 (bool)$userId;
}
}
}
于 2016-10-24T06:43:48.320 回答