php - 同一个Web服务器上多个页面的唯一会话ID

时间:2012-06-12 11:44:51

标签: php session session-state session-variables sessionid

我为游戏服务器开发了一个小型管理页面,您可以在线添加/删除/编辑设置。

一切正常,但我的会话有问题。如果登录成功,则会创建会话ID

$_SESSION['adm_login'] = "okay";

如果我访问另一个页面,同一平台(在同一个Web服务器上)会自动创建会话。只有在我成功登录我的网页时才会发生这种情况。

我认为发生此问题是因为所有内容都在同一个Web服务器上,因为会话ID是相同的。

我该怎么办?我需要在数据库中创建一个表,用于存储会话ID或...?

任何人都可以给我一个例子,或者会话php的教程。

谢谢!

2 个答案:

答案 0 :(得分:3)

使用session.cookie_pathsession.cookie_domain等设置,以便会话Cookie仅对您希望的路径或域有效。

例如,如果每个“项目”都有一个文件夹,则可以将session.cookie_path设置为当前项目文件夹。这将确保浏览器仅发送该项目的会话cookie,而不是其他的。将为用户访问的每个项目生成一个新会话。

答案 1 :(得分:1)

查看session_regenerate_id()功能。它将使用新生成的会话ID更新当前会话ID。

创建唯一的SessionId:

session_start();
session_regenerate_id();
$_SESSION['adm_login'] = "okay";

销毁唯一的SessionId:

session_unset();
session_destroy();
$_SESSION = array();

编写session_unset和session_destroy的原因是,当您创建任何会话时,会在服务器和客户端浏览器中创建会话cookie,当您从服务器销毁会话时,也需要清除在客户端浏览器中创建的cookie。