php跨域共享session

本文详细介绍了如何在PHP中使用MySQL数据库作为Session存储后端,实现持久化的Session管理,包括配置、初始化、读写、销毁及垃圾回收等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值