我知道我可以使用$oldSession = session_name("mySessName");
来设置会话的名称,我喜欢这样做:
# FileName: sessionTest.php
$old_name = session_name("TEST");
session_start();
$_SESSION["hi"]="hi";
print_r($_SESSION);
我甚至可以拥有另一个文件:sessionTest1.php,其中包含以下内容:
# FileName: sessionTest.php
$old_name = session_name("TEST1");
session_start();
$_SESSION["Bar"]="bar";
print_r($_SESSION);
我可以在sessionTest.php和sessionTest1.php之间来回切换,会话只会有相应的变量。
我遇到的问题是假设另一个脚本已经启动会话,然后调用此文件。我所看到的是假设我:
session_name("other");
session_start();
$_SESSION["foo"] = "foo";
require_once "sessionTest.php";
print_r($_SESSION);
这是打印Array( "foo" => "foo", "hi" => "hi" )
。有没有办法结束上一个会话并重新开始我的会话。注意:我不想销毁之前的会话,因为其中可能包含有价值的信息。
答案 0 :(得分:2)
我所做的是使我的SESSION 1层比标准更深。所以我可以使用该阵列的那一层。
某页:
<?php
$_SESSION['myApp1']['hi'] = "Hi";
?>
其他一些页面:
<?php
$_SESSION['myApp2']['ciao'] = "Ciao";
?>
所以,当我想在第2页看到会话变量时我只是
<?php
echo "<pre>";
print_r($_SESSION['myApp2']);
echo "</pre>";
?>
答案 1 :(得分:0)
在session_start之前使用session_name。
会话名称在请求启动时重置为存储在session.name中的默认值。因此,您需要为每个请求调用session_name()(并且在调用session_start()或session_register()之前)。
阅读这个答案: