$gb_DBHOSTname = "127.0.0.1"; //主机的名称或是IP地址
02
$gb_DBname = "dbname"; //数据库名称
03
$gb_DBuser = "username"; //数据库用户名称
04
$gb_DBpass = "pwd"; //数据库密码
05
$gb_COOKIE_DOMAIN = '.a.com';
06
$SESS_DBH = "";
07
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); //得到session的最大有效期。
08
session_id(); //不使用 GET/POST 变量方式
09
ini_set('session.use_trans_sid', 0); //设置垃圾回收最大生存时间
10
ini_set('session.gc_maxlifetime', 13600); //使用 COOKIE 保存 SESSION ID 的方式
11
ini_set('session.use_cookies', 1);
12
ini_set('session.cookie_path', '/'); //多主机共享保存 SESSION ID 的 COOKIE
13
ini_set("session.cookie_domain", $gb_COOKIE_DOMAIN);
14
//将 session.save_handler 设置为 user,而不是默认的 files session_module_name('user');
15
function sess_open($save_path, $session_name) {
16
global $gb_DBHOSTname, $gb_DBname, $gb_DBuser, $gb_DBpass, $SESS_DBH;
17
if (!$SESS_DBH = mysql_pconnect($gb_DBHOSTname, $gb_DBuser, $gb_DBpass)) {
18
die('MySQL Error');
19
}
20
mysql_query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary", $SESS_DBH);
21
if (!mysql_select_db($gb_DBname, $SESS_DBH)) {
22
die('MySQL Error');
23
}
24
return true;
25
}
26 27
function sess_close() {
28
global $SESS_DBH;
29
//$SESS_DBH->Close();
30
return true;
31
}
32 33
function sess_read($key) {
34
global $SESS_DBH, $SESS_LIFE;
35
// var_dump($SESS_DBH);
36
$qry = "select session_data from sessions where session_id = '$key' ";
37
$qid = mysql_query($qry, $SESS_DBH);
38
// var_dump($qid);
39
if (list ($value) = mysql_fetch_row($qid)) {
40
return $value;
41
}
42
return false;
43
}
44 45
function sess_write($key, $val) {
46
global $SESS_DBH, $SESS_LIFE;
47
$session_last_access = time();
48
$value = $val;
49
$qry = "insert into sessions values('$key',$session_last_access,'$value')";
50
$qid = mysql_query($qry, $SESS_DBH);
51
if (!$qid) {
52
$qry = "update sessions set session_last_access=$session_last_access, session_data='$value' where session_id='$key' ";
53
$qid = mysql_query($qry, $SESS_DBH);
54
}
55
return $qid;
56
}
57 58
function sess_destroy($key) {
59
global $SESS_DBH;
60
$qry = "delete from sessions where session_id = '$key'";
61
$qid = mysql_query($qry, $SESS_DBH);
62
return $qid;
63
}
64 65
function sess_gc($maxlifetime) {
66
global $SESS_DBH;
67
$old = time() - $maxlifetime;
68
$old = mysql_real_escape_string($old);
69
$qry = "delete from sessions where session_last_access < " . $old;
70
$qid = mysql_query($qry, $SESS_DBH);
71
return mysql_affected_rows($SESS_DBH);
72
}
73
session_module_name();
74
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write","sess_destroy", "sess_gc");
75
session_start();

php跨域共享session的更多相关文章

  1. 跨域共享cookie和跨域共享session

    转载自:http://blog.csdn.net/ahhsxy/article/details/7356128 这里所说的跨域,是指跨二级域名,而且这些域名对应的应用都在同一个app上, 比如我有以下 ...

  2. 相同根域名下跨域共享session的解决方案

    https://code.msdn.microsoft.com/CSASPNETShareSessionBetween-021daa39

  3. session跨域共享解决方案

    要让session跨域共享,需要解决三个问题: 1.通过什么方法来传递session_id? 2.通过什么方法来保存session信息? 3.通过什么方法来进行跨域? 一.传递session_id有4 ...

  4. 使用Spring Session和Redis解决分布式Session跨域共享问题

    http://blog.csdn.net/xlgen157387/article/details/57406162 使用Spring Session和Redis解决分布式Session跨域共享问题

  5. 170222、使用Spring Session和Redis解决分布式Session跨域共享问题

    使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...

  6. session跨域共享问题解决方案

    在讨论 session 跨域共享问题之前,我们首先要了解 session 做了什么,没做什么 1.HTTP是无状态的,也就是说服务器不知道谁访问过他,但是有时间,又需要我们去保留这个状态比如说用户的登 ...

  7. 在ExpressJS中设置二级域名跨域共享Cookie

    问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.ses ...

  8. URL资源跨域访问 跨域使用session信息

    SilverLight 出于对安全性的考虑默认情况下对URL的访问进行了严格的限制,只允许访问同一子域下的URL资源. 下表列出了Silverlight 2.0 中 URL 访问规则:   WebCl ...

  9. 通过jsonp解决浏览器的跨域共享

    因为浏览器的同源策略,普通ajax访问跨域请求返回的json数据是不会被浏览器接受的.看下面例子可以看出是访问不到的 首先 定义webapi 后台代码 public class JsopControl ...

随机推荐

  1. 你也许还不知道const_cast,static_cast,dynamic_cast,reinterpret_cast的区别吧?

    [QQ群: 189191838,对算法和C++感兴趣可以进来]       开篇立意: C++中各种转换令人眼花缭乱,看似差不多,实际差很多,而且在当今时间,做一个"差不多先生"其 ...

  2. 彗星撞地球 | 近25万倍压缩的精品3D动画

    文章目录 写在前面 Prophecy<彗星撞地球> 下载地址 简概 注意 3D射击小游戏 下载地址 简概 写在前面 WareZ是个无形的组织,号称"不以赢利为目的纯技术团体&qu ...

  3. pyttsx的中文语音识别问题及探究之路

    最近在学习pyttsx时,发现中文阅读一直都识别错误,从发音来看应该是字符编码问题,但搜索之后并未发现解决方案.自己一路摸索解决,虽说最终的原因非常可笑,大牛们可能也是一眼就能洞穿,但也值得记录一下. ...

  4. linux-系统资源查看-静态

    查看系统版本:lsb_release -a 查看cpu:lscpu 查看内存:free -m          (free -g  单位是GB) 查看硬盘空间情况df -h

  5. 设计模式之工厂模式之简单工厂(php实现)

    github源码地址: git@github.com:ZQCard/design_pattern.git 1.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...

  6. django模型manager学习记录

    Managers 在语句Book.objects.all()中,objects是一个特殊的属性,需要通过它查询数据库. 在第5章,我们只是简要地说这是模块的manager .现在是时候深入了解mana ...

  7. appium python api(转)

    Appium_Python_Api文档 1.contextscontexts(self): Returns the contexts within the current session. 返回当前会 ...

  8. Vue自定义指令和路由

    一.自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 下面我们注册一个全局指令 v-focus,该指令的功能是在页面加载时,元素获得焦点: ...

  9. Python 面向对象二(转载)

    来源:www.cnblogs.com/wupeiqi/p/4766801.html 三.类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 1.公有成员, ...

  10. component-scan和annotation-driven

    <context:component-scan/> 该xml配置作用是启动Spring的组件扫描功能,自动扫描base-package指定的包及其子文件下的java文件,如果扫描到有@co ...