|
CI初学者一枚。写了一个登录后生成session,检查session的小例子。因为用的是php5.4,所以之前加载session会报错,在论坛里面找到的解决方法是将CI的Session类中的session_set_save_handler($class, TRUE); 代码注释: // Configuration ...
$this->_configure($params);
$class = new $class($this->_config);
if ($class instanceof SessionHandlerInterface)
{
if (is_php('5.4'))
{
//session_set_save_handler($class, TRUE);
}
else
{
session_set_save_handler(
array($class, 'open'),
array($class, 'close'),
array($class, 'read'),
array($class, 'write'),
array($class, 'destroy'),
array($class, 'gc')
);
register_shutdown_function('session_write_close');
}
}
修改后不再报错,可是又出现了新的问题。Session里面的值取不到。
这个是登录成功就生成Session的方法:
function checkLogin() {
if (!empty($_POST['sub']) && !empty($_POST['uname'])
&& !empty($_POST['upwd'])) {
//查询返回满足条件下的指定字段
$this->load->model("testDBModel");
$username = $_POST['uname'];
$userpwd = $_POST['upwd'];
$arr_wdata = array("uname"=>$username, "upwd"=>$userpwd);
//查询用户表
$arr_res = $this->testDBModel->query_table("wenshu_user","uid,uname,upermission",$arr_wdata);
if (!empty($arr_res))
{
//加载session类
$this->load->library('session');
//创建session类,生成Session
$arr_sessiondata = array('uid'=>$arr_res[0]->uid);
$this->session->set_userdata($arr_sessiondata);
//查看当前session
echo "current session id is: ".$this->session->userdata('uid'); //页面调用这个方法,此时这里是可以取到值的
}
else {
echo "用户名或密码错误。请重新输入!";
}
}
}
同一个页面,修改URL执行下面的方法时就取不到session的值了:
function checkSession() {
$this->load->library('session');
echo "tesss: ".$this->session->userdata('uid'); //页面打印: tesss:
//userdata方法。如果指定的session存在则返回对应的session值
if ($this->session->userdata('uid')){
echo "当前用户已登录";
}else {
echo "当前用户没有登录";
}
}
请论坛里面的大神们帮忙看下是因为什么原因呢? 跪谢各位了!!
|
|