0

我在 PHP 会话删除数据并重定向回我的登录页面时遇到问题。

这是我从顶部获得的目录结构:


  1. Login // 包含要登录/注销的文件
  2. Main // 包含登录用户的页面
  3. index.php // 具有完全可操作表单的登录屏幕

在登录目录:check_login.php

在主目录中:page1.php、folder1 和 folder2

在文件夹 1:home.php,include1.php

在文件夹 2 中:include2.php

(对不起,如果这不是很容易理解)


这是我登录 check_login.php 时运行的代码:

session_start();
$_SESSION["id"] = $id; 
header("location:../main/page1.php"); //into main directory

所有页面都包含相同的样式(标题、导航、页脚),并且每个页面都有一个主要内容块,因此我使用包含在文件夹 1 和文件夹 2 中的包含,具体取决于要显示的内容。默认情况下,home.php 包含在文件夹 1 中的主页中。其他页面使用包括可能来自任一文件夹的 include1.php 或 include2.php。

在 page1.php 的顶部:

session_start();
if($_SESSION["id"] == '')
{
header("location:../index.php");
}

从 page1.php,如果我导航到包含位于文件夹 1 中的页面,则可以正常工作。如果我导航回主页,则包含在 folder1 中也可以正常工作。两次我都可以从会话中读取 id 变量。

但是,如果我导航到包含位于 folder2 的页面,我会被重定向到我的登录页面。

有任何想法吗?

4

2 回答 2

0

我已经解决了这个问题,不能相信我的白痴。

在其中一个包含我回显指向另一个页面的链接的地方,这是错误的,实际上一直指向我的登录页面。现在一切正常,感谢所有帮助。典型的小学生错误。

于 2013-04-28T11:21:37.473 回答
0

您需要始终包括您的会话开始。一个好的方法是创建一个 header.php 或 bootstrap.php 或类似的,您可以在每个依赖于会话的扩展文件的开头包含一次。然后,除了正常工作之外,您的代码将变得更清洁、更易于管理。

于 2013-04-27T23:41:18.133 回答