关于Session入库的问题
这是SessionDBTool.class.php文件代码:
db = MySQLDB::getInstance($GLOBALS['config']['database']); } public function sess_close(){ return true; } public function sess_read($sess_id){ $sql = "select sess_data from it_session where sess_id = '$sess_id'"; return (string)$this->db->fetchColumn($sql); } public function sess_write($sess_id,$sess_data){ $expire = time(); $sql = "insert into it_session values('$sess_id','$sess_data',$expire) on duplicate key update sess_data = '$sess_data',expire = $expire"; return $this->db->query($sql); } public function sess_destroy($sess_id){ $sql = "delete from it_session where sess_id = '$sess_id'"; return $this->db->query($sql); } public function sess_gc($ttl){ $last_time = time() - $ttl; $sql = "delete from it_session where expire db->query($sql); }}?>
这个是后台控制器类文件代码:
initSession(); //验证是否登陆 $this->checkLogin(); } /** * 初始化session入库 */ protected function initSession(){ new SessionDBTool; } /** * 验证当前用户是否登陆 */ protected function checkLogin(){ //判断是否登录 if(CONTROLLER=="admin" && (ACTION=="login" || ACTION=="signin")) { //不需要 }else{ //需要 if(isset($_SESSION['is_login']) && $_SESSION['is_login'] == 'YES'){ //载入后台的模板 require CURR_VIEW_DIR . 'index.html'; //继续执行 }else{ $this->jump('index.php?p=back&c=Admin&a=login','请先登录',2); } } } }
但是打开login页面的时候,没有session,登录的时候提示“请先登录”,应该是SessionDBTool没有被初始化导致了,看了很久,不知道从哪里改,好人一生平安帮忙解决
回复讨论(解决方案)
@xuzuning
//开启session
$this->initSession();
protected function initSession(){
new SessionDBTool; //这个 SessionDBTool 对象的实例不是局部的吗?
}
什么意思⊙?⊙不太明白
/**
* 初始化session入库
*/
protected function initSession(){
new SessionDBTool;
}
这段代码没有任何意义啊
在函数(方法)中创建的变量(对象)在函数(方法)外是访问不到的
你需要把它存放到可持续访问的载体上,比如
$this->pile = new SessionDBTool;
不然 initSession 执行结束后,对象也没有了
在函数(方法)中创建的变量(对象)在函数(方法)外是访问不到的
你需要把它存放到可持续访问的载体上,比如
$this->pile = new SessionDBTool;
不然 initSession 执行结束后,对象也没有了
/**
* 初始化session入库
*/
protected function initSession(){
new SessionDBTool;
}
这段代码没有任何意义啊
那应该怎么写
@lijpwsw @xuzuning
原来是我的indexController没有继承后台控制器类
By The Way
/** * 初始化session入库 */ protected function initSession(){ new SessionDBTool; }
这样写是没有问题的
谢谢哈!
上一篇: 用oracle语句计算百分比
下一篇: PHP怎么处理移动端提交的表情字符?