[SESSION] 跨服务器共享session

首先,建立保存session的表sessions

CREATETABLEsessions(
sidchar(32)notnull,
expiryint(11)unsignednotnull,
valuetextnotnull,
PRIMARYKEY(sid)
);

注册session的页面session_reg.php

<?
session_start();//会话开始
$SID=session_id();//每次建立会话都会产生一个唯一的sessionid,函数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("insertintosessionsvalues('$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("selectvaluefromsessionswheresid='$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在不同主机之间共享.

你可能感兴趣的:(session)