如何在 Codeigniter 中检查是不是设置了会话?
Posted
技术标签:
【中文标题】如何在 Codeigniter 中检查是不是设置了会话?【英文标题】:How to Check either Session is Set or Not in Codeigniter?如何在 Codeigniter 中检查是否设置了会话? 【发布时间】:2014-05-24 00:28:50 【问题描述】:我知道如何在核心 php 中创建会话,并且我知道如何在 codeigniter 中执行此操作,但我无法理解如何检查会话是否已设置?我试图通过 View 进行检查,但它总是给我消息Please Login
。
请告诉我如何检查会话是否已设置
控制器
if ($user_type=='Student')
if ($LoginData= $this->loginmodel->studentLogin($username,$password))
foreach($LoginData as $UserId)
$currentId= $UserId->StudentId;
//[[session]]
$data['students_data']= $this->loginmodel->student_profile($currentId);
$this->session->userdata('$data');
$this->load->view('students',$data);
else
//$data['message']= array('Invalid Username or Password');
$this->load->view('Login');
echo "Invalid Username or Password";
elseif ($user_type=="Faculty")
if($data['faculty_data']=$this->loginmodel->faculty_admin($username, $password))
$this->session->userdata('$data');
$this->load->view('faculty');
else
$this->load->view('Login');
echo "Invalid Username or Password";
查看
<?php
if (!$this->session->userdata('$data'))
echo "Please Login";
else
?>
<!DOCTYPE
【问题讨论】:
【参考方案1】:创建会话:
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
或
$this->session->set_userdata('some_name', 'some_value');
但在此之前,请确保您已包含会话库。
$this->load->library('session');
获取会话数据:
if($this->session->userdata('whatever_session_name_is'))
// do something when exist
else
// do something when doesn't exist
【讨论】:
在哪里写这个?在视图或控制器中? 您可以轻松地在视图和控制器上使用它。但是在视图上你需要使用 code ?> 那 我在视图中写了同样的东西,它总是给我错误的条件消息..你能告诉我在哪里分配Seesion
我已经在login method
中声明了它
是的登录控制器是一种方法。但您也可以使用 Ion_Auth 库进行身份验证。
这是标准方式。 ***.com/a/51906048/9573341【参考方案2】:
if ($this->session->userdata('variable') !== FALSE)
echo 'Variable is set';
else
echo 'Variable is not set';
More info
Demo code
【讨论】:
在哪里写这个?在视图或控制器? —— @ravi:你的教程很棒!但是我的登录/注销有问题(让我们以您的演示为例),当我登录然后注销并尝试单击浏览器中的后退按钮(它已登录,对吗?),然后尝试添加消息然后出现错误。我的问题是,如何处理这个问题?这是导致错误的缓存吗?但我也试过这段代码(清除缓存):LINK HERE! 谢谢,这是“如何检查会话是否已设置”问题的答案 这是正确答案。接受的答案无论是设置还是设置和 null/0/blank 都返回 true。测试该值是否已设置的唯一方法是 ===FALSE【参考方案3】:使用 has_userdata
if ($this->session->has_userdata('username'))
return TRUE;
else
return FALSE;
【讨论】:
这是标准的使用方式。其他选项只是解决方法。以上是关于如何在 Codeigniter 中检查是不是设置了会话?的主要内容,如果未能解决你的问题,请参考以下文章