2013-07-14 62 views
1

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

这里是我当前的代码:

<?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 
} 
?> 

我不知道从哪里开始,所以我会很感激一些帮助。提前致谢!

回答

0

您的要求是一个非常古典的做法。你可以在这里阅读教程:http://www.phpnerds.com/article/using-cookies-in-php/2

注:

  • 比较哈希散列
  • 从来没有在一个cookie保存明文密码
  • 更安全:不保存散列密码的饼干像教程。 只需存储会话散列代码并使用数据库表会话将 映射到用户的会话。

希望它有帮助。

+0

“永远不要在[a] cookie中保存[纯文本密码]” - 在这种情况下,绝对不要将任何*密码存储在cookie中。散列与否。哈希在这里没有帮助;即使你存储了一个散列密码,它也和真实密码一样好。这就是把密码放在cookie中的关键所在。 – cHao

+0

感谢您的纠正。该说明是为了phpnerds的教程而添加的。我还建议一个更安全的解决方案。 –

+0

感谢您的教程,正是我需要的。至于这是一个不太安全的解决方案 - 我知道。但它应该适用于我的使用。 –

2

请让自己的PHP这个东西一看:

而且你的代码永远不会跳进入密码保护的内容块。

$password = "password"; 

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

比方说,你在正确的密码(“密码”)给了 - 所以,如果要问:

if 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 equals password. 

您使用散列,但这里没有必要的。

+0

至于会话超时,保持会议一周左右通常是一个非常糟糕的主意。 – cHao

+0

我已经看到了session_start()等,但不知道如何将它集成到我的代码上面。另外,我刚刚使用“密码”作为一个简单的例子,我的真实密码与sha1进行散列处理。 –

+0

只需将session_start()放在php文件头部的顶部,并设置一个名为LoggedIn的$ _SESSION条目,然后添加到if-line isset($ _ SESSION [“loggedIn”])&& $ _SESSION ['loggedIn ']' –