使用PHP在一个实例中进行多个会话?

时间:2010-08-30 16:51:21

标签: php session-variables session-cookies

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

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

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

name=someRandomUUIDsession=valueSharedBetweenUsers.

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

3 个答案:

答案 0 :(得分:3)

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

虽然你在技术上要求的是,但我强烈建议不要这样做。

修改

假设我已正确理解您的要求,我将采用以下方式:

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

    $_SESSION['name'] = 'test name';
    $_SESSION['groupid'] = 2;
    
  2. 包含字段groupidXXXXX(您要存储的数据),timestamp

  3. 的MySQL数据库和表格

    每当有人更新特定组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个人单独执行此操作)