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