一个Web应用程序上的多个会话

时间:2014-03-04 19:36:13

标签: php session

我知道我可以使用$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" )。有没有办法结束上一个会话并重新开始我的会话。注意:我不想销毁之前的会话,因为其中可能包含有价值的信息。

2 个答案:

答案 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。

PHP session_name

  

会话名称在请求启动时重置为存储在session.name中的默认值。因此,您需要为每个请求调用session_name()(并且在调用session_start()或session_register()之前)。

阅读这个答案:

Multiple Sessions