我试图阻止我的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;
}
}
}
答案 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
}
没有必要在会话中存储对象来完成此任务。