Tuesday, February 10, 2009

unset $_COOKIE会导致session id没法获取

自定义的Session Handler, 用MySQL的一个Memory表,用session_id()获取session id;
又写了个类接管gpc的变量获取,然后中间先过滤一道,为保证数据安全,就在构造的时候

private function __construct()
{
$this->_get = & $_GET;
$this->_post = & $_POST;
$this->_request = & $_REQUEST;
$this->_cookie = & $_COOKIE;
$this->_files = & $_FILES;

unset($_GET, $_POST, $_REQUEST, $_COOKIE, $_FILES);
}

结果导致页面查询从2个变成了3个,把sql log下来一看,在read的时候每次都新插入一个新的session行。

由于gpc的这个类相对比较底层,于是调用初始化的优先级比较高,先于 session handler 的初始化,结果导致 session id 没法正常获取


解决方案:把变量的unset单独出一个 public function,然后初始化session后,调用

No comments:

Post a Comment