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,$key,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);
本文由:xiaoshu168 作者:xiaoshu发表,转载请注明来源!