PHP - 我的登录系统出现问题

时间:2014-01-14 22:20:46

标签: php

在我解释这个时,请耐心等待。所以我有我的login.php,当你登录并由login_functions.inc.php处理时,它会将用户重定向到一个新页面。我在登录之前有我的index.php这是我的主页。我有我的loggedin.inc.php,它显示登录时的导航和标题信息,并允许你浏览你无法访问的页面你退出了我有我的loggedout.inc.php,它显示了您未登录时可访问的页面的登录表单。

问题是,当您登录时,我希望loginin.inc.php显示我网站上的所有页面,包括那些在您注销时也显示loggedout.inc.php文件的页面。 loggedin.inc.php和loggedout.inc.php本质上是两个不同的header.inc.php文件。它们显示取决于您是否已登录或退出网站。

现在我已经有了这个工作,但在它破坏的路上,我无法弄清楚如何解决它。以下是创建此过程的代码片段。我注销时唯一设置的页面是主页。使用loggedin.inc.php头文件和loggedout.inc.php头文件应该可以查看,具体取决于您是否已登录并注销。我正在使用会话来跟踪数据库中的user_id以获取您的用户名信息。

的index.php

<?php
if (isset($_SESSION['user_id'])) {

$page_title = 'You can now browse around the entire website!';
include ('loggedin.inc.php');

} else {

$page_title = 'Please log in to view the rest of the website!';
include ('loggedout.inc.php');

}
?>

此代码之前有效,但显然它现在无法正常工作。当您登录时,您的user_id将设置在可从数据库中删除的会话中,并随身携带您访问网站上的每个页面。除了这个,我的登录系统的每个其他进程都有效。

当我登录并浏览我的网站时,它继续使用loggedin.inc.php文件为所有页面,除非我导航到index.php它显示loggedout.inc.php文件,我甚至可以手动输入在登录页面的URL中,将再次显示loggedin.inc.php文件。这不是会话变量是否设置的问题,因为它肯定会保持设置。

1 个答案:

答案 0 :(得分:0)

您仍需要包含session_start();会话是否存在(或是否已设置),因为您在$_SESSION

中加入了if (isset($_SESSION['user_id']))这个词

因此,您的代码类似于:

<?php
session_start();
if (isset($_SESSION['user_id'])) {

$page_title = 'You can now browse around the entire website!';
include ('loggedin.inc.php');

} else {

$page_title = 'Please log in to view the rest of the website!';
include ('loggedout.inc.php');

}
?>