background image

PHP 通过 session id 实现 session 共享和登录验证的代码,需要的朋友可以参考下
先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途:

 

 
首先,多服务器共享

session 问题,这个大家应该都能够理解的,当一个网站的用户量过大,

就会使用服务器集群,例如专门有一个登录用的服务器。用户通过登录服务器登录之后,登
录服务器保存了用户的登录信息

session,而其他受访问的服务器,例如电影服务器没有这

session,那么我们就要通过一个 session 的唯一标识来共享这个 session 了——具体

session 的共享超出了本文的范围,请自行查阅资料。 
 
第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通
过浏览器来请求连接,而是通过

socket 或者其它方式来请求数据的时候,我们首先要对他

进行用户登录验证,验证成功之后,就下发一个

sessionid 给他,然后他每次请求的时候就

携带这个

sessionid,我们通过这个 sessionid 来判断 session 是否已经存在,如果存在我们就

认定用户已经登录

…… 

 
对于第一个问题,我们可以把

sessionid 保存在数据库中得以实现,这个方法比较安全而且

应用广泛,但是不是我们讨论的范围哦

 

 
第二个问题,其实已经很简单了,看一下代码

 

 
首先验证的时候产生一个

sessionid; 

代码如下

:

 
<?php 
Session_start(); 

$sessionId

 = session_id();

//得到 sessionid 

//将 session 下发给客户端 

......... 
?> 
 
客户端携带

sessionid 这个变量来请求数据 

代码如下

:

 
<?php 
Session_id(‘

$sessionid

');

//注意这个时候 session_id()这个函数是带有参数的 

Session_start();

//这个函数必须在 session_id()之后 

?> 
 
这个时候

session 已经是登录验证时候的 session 了。 

注意:在

sessionServer.php 中如果使用 thinkphp 等其他自动启动 session_start();函数的框架

时,必须先调用

session_destory()函数来清空 session。