0

我试图阻止我的 spacebook 页面的用户在没有先登录的情况下导航到其他页面。我知道我应该使用会话变量。我知道我通过输入让用户记住了特定会话session_start();在页面顶部。如果浏览器记住客户端是否登录,是否需要一个新的类文件?会话是否需要存储在类对象中?如果用户在到达那里之前导航到授权访问的页面,我会将所需的 if/else 语句存储在单独的 php 文件中吗?

如果需要一个新课程,我认为它看起来像这样:

class Loggedin {
    private $isLoggedIn;

    public function Loggedin($username) {
        if (array_key_exists($username, $this->isLoggedIn) && ($this->isLoggedIn[$username] == $password))
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
}
4

4 回答 4

1

用户登录后,您可以简单地将用户 ID 存储在 $_SESSION 变量中,如下所示:

登录.php:

if (login_correct($userid, $password)) { 
   // Login successful
   $_SESSION['user_id'] = $userid; 
}

另一个 PHP 文件可能如下所示:

if (null !== $_SESSION['user_id']) { 
    // User ist logged in... 
} else { 
    // User is not logged in! 
}

您的 logout.php 可能如下所示:

$_SESSION['user_id] = null;
于 2012-10-06T15:25:39.283 回答
0

我觉得你太多了。

  • 密码的存储时间永远不会超过所需的时间(即初始授权请求,因此您$password不是必需的,无论如何都没有定义)。
  • 您可以访问$_SESSION任何地方。如果你想把它包装在一个类中,这取决于你。
  • 身份验证检查很简单isset($_SESSION['username'])(假设您在登录时设置了该会话值。
于 2012-10-06T15:24:38.197 回答
0

PHP 中的$_SESSION变量是他们所谓的超全局变量。这意味着可以从整个应用程序的任何范围访问此变量。只需使用$_SESSION.

$_GET, $_POST,$_REQUEST$_SERVER也是如此$_ENV。我确定我在某个地方错过了一个:D

于 2012-10-06T15:25:01.303 回答
0

记住用户可以很简单(登录成功后):

$_SESSION['userid'] = 1234;

另一个页面会像这样查询它:

if (isset($_SESSION['userid'])) {
    // user is logged in
}

无需在会话中存储对象即可完成此操作。

于 2012-10-06T15:25:28.247 回答