大神在嗎?PHP關於session和cookie的修改看不懂啊!
幫忙看下下面兩個功能是否修改了SESSIONID,為什麼我始終擷取不到正確的id呢?每次瀏覽器產生的都是固定的id,而我擷取到的id都是在變化的。
/**
* session管理函數
* @param string|array $name session名稱 如果為數組則表示進行session設定
* @param mixed $value session值
* @return mixed
*/
function session($name,$value='') {
$prefix = C('SESSION_PREFIX');
if(is_array($name)) { // session初始化 在session_start 之前調用
if(isset($name['prefix'])) C('SESSION_PREFIX',$name['prefix']);
if(C('VAR_SESSION_ID') && isset($_REQUEST[C('VAR_SESSION_ID')])){
session_id($_REQUEST[C('VAR_SESSION_ID')]);
}elseif(isset($name['id'])) {
session_id($name['id']);
}
ini_set('session.auto_start', 0);
if(isset($name['name'])) session_name($name['name']);
if(isset($name['path'])) session_save_path($name['path']);
if(isset($name['domain'])) ini_set('session.cookie_domain', $name['domain']);
if(isset($name['expire'])) ini_set('session.gc_maxlifetime', $name['expire']);
if(isset($name['use_trans_sid'])) ini_set('session.use_trans_sid', $name['use_trans_sid']?1:0);
if(isset($name['use_cookies'])) ini_set('session.use_cookies', $name['use_cookies']?1:0);
if(isset($name['cache_limiter'])) session_cache_limiter($name['cache_limiter']);
if(isset($name['cache_expire'])) session_cache_expire($name['cache_expire']);
if(isset($name['type'])) C('SESSION_TYPE',$name['type']);
if(C('SESSION_TYPE')) { // 讀取session驅動
$class = 'Session'. ucwords(strtolower(C('SESSION_TYPE')));
// 檢查驅動類
if(require_cache(EXTEND_PATH.'Driver/Session/'.$class.'.class.php')) {
$hander = new $class();
$hander->execute();
}else {
// 類沒有定義
throw_exception(L('_CLASS_NOT_EXIST_').': ' . $class);
}
}
// 啟動session
if(C('SESSION_AUTO_START')) session_start();
}elseif('' === $value){
if(0===strpos($name,'[')) { // session 操作
if('[pause]'==$name){ // 暫停session
session_write_close();
}elseif('[start]'==$name){ // 啟動session
session_start();
}elseif('[destroy]'==$name){ // 銷毀session
$_SESSION = array();
session_unset();
session_destroy();
}elseif('[regenerate]'==$name){ // 重建id
session_regenerate_id();
}
}elseif(0===strpos($name,'?')){ // 檢查session
$name = substr($name,1);