<?php
namespace imcat;
// comSession
class comSession {
//public $guid = '';
static $guid_ck = array();
static function set($id,$val){
$_SESSION[self::fill($id)] = self::fill($val);
}
static function get($id){
return isset($_SESSION[self::fill($id)]) ? $_SESSION[self::fill($id)] : '';
}
// Session过滤
static function fill($xStr){
$xStr = str_replace(array('"',"'","\\",'|',':',';'),'',$xStr); //'<','>',
return $xStr;
}
/*
[ip] => 192.168.1.11 / sdltkfc6tdq8ijlui7lc68brh1
[fix] => sessid@safil-.bbmU-dcxyE-XwrmC-ZDgoQ-pLTC+
[enc] => 3bcf0114e73f64a55240b7c55fea7069
[ua] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
*/
static function guid($flg='',$nsp='',$mode=0){ //mode:Cook,Sess,UIP
global $_cbase;
$sipck = empty($mode) ? $_cbase['ucfg']['guid'] : $mode;
if(empty($sipck) || !in_array($sipck,array('Sess','UIP','Cook'))) $sipck = 'Cook';
$func = "get$sipck";
$sipck = self::$func($nsp);
$ua = $_cbase['run']['userag'];
$fix = empty($nsp) ? (@$_cbase['safe']['site']) : $nsp;
strstr($flg,'time') && $fix .= '@'.$_cbase['run']['timer'];
strstr($flg,'safil') && $fix .= '@'.$_cbase['safe']['safil'];
$enc = md5($sipck.$fix.$ua); //,'fix'=>$fix
return array('sip'=>$sipck,'sua'=>$ua,'sid'=>$enc);
}
// cookie
static function getCook($nsp=''){
global $_cbase;
if(!empty(self::$guid_ck[$nsp])) return self::$guid_ck[$nsp];
$ua = md5($_cbase['run']['userag'].$nsp);
$ckey = "{$nsp}_".substr($ua,0,12);
$cval = comCookie::oget($ckey);
if(strlen($cval)<32){
$cval = basKeyid::kidTemp().'-'.basKeyid::kidRand('24',9).'-'.substr($ua,9,9);
comCookie::oset($ckey,$cval,31622400); //86400*366 = 31 622 400
}
self::$guid_ck[$nsp] = $cval;
return self::$guid_ck[$nsp];
}
// session_id
static function getSess($nsp=''){
return session_id();
}
// 获取客户端真实IP(用于guid,session判断)
static function getUIP($nsp=''){
return basEnv::userIP();
}
}