奇数Php会话行为

时间:2012-12-12 20:20:24

标签: php session

出于某种原因,我遇到了一些会话问题。到目前为止,我从未遇到会话问题。我有三页:

/index.php
/test/sessions.php
/test/sessions2.php

所有代码都有相同的代码(/test/sessions.php也设置会话值):

<?php
if(!isset($_SESSION)){
    session_start();
}
var_dump($_SESSION);
echo(session_id());
?>

session.php(设定值):

<?php
session_start();
$_SESSION['foo'] = 'bar';
?>

代码在/ test /目录中的页面上工作正常,但在索引页面上没有。当我导航到索引页面时,它将清除所有会话数据,但就像我说的那样,注意到/ text /目录中的页面是错误的。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您的session cookie path似乎是/test ../。将其设置为/可能会解决这个问题。

答案 1 :(得分:-1)

if(!isset($_SESSION)){
    session_start();
}

您的代码在开始会话之前检查$ _SESSION。

您的会话必须启动才能实现$ _SESSION。

会话数据根据您处理会话的方式存储在磁盘或数据库中。

每次启动会话时,都会根据存储的数据创建$ _SESSION变量。

每次完成php脚本执行时,$ _SESSION中的数据都会被序列化并写入文件或db ...并且变量将被关闭。

所以除非你开始一个会话,否则就没有$ _SESSION。

session_start();

var_dump($_SESSION);

这是合适的