7

我有一个名为的主目录System,其子目录名为Subsystem. 我来自主目录的会话在子目录中不起作用。

当我echo session_save_path();在两个文件夹中时,他们会向我展示"/tmp".

然后,我试图放入session_save_path("../tmp");我的子目录,但它显示我"This webpage has a redirect loop"

session.phpSystem目录中:

<?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'];
}

?>

我已经用谷歌搜索了一遍,但我仍然无法让它工作。

4

2 回答 2

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'];
于 2012-12-05T03:05:24.373 回答
0

会话在服务器上的临时目录中创建一个文件,其中存储了已注册的会话变量及其值。在访问期间,该数据将可供网站上的所有页面使用。

临时文件的位置由 php.ini 文件中名为 session.save_path 的设置确定。所以请检查这条路径。

另外 [session-save-path()][1] 获取和/或设置当前会话保存路径。

我认为你不需要写这一行并检查你的 php.ini 以获取正确的路径。

对于会话,我发现了一些有用的文章http://www.tutorialspoint.com/php/php_sessions.htm

谢谢。

于 2012-12-05T03:17:08.533 回答