【发布时间】:2011-02-10 13:15:49
【问题描述】:
我在 PHP 会话中遇到了一个非常奇怪的问题,以下是事实:
创建会话变量代码 - mydomain/a/b/c/create_session.php
<?
session_start();
$_SESSION['test'] = "Hello World";
?>
读取会话变量read mydomain/a/b/c/read_session.php
<?
session_start();
echo $_SESSION['test'];
?>
问题
当我从同一个 URL 中访问 read_session.php 代码时,它可以正常工作。 但是当我尝试从不同的路径读取会话变量时,它不起作用。
示例
mydomain/a/b/c/read_session.php - 有效!
mydomain/a/b/read_session.php - 有效!
mydomain/a/read_session.php - 有效!
mydomain/read_session.php - 不起作用!
mydomain/d/read_session.php - 不起作用!
【问题讨论】:
-
您在哪个目录中启动会话(=设置 cookie)?我对这个问题的记忆很模糊,但我认为如果您不指定路径,cookie 将仅对该路径和子目录有效
-
您是否检查过会话 cookie 实际有效的路径? (尝试 Firefox + Web Developer 插件) - 我复制了您在本地主机上描述的内容,没有问题。会话 cookie 对整个域都有效。 (PHP 5.3,默认设置。)
-
我正在使用 ini_set('session.cookie_path', '/');
-
嗨 Atli, "/a" 虽然我正在使用 ini_set('session.cookie_path','/') 也许我应该尝试使用第四个参数 setcookie() 到 '/' ..