0

请大家原谅我对这个主题缺乏经验。

我已经创建了一个基本的 php 登录系统,并试图让人们安全地访问某些页面。

我的问题是我只能添加您在下面看到的登录页面。

if ($login->isUserLoggedIn() == true) {
    include("views/logged_in.php");

如何添加更多页面以保护视图。假设我已经将它们链接到logged_in 文件。当我将它们上传到服务器时,我不断收到 403。路径都是正确的。

<?php


if (version_compare(PHP_VERSION, '5.3.7', '<')) {
    exit("Sorry, Simple PHP Login does not run on a PHP version smaller than 5.3.7 !");
} else if (version_compare(PHP_VERSION, '5.5.0', '<')) {

  require_once("libraries/password_compatibility_library.php");
}


require_once("config/db.php");


require_once("classes/Login.php");


$login = new Login();


if ($login->isUserLoggedIn() == true) {


    include("views/logged_in.php");


} else {

    include("views/not_logged_in.php");
}
4

2 回答 2

0

您可能已经使用 superglobar $_session 应用控制会话。请检查此 $_SESSION si,如 $_GET 或 $_POST 变量。

http://us3.php.net/manual/en/function.session-start.php

于 2013-11-08T22:34:14.043 回答
0

您所展示的问题在于,您似乎并未将页面定义为需要在任何地方登录。

您可能希望在每个页面的顶部附近(可能在全局包含中)有这样的东西,它将在发送任何其他标题之前执行:

if (page_requires_login() && $login->isUserLoggedIn() == false) {
    // send 403 header and exit or redirect or whatever it is you want to do with insecure requests
}

// continue page logic

当然,这里的问题是如何确定页面是否需要登录(在我的示例中通过函数调用page_requires_login来进行此确定)

有许多方法可以实现这一目标。您可以对需要登录的页面数组进行硬编码,并具有检查当前正在执行的页面是否在此数组中的功能。您可以从数据库中提取安全页面列表以进行比较等。在不了解您的应用程序的情况下,我们无法就在这方面可能最适合您的内容提供太多建议。

于 2013-11-08T22:38:40.307 回答