【问题标题】:How to create a common function in codeigniter for checking if session exist?如何在codeigniter中创建一个通用函数来检查会话是否存在?
【发布时间】:2013-07-31 13:31:51
【问题描述】:

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

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

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

有没有更好的方法来做到这一点?我可以有类似的通用功能吗

sessionExist();

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

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

【问题讨论】:

  • 如果您有每个方法都需要登录的类 - 那么您可以在构造函数中进行登录检查。干净得多。

标签: php codeigniter function session


【解决方案1】:

如果是类,则创建library。 if only function 然后创建helper,然后创建autoload 它们,这样它就可以被任意调用了。

【讨论】:

  • 我同意你的想法! +1 来自我!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      在您设置会话的模型中:

         $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();
          }
      

      【讨论】:

        【解决方案5】:
        if (!function_exists('sessionExist'))
        {
        函数 sessionExist(){
        $CI =& get_instance();
        $userId = $CI->session->userdata('userId');
        如果(空($userId)){
        重定向(base_url('登录'));
        }否则{
        返回 (bool)$userId;
        }
        }
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-20
          • 2015-03-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多