[SESSION] 跨服务器共享session

首先,建立保存session的表sessions

CREATE TABLE sessions (  
sid char(32) not null,  
expiry int(11) unsigned not null,  
value text not null,  
PRIMARY KEY (sid)  
); 

注册session的页面session_reg.php

<?
session_start();//会话开始
$SID=session_id();//每次建立会话都会产生一个唯一的session id,函数session_id()不带参数时取得当前会话的id

$_SESSION["sesname"]="value_of_sesname";//注册变量
$_SESSION["sesname2"]="value_of_sesname2";
$sess_text=session_encode();//将当前会话的数据进行编码
$expiry=time()+3000;//设置session有效时间
$conn=mysql_connect($DB_HOST,$DB_USER,$DB_PASSWD);//连接数据库
mysql_select_db($DB_NAME);
mysql_query("insert into sessions values ('$SID','$expiry','$sess_text')");//保存当前会话的内容
header("location:http://xxx.xxx.com/echoses.php?SID=$SID");
?>;

使用session的页面echoses.php

<?
$conn=mysql_connect($DB_HOST,$DB_USER,$DB_PASSWD);
mysql_select_db($DB_NAME);
session_id($SID);//设置session-id,注意函数session_id()此时带有参数,就是前面传过来的SID.
                  //此时函数用来设置当前会话的id号(session-id),这种用法时,函数需在session_start()之前别调用
$rs=mysql_query("select value from sessions where sid='$SID'");//去会话内容
if(mysql_num_rows($rs)) session_decode(mysql_result($rs,0,"value"));//将会话数据进行解码
session_start();//会话开始
echo "sesname=".$_SESSION["sesname"];
echo "<br />;sessname2=".$_SESSION["sesname2"];
?>;

此实现session共享的方法通过每次会话的session-id都不同,将会话内容保存在数据库中.然后通过session-id在将数据库中的会话数据取出进行验证.将会话内容保存在数据库中,可以实现session在不同主机之间共享.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值