下面写的这个session类可以彻底解决session不过期以及sessionid不变的问题。
<?php
/**
* 扩展Session类(简单封装)
*
* @author slimboy
*
*/
class Session {
/**
* 初始化
*/
static function _init(){
ini_set(‘session.auto_start‘, 0);
//Session::start();
}
/**
* 启动Session
*/
static function start() {
session_start();
}
/**
* 设置Session
*
* @param $name Session名称
* @param $value 值
* @param $time 超时时间(秒)
*/
public static function set($name,$value,$time){
if(empty($time)){
$time = 1800; //默认值
}
$_SESSION[$name] = $value;
$_SESSION[$name.‘_Expires‘] = time() + $time;
}
/**
* 获取Session值
*
* @param $name Session名称
*/
public static function get($name){
//检查Session是否已过期
if(isset($_SESSION[$name.‘_Expires‘]) && $_SESSION[$name.‘_E
xpires‘]>time()){
return $_SESSION[$name];
}else{
Session::clear($name);
return null;
}
}
/**
* 设置Session Domain
*
* @param $sessionDomain 域
* @return string
*/
static function setDomain($sessionDomain = null) {
$return = ini_get(‘session.cookie_domain‘);
if(!empty($sessionDomain)) {
ini_set(‘session.cookie_domain‘, $sessionDomain);//跨
域访问Session
}
return $return;
}
/**
* 清除某一Session值
*
* @param $name Session名称
*/
static function clear($name){
unset($_SESSION[$name]);
unset($_SESSION[$name.‘_Expires‘]);
}
/**
* 重置销毁Session
*/
static function destroy(){
unset($_SESSION);
session_destroy();
}
/**
* 获取或设置Session id
*/
static function sessionid($id=null){
return session_id($id);
}
}
?> 简单调用:
<?php
//设置session
Session::set(‘UserId‘, $userid, 3600);
//读取session
$userId = Session::get(‘UserId‘);
?>
彻底解决PHP Session不过期以及SessionId保持不变的问题
原文:http://my.oschina.net/junn/blog/309311