PHP

laravel session共享

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);


(1)
分享:

本文由:xiaoshu168 作者:xiaoshu发表,转载请注明来源!

相关阅读