关闭后会话丢失然后重新打开

时间:2015-04-07 14:04:35

标签: php apache

我编写了一个PHP脚本,当我在具有标准配置的本地计算机/服务器上运行时,保留了一个SESSION,但是当我在另一台服务器上运行它时却没有。

我正在运行的代码:

function dump_session() {
  echo "\$_SESSION:";
  var_dump($_SESSION);
}

session_start();
echo "Session name: " . session_name() . "\n";

dump_session();

echo "Close session\n";
session_commit(); // using session_destroy() as same result;

echo "Start session\n";
session_start();
echo "Session name: " . session_name() . "\n";

dump_session();

在我的本地计算机/服务器上,结果如下:

Session name: BOPHPSESSID
$_SESSION:array(1) {
  'FOO' =>
  string(3) "BAR"
}
Close session
Start session
Session name: BOPHPSESSID
$_SESSION:array(1) {
  'FOO' =>
  string(3) "BAR"
}

在另一台服务器上,结果如下:

Session name: BOPHPSESSID
$_SESSION:array(1) {
  'FOO' =>
  string(3) "BAR"
}
Close session
Start session
Session name: BOPHPSESSID
$_SESSION:array(0) {
}

为什么在其他服务器上清除$_SESSION? php.ini配置中是否有可能导致此问题的内容?

2 个答案:

答案 0 :(得分:0)

在PHP中,您需要使用session_destroy();

From the Manual

您还可以对单个会话变量使用unset()。

答案 1 :(得分:0)

要在php中销毁会话,您需要使用session_destroy或unset()。在使用这些之前,请确保通过执行以下操作来设置会话:if(isset($ _ SESSION [' sessionName']))