session共享时,第二个站点sessionid为什么不一样
时间:2010-08-13
来源:互联网
我把session 存入数据库,想让2个站点(A,B)session共享,但第B站点并不是A站点的sessionid 为什么呢.
站A: test.aaa.net 单独使用正常
站B: test2.aaa.net 先开了A,然后在B打印A的 session时为空,数据库上面查显示2个session_key(A,B各一),为什么不是只有A吗? 请知道的朋友指教~~~
这是站内session_set_save_handler 配置,两站内都是同样这内容
- class my_session {
- protected $main_table = 'zf_session';
- protected $session_expire = 3600; //有效时间 秒
- protected $db = null;
-
- function __construct($db) {
- $this->db=$db;
- $domain = '.aaa.net';
- ini_set("session.save_handler", "user");
- //ini_set("session.bug_compat_warn" ,0);
- //ini_set("session.bug_compat_42", 0);
- //ini_set('session.gc_probability', 1);
- //ini_set('session.gc_divisor', 1000); (session.gc_probability/session.gc_divisor)
- //不使用 GET/POST 变量方式
- ini_set('session.use_trans_sid', 0);
- //设置垃圾回收最大生存时间
- ini_set('session.gc_maxlifetime', $this->session_expire);
- //使用 COOKIE 保存 SESSION ID 的方式
- ini_set('session.use_cookies', 1);
- // ini_set('session.cookie_path', INFO_PATH.'sesstemp/');
- //多主机共享保存 SESSION ID 的 COOKIE
- ini_set('session.cookie_domain', $domain);
-
- //将 session.save_handler 设置为 user,而不是默认的 files
- session_module_name('user');
- //定义 SESSION 各项操作所对应的方法名:
- session_set_save_handler(
- array($this, 'open'),
- array($this, 'close'),
- array($this, 'read'),
- array($this, 'write'),
- array($this, 'destroy'),
- array($this, 'gc')
- );
- } //end function
-
- function open($save_path, $session_name) {
- return true;
- } //end function
-
- function close() {
- return true;
- } //end function
-
- function read($session_key) {
- $sql = "SELECT session_value FROM `".$this->main_table."` WHERE session_key='". $session_key ."' AND session_expire>=' ". time()."'";
- $rs =$this->db->getOne($sql);
- if ($rs) {
- return $rs;
- } //end if
- return false;
- } //end function
-
- function write($session_key, $value) {
- $sql = "SELECT session_key FROM ".$this->main_table." WHERE session_key='". $session_key."'";
- // my_print($this->db);
- $key =$this->db->getOne($sql);
- if($key) { //存在记录
- $arr = array(
- 'session_expire' => time()+$this->session_expire,
- 'session_value' => $value
-
- );
- $this->db->update($this->main_table, $arr, "session_key='".$session_key."'");
- }
- else {
- $arr = array(
- 'session_key' => $session_key,
- 'session_expire' => time()+$this->session_expire,
- 'session_value' => $value,
- 'date' => date("Y-m-d H:i:s")
- );
- $this->db->insert($this->main_table, $arr);
- }
- //写入 SESSION
-
- return true;
- } //end function
-
- function destroy($session_key) {
- $this->db->delete($this->main_table,"session_key='".$session_key."'");
- return true;
- } //end function
-
- function gc($maxlifetime = null) {
- $max = $maxlifetime ? $maxlifetime : $this->session_expire + 3600*24;
- $this->db->delete($this->main_table,"session_expire < '".$max."'");
- //由于经常性的对表 sess 做删除操作,容易产生碎片,
- //所以在垃圾回收中对该表进行优化操作。
- $this->db->execute("OPTIMIZE TABLE ".$this->main_table);
- return true;
- } //end function
- }
作者: smallipis 发布时间: 2010-08-13
怎么突然又行了- -
麻烦版主帮我删除帖子吧.我删除不了
麻烦版主帮我删除帖子吧.我删除不了
作者: smallipis 发布时间: 2010-08-13
如果基于cookie,打印http head,先保证cookie一致性
作者: bs 发布时间: 2010-08-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28