我有一个名为System
的主目录,其子目录名为Subsystem
。我在主目录中的会话在子目录中不起作用。
当我在两个文件夹中echo session_save_path();
时,他们会向我显示"/tmp"
。
然后,我尝试将session_save_path("../tmp");
放在我的子目录中,但它显示"This webpage has a redirect loop"
。
session.php
目录中的 System
:
<?php
session_start( );
if (!($_SESSION['uid']))
{
header("Location:index.php");
}
else
{
$_SESSION['uid'] = $_SESSION['uid'];
}
?>
子系统文件夹中的session.php:
<?php
session_save_path("../tmp");
session_start( );
if (!($_SESSION['uid']))
{
header("Location:index.php");
}
else
{
$_SESSION['uid'] = $_SESSION['uid'];
}
&GT;
我已经谷歌搜索了所有,但我仍然无法让它工作。
答案 0 :(得分:1)
该目录不会影响您的会话状态(给定Apache-PHP网站的所有目录将以标准配置访问同一会话)。您不必使用session_save_path()
。
我认为问题部分在于你将'uid'设置为自身($_SESSION['uid'] = $_SESSION['uid'];
) - 因此可能永远不会将其设置为某个值 - 并且如果未设置则可能无限期地重定向。
我建议这个简单的测试,以确保您的会话实际上正在运作:
<强> /session_set.php 强>
<?php
session_start();
$_SESSION['uid'] = 123;
<强> /sub_dir/session_get.php 强>
<?php
session_start();
echo $_SESSION['uid'];
答案 1 :(得分:0)
会话在服务器上的临时目录中创建一个文件,其中存储了已注册的会话变量及其值。在访问期间,该数据将可供网站上的所有页面使用。
临时文件的位置由名为session.save_path的php.ini文件中的设置确定。请仔细检查这条路。
另外[session-save-path()] [1]获取和/或设置当前会话保存路径。
我认为你不需要写这行,并检查你的php.ini是否正确。
对于会话我发现了一些有用的文章http://www.tutorialspoint.com/php/php_sessions.htm
感谢。