PHP密码保护页面cookie

PHP密码保护页面cookie,php,password-protection,Php,Password Protection,我有一个非常简单的PHP密码保护页面。我想添加一个会话cookie,以便浏览器保持日志记录(比如7天) 这是我目前的代码: <?php $password = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"; if (sha1($_POST['password']) == $password) { ?> Password Protected Content <?php } else { ?> <html>

我有一个非常简单的PHP密码保护页面。我想添加一个会话cookie,以便浏览器保持日志记录(比如7天)

这是我目前的代码:

<?php

$password = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8";

if (sha1($_POST['password']) == $password) {
?>

Password Protected Content

<?php

}

else {

?>
<html>
    <head>
        <title>Login Page</title>
    </head>
    <body>
        <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        Password: <input type="password" name="password" class="formpart" />
        <input type="submit" name="Submit" value="Login" class="login-button" />
        </form>
    </body>
</html>
<?php
}
?>

密码保护内容
登录页面

请看一下PHP的以下内容:

  • session\u start()
    • 接下来,请看这里:
  • $\u会话[]-数组
此外,您的代码永远不会跳入受密码保护的内容块

$password = "password";

if (sha1($_POST['password']) == $password) {
假设您输入了正确的密码(“密码”),那么if会询问:

if 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 equals password.

您正在使用哈希,但这里不需要

您的要求是非常经典的做法。您可以在此处阅读教程:

注:

  • 比较散列与散列
  • 永远不要将纯文本密码保存在cookie中
  • 更安全:不要像教程那样将散列密码保存在cookie中。 只需存储一个会话哈希代码并使用DB表会话映射即可 它可以与用户的会话进行交互

希望能有所帮助。

至于会话超时,让会话闲置一周通常是一个非常糟糕的主意。我已经研究了session_start()之类的内容,但不知道如何将其集成到上面的代码中。另外,我在这里使用了“password”作为一个简单的例子,我的真实密码是用sha1散列的。只需将session_start()放在php文件头的顶部,并设置一个名为LoggedIn的$_session-entry,然后添加到if行
isset($_session[“LoggedIn”])&&$_session['LoggedIn P.S.
P.S.:肯定不是最好的解决方案!赵是对的,跟着这个!“永远不要在[cookie]中保存[the]纯文本密码”——在这种情况下,永远不要在cookie中存储任何密码。不管是不是散列。散列在这方面没有帮助;即使您存储了散列密码,它也会与真实密码authenticationwise一样好。这就是将密码放在cookie中的首要意义。感谢您的更正。该注释是为了phpnerds的教程而添加的。我还建议了一个更安全的解决方案。谢谢你的教程,这正是我所需要的。至于这不是一个安全的解决方案,我知道。如果你的意思是:“只有我,只有我自己才能访问这个应用程序”,那么我想你是对的,但我会出于安全考虑,选择不在cookie中存储密码。这是个坏习惯。记住,旧习难改。