Php 如何在codeigniter中创建一个公共函数来检查会话是否存在?

Php 如何在codeigniter中创建一个公共函数来检查会话是否存在?,php,codeigniter,function,session,Php,Codeigniter,Function,Session,我正在创建一个应用程序,其中用户必须登录才能访问各种模块。在提供对每个模块的访问之前,我需要检查用户会话是否存在 现在,我在每个功能/模块/控制器中检查这样的会话,以避免未经授权的访问 if($this->session->userdata('userId')!=''){ do something; } 有更好的方法吗?我可以有类似的常用功能吗 sessionExist(); 这样就可以从整个项目通用的任何模块/控制器/函数调用它 如果是这样的话,我应该在哪里编写这个公共

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

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

if($this->session->userdata('userId')!=''){
   do something;  }
有更好的方法吗?我可以有类似的常用功能吗

sessionExist();
这样就可以从整个项目通用的任何模块/控制器/函数调用它


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

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

示例:
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
}

如果是类,则创建。if only function然后创建,然后调用它们,这样它就可以被称为anywhare。

您想要一个helper函数,这里是:

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');

在设置会话的模型中:

   $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();
    }
如果(!function_存在('sessionExist'))
{
函数sessionExist(){
$CI=&get_instance();
$userId=$CI->session->userdata('userId');
if(空($userId)){
重定向(基本url(“登录”);
}否则{
返回(bool)$userId;
}
}
}

我同意你的想法+从我这里得到1分!如果您有每个方法都需要登录的类,那么您可以在构造函数中进行登录检查。干净多了。 if ( ! function_exists('sessionExist'))
{
function sessionExist(){
$CI =& get_instance();
$userId = $CI->session->userdata('userId');
if(empty($userId)){
redirect(base_url('login'));
}else{
return (bool)$userId;
}
}
}