一个很抓狂的问题,搞了一个下午没弄好,请高手指教
问题是验证码存在SESSION中,能写进数据库,但是在浏览器加载不出来。
验证码输出方法所在的控制器 继承自BackplatformController控制器 ,
在BackplatformController的构造方法里调用session类
下面是自定义的session类
<?php
/**
* Class SessionDBTool
*/
class SessionDBTool{
private $db; //保存数据库连接对象
public function __construct(){
//自定义session处理方法
ini_set('session.save_handler','user');
session_set_save_handler(
array($this,'sess_open'),
array($this,'sess_close'),
array($this,'sess_read'),
array($this,'sess_write'),
array($this,'sess_destroy'),
array($this,'sess_gc')
);
//开启session
@session_start();
}
/**
* 初始化
*/
public function sess_open(){
$this->db = MYSQLDB::getInstance($GLOBALS['config']['database']);
}
/**
* 关闭
* @return bool
*/
public function sess_close(){
return true;
}
/**
* @param $sess_id
* @return string
*/
public function sess_read($sess_id){
$sql="select sess_data from it_session where sess_id='$sess_id'";
if($row=$this->db->fetchRow($sql)){
return $row['sess_data'];
}else{
return '';
}
}
/**
* @param $sess_id
* @param $sess_data
*/
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'";
if($result=$this->db->myquery($sql)){
return true;
}
}
/**
* @param $sess_id
*/
public function sess_destroy($sess_id){
$sql="delete from it_session where sess_id='$sess_id'";
$result=$this->db->myquery($sql);
}
/**
* @param $ttl
* @return mixed
*/
public function sess_gc($ttl){
$now = time();
$last = $now -$ttl;
//删除过期session
$sql = "delete from it_session where expire < $last";
return $this->db->myquery($sql);
}
}
下面是验证码存入session
已经搞定了,ob缓存没有清除