ci框架php 跨域 session共享,redis-session跨域共享

defined('BASEPATH')) exit('No direct script access allowed');

// * session操作类库--可直接用语ci框架

// * 需安装phpredis模块

// * 基于cookie、redis

class Session {

var $redis; //redis连接

var $sso_session; //session_id

var $CI; //CI实例

var $cookie_name = 'sso_session';

var $cookie_path = '/';//cookie 保存目录

var $cookie_domain = '.peng7.com'; //cookie 保存的域

var $expire = 300; //过期时间(秒)

var $session_folder = 'sso_';//session_id的前缀

public function __construct(){

//* 构造方法

//* 连接redis

//* 产生session_id

$redis = new Redis();

$flag = $redis->connect($IP,$PORT);

if(!$flag){

exit("redis连接失败!");

}

$redis->select(0);

$redis->auth('');

$this->redis = $redis;

if(isset($_COOKIE[$this->cookie_name])){

$this->sso_session=$_COOKIE[$this->cookie_name];

}else{

//在IE6下的iframe无法获取到cookie,于是使用get方式传递cookie_name

if(isset($_GET[$this->cookie_name])){

$this->sso_session=$_GET[$this->cookie_name];

} else {

$this->sso_session=$this->session_folder.md5(uniqid(rand(),

true));

}

}

unset($redis,$hostArr);

}

//设置和更新session、cookie的过期时间

function sess_expiration($flag = FALSE){

if($flag){

$expiretime =

$this->redis->TTL($this->sso_session);

if($expiretime < 0){

return;

}

}

setcookie($this->cookie_name,$this->sso_session,time()+$this->expire,$this->cookie_path,$this->cookie_domain);

$this->redis->EXPIRE($this->sso_session,

$this->expire);

}

//* 创建session

//* $parms string/array

//* 同时赋予session、cookie过期时间

function set_userdata($parms,$value=''){

if(is_array($parms)){

$this->redis->hMset($this->sso_session,$parms);

}else{

$this->redis->hSet($this->sso_session,$parms,$value);

}

$this->sess_expiration();

}

//* 根据key获取session值

//* 若session已过期则返回空

//* 未过期将session、cookie的过期时间更新

function userdata($key){

$this->sess_expiration(TRUE);

return

$this->redis->hGet($this->sso_session,$key);

}

//* 返回所有的session

//* return array

function all_userdata(){

$this->sess_expiration(TRUE);

return

$this->redis->hGetAll($this->sso_session);

}

//* 删除单个session

function unset_userdata($key){

return

$this->redis->hDel($this->sso_session,$key);

}

//* 清空session

function sess_destroy(){

setcookie($this->cookie_name,$this->sso_session,time()-3600,$this->cookie_path,$this->cookie_domain);

return

$this->redis->DEL($this->sso_session);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值