php:如何在一个请求中使用两个不同的会话

时间:2013-03-19 16:20:58

标签: php session

此代码:

<?php

session_name('sess1');
session_start();
$_SESSION['a']=1;
session_write_close();

session_name('sess2');
session_start();
$_SESSION['b']=2;
session_write_close();

session_name('sess1');
session_start();

echo '<pre>';
print_r($_SESSION);
echo '</pre>';

?>

打印:

Array
(
    [a] => 1
    [b] => 2
)

如你所见,两个变量都存储在第一个会话(文件)中。

我需要并期待另一种行为。 我需要两个不同的会议。

为什么php表现如此?这不是一个错误吗?

1 个答案:

答案 0 :(得分:1)

  

[来自评论]我希望其他人可以将其包含在他们的计划中,而不会干扰他们自己的会话。

你希望通过大量干预会话处理来实现这一目标......?

我不认为这是个好主意。当你采用这种“非正统”的方式玩会话时,你很可能会增加用户对会话的问题。

  

我的会话也有自己的设置(比如cookie_lifetime),我不想干涉使用我系统的其他程序的会话。

为什么我嵌入到我的页面的登录系统的会话生命周期与我对会话的其余部分有不同的会话时间?对我来说没什么意义。

  

我开发了一个注册和登录系统,它有自己的会话(实际上会话内容是透明加密的)。

如果保持数据加密而将剩余的会话保留为纯文本是您的主要考虑因素 - 那么您可以轻松地在会话数组中生成自己的密钥,并且只加密驻留在该密钥下的数据。