我有一个项目,我想在一个浏览器中创建两个会话 cookie。第一个会话将唯一标识一个人,第二个会话将在用户之间共享会话内的事件。我一直在为此使用数据库,但希望在会话结束时数据消失。系统内没有登录。
除了创建 cookie 系统来复制功能之外,有没有办法做到这一点?
例如,我们将有两个会话 cookie:
name=someRandomUUID
和session=valueSharedBetweenUsers.
我不想name
与多个用户共享会话,但session
会话会。想法?
我有一个项目,我想在一个浏览器中创建两个会话 cookie。第一个会话将唯一标识一个人,第二个会话将在用户之间共享会话内的事件。我一直在为此使用数据库,但希望在会话结束时数据消失。系统内没有登录。
除了创建 cookie 系统来复制功能之外,有没有办法做到这一点?
例如,我们将有两个会话 cookie:
name=someRandomUUID
和session=valueSharedBetweenUsers.
我不想name
与多个用户共享会话,但session
会话会。想法?
如果您想在用户之间共享信息,使用会话不是最好的主意,因为它使用文件系统。你最好使用处理所有锁定、并发等问题的数据库。
尽管您所要求的在技术上是可能的,但我强烈建议您不要这样做。
编辑
假设我已经正确理解了您的要求,我会这样做:
仅使用会话来存储与该用户相关的会话数据。它可能包括以下内容:
$_SESSION['name'] = 'test name';
$_SESSION['groupid'] = 2;
带有字段的 MySQL 数据库和表groupid
,XXXXX
(您要存储的数据),timestamp
每当有人更新特定组 ID 的信息时,您都会更新时间戳。
然后运行一个简单的 cronjob 来检查是否有current time - timestamp > 3600
(一小时),您可以认为这是陈旧的并删除这些记录。
我*认为*您只能拥有一个“当前”会话,但您所指的功能是 session_name:
http://www.php.net/manual/en/function.session-name.php
cookie 功能非常简单。我建议改为调查。
“valueSharedBetweenUsers”从何而来?它是常量还是数据库条目?
无论哪种方式,为每个组创建一个会话都是没有意义的。相反,您应该为每个用户提供一个唯一的会话;将您的“共享”属性作为每个人的会话属性。
所以开始独特的会话然后就做<? $_SESSION['session'] = 'mySharedValue'; ?>
现在每个人都有一个具有唯一 sessionID 和公共值“会话”的会话。
(显然,如果您以后需要更改此属性,则必须为每个经过身份验证的人单独执行此操作)
这并不像人们让 facebook 和 twitter 在用户登录时创建至少 10 个不同的会话那样牵强。