php记住会话

时间:2012-10-06 15:19:41

标签: php session variables superglobals

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

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

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 个答案:

答案 0 :(得分:1)

用户登录后,您只需将用户ID存储在$ _SESSION变量中,如下所示:

的login.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;

答案 1 :(得分:0)

我认为你方式过度思考这个问题。

  • 密码永远不会存储超过需要的时间(即初始授权请求,因此您的$password不是必需的,而不是它的定义。)
  • 您可以随处访问$_SESSION。如果你想将它包装在一个类中,这取决于你。
  • 身份验证检查就像isset($_SESSION['username'])一样简单(假设您在登录时设置了该会话值。

答案 2 :(得分:0)

PHP中的$_SESSION变量称为superglobal。这意味着可以从整个应用程序的任何范围访问此变量。只需使用$_SESSION

$_GET$_POST$_REQUEST$_SERVER$_ENV相同。我确定我在某个地方错过了一个人:D

答案 3 :(得分:0)

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

$_SESSION['userid'] = 1234;

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

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

没有必要在会话中存储对象来完成此任务。