出于某种原因,我遇到了一些会话问题。到目前为止,我从未遇到会话问题。我有三页:
/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 /目录中的页面是错误的。我错过了什么吗?
答案 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);
这是合适的