我已经构建了一个名为Login的类,其中包含一个或者不记录它的构造......我还有一个名为isAuthenticated的静态函数,用于检查用户是否已登录。我一直在搞乱静态功能等,但似乎无法得到我想要的东西。
理想情况下,它是我可以轻松去的地方
<?php if (Login::isAuthenticated()) { ?>
<a href="/sign-out/">Sign Out</a>
<?php } ?>
到目前为止,这是我的课程......完成了我的尝试......
class Login
{
private static $_auth;
public function __construct($username, $rawPassword) {
global $db;
require('edit/users/config.php');
$hashedPassword = sha1(SALT . $_POST['password']);
$query = 'SELECT firstname FROM users WHERE user = "' . $db->cleanString($username) . '" AND pass = "' . $db->cleanString($hashedPassword) . '" LIMIT 1';
$login = $db->query($query);
if ($login) {
$_SESSION['username'] = $username;
self::$_auth = true;
header('Location: ' . CONFIG_DIR_BASE);
} else {
ErrorHandler::addErrorToStack('Your username and/or password did not match one on our system. ');
}
}
public static function isAuthenticated() {
return self::$_auth;
}
}
非常感谢!
答案 0 :(得分:7)
由于HTTP是无状态的,因此您的类'静态变量($ _auth)将不会在页面加载之间“存活”,因此如果您尝试使变量保持不变,则需要将其存储为{{3 }}
但是,我强烈建议您不编写自己的身份验证类,除非您真的认真对待它。有许多优秀的PHP auth脚本可供选择,已经解决了所有Session variable。