2

我有一个项目,我想在一个浏览器中创建两个会话 cookie。第一个会话将唯一标识一个人,第二个会话将在用户之间共享会话内的事件。我一直在为此使用数据库,但希望在会话结束时数据消失。系统内没有登录。

除了创建 cookie 系统来复制功能之外,有没有办法做到这一点?

例如,我们将有两个会话 cookie:

name=someRandomUUIDsession=valueSharedBetweenUsers.

我不想name与多个用户共享会话,但session会话会。想法?

4

4 回答 4

3

如果您想在用户之间共享信息,使用会话不是最好的主意,因为它使用文件系统。你最好使用处理所有锁定、并发等问题的数据库。

尽管您所要求的在技术上是可能的,但我强烈建议您不要这样做。

编辑

假设我已经正确理解了您的要求,我会这样做:

  1. 仅使用会话来存储与该用户相关的会话数据。它可能包括以下内容:

    $_SESSION['name'] = 'test name';
    $_SESSION['groupid'] = 2;
    
  2. 带有字段的 MySQL 数据库和表groupidXXXXX(您要存储的数据),timestamp

每当有人更新特定组 ID 的信息时,您都会更新时间戳。

然后运行一个简单的 cronjob 来检查是否有current time - timestamp > 3600(一小时),您可以认为这是陈旧的并删除这些记录。

于 2010-08-30T16:54:56.310 回答
2

我*认为*您只能拥有一个“当前”会话,但您所指的功能是 session_name:

http://www.php.net/manual/en/function.session-name.php

cookie 功能非常简单。我建议改为调查。

于 2010-08-30T17:00:27.090 回答
1

“valueSharedBetweenUsers”从何而来?它是常量还是数据库条目?

无论哪种方式,为每个组创建一个会话都是没有意义的。相反,您应该为每个用户提供一个唯一的会话;将您的“共享”属性作为每个人的会话属性。

所以开始独特的会话然后就做<? $_SESSION['session'] = 'mySharedValue'; ?>

现在每个人都有一个具有唯一 sessionID 和公共值“会话”的会话。

(显然,如果您以后需要更改此属性,则必须为每个经过身份验证的人单独执行此操作)

于 2010-08-30T17:00:48.800 回答
1

这并不像人们让 facebook 和 twitter 在用户登录时创建至少 10 个不同的会话那样牵强。

于 2015-08-25T11:15:04.173 回答