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;
}
}
}