session共享类
<?PHP /** * Class SessionJieKou * session 操作集合 */ class SessionAbstract extends \Eloquent{ /** * @return mixed * 获取用户sesson */ //定义链接 private $redis ; //定义sessioin民称 var $sso_session; var $session_folder; //定义cookie 名称 var $cookie_name; var $cache; //定义到期时间 var $expireAt ; public function __construct($cookie_name="sso_session",$expire=null,$session_id_prefix="") { $this->redis = Redis::connection('default'); $this->cookie_name=$cookie_name; $this->session_folder="sso_session:"; //若是cookie已经存在则以它为session的id $cookie =Cookie::get($this->cookie_name); if(isset($cookie)) { $this->sso_session=$cookie; //var_dump($this->sso_session);die; }else{ //判断过期时间 if(empty($expire)) { $this->expire=Config::get('session.lifetime'); $this->expireAt=time()+$this->expire; } else { $this->expire=$expire; $this->expireAt=time()+$this->expire; } //在IE6下的iframe无法获取到cookie,于是我使用了get方式传递了cookie的名字 if(isset($_GET[$this->cookie_name])) { $this->sso_session=$_GET[$this->cookie_name]; }else { $this->sso_session=$this->session_folder.$session_id_prefix.md5(uniqid(rand(), true)); } Cookie::queue($this->cookie_name,$this->sso_session); //setcookie($this->cookie_name,$this->sso_session,$this->expireAt,"/"); } } /** * @param $keyname * @return bool * 获取session */ public function get($keyname) { $result = new SessionAbstract($keyname); $result->setExpire(7200); $data= $this-> redis->hGet($this->sso_session,$keyname); if((isset($data))) { return $data; } else{ return false; } } /** * @param $key * @return mixed * 获取session(对象) */ public function getobject($key) { $this->setExpire(7200); return unserialize($this->redis->hGet($this->sso_session,$key)); } /** * @param $key * @return mixed * 删除单个session */ public function del($key) { return $this->redis->hDel($this->sso_session,$key); } /** * @return mixeds * 删除所有的session */ public function delAll() { return $this->redis->del($this->sso_session); } /** * @param $key * @param $value * 设置session */ public function set($key,$value,$time =7200) { $this->redis->hSet($this->sso_session,$key,$value); $this->redis->expire($this->sso_session,$time); $this->redis->ttl('x'); } /** * @param $array * 设置多个值 * 数组 */ public function setMany($array,$time = 7200) { $this->redis->hMset($this->sso_session,$array); $this->redis->expire($this->sso_session,$time); $this->redis->ttl('x'); } /** * @param $key * @param $object * 设置session值 */ public function setobject($key,$object, $time = 7200 ) { $this->redis->hSet($this->sso_session,serialize($object)); $this->redis->expire($this->sso_session,$time); $this->redis->ttl('x'); } /** * 获取全部的session */ public function getAll() { $result = new SessionAbstract(); return $this->redis->hGetAll($result->sso_session); } //设置session 过期时间 public function setExpire($time) { return $this->redis->expire($this->sso_session,$time); } public function getTTL($key ) { $result = new SessionAbstract($key); return $result->redis->ttl($result->sso_session); } }
//获取
$session = new SessionAbstract();
$session->getobject('userinfo');
//存储
$session = new SessionAbstract();
$session->setobject('userinfo',$user);