使用没有数据库或用户名的php密码保护文件夹/页面的最佳方法是什么

时间:2008-11-13 13:45:14

标签: php passwords password-protection

使用没有数据库或用户名但使用的php密码保护文件夹的最佳方法是什么。基本上我有一个页面,将列出组织的联系人,并需要密码保护该文件夹,而无需为每个用户负责。只需一个密码就可以经常更改并分发给组。我知道它不是很安全,但我想知道如何做到这一点。以最好的方式。

如果用户正确输入密码会暂时记住密码,那就太好了。


我正在做大卫·赫吉所建议的,除了没有饼干。它看起来似乎不安全,但它可能更好,密码保护不好,然后根本没有。

这是针对内部网站的,人们会有时间记住他们的登录名和密码,并且永远不会通过注册进程...除非它真的很容易,否则他们不会使用系统一点都不

我想看看这个问题的其他解决方案。

由于用户群不是非常精通技术的人,还有其他方法可以做到这一点。

5 个答案:

答案 0 :(得分:64)

您可以使用以下内容:

//access.php

<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';

session_start();
if (!isset($_SESSION['loggedIn'])) {
    $_SESSION['loggedIn'] = false;
}

if (isset($_POST['password'])) {
    if (sha1($_POST['password']) == $password) {
        $_SESSION['loggedIn'] = true;
    } else {
        die ('Incorrect password');
    }
} 

if (!$_SESSION['loggedIn']): ?>

<html><head><title>Login</title></head>
  <body>
    <p>You need to login</p>
    <form method="post">
      Password: <input type="password" name="password"> <br />
      <input type="submit" name="submit" value="Login">
    </form>
  </body>
</html>

<?php
exit();
endif;
?>

然后在您要保护的每个文件上,放在顶部:

<?php
require('access.php');
?>
secret text

这不是一个非常好的解决方案,但它可能会做你想要的

修改

您可以添加logout.php页面,如:

<?php
    session_start();
    $_SESSION['loggedIn'] = false;
?>
You have logged out   

答案 1 :(得分:8)

答案 2 :(得分:4)

如果你想避免使用cookies,会话而不想使用.htaccess文件,你也可以使用PHP进行http身份验证:

http://www.php.net/manual/en/features.http-auth.php

您可以将密码硬编码到文件中并根据需要进行更改,或者将其包含在不在web_accessible目录中的文件中。

缺点是您无法格式化“登录”屏幕 - 它将是标准的http身份验证对话框

答案 3 :(得分:1)

我怀疑这是否算作最好的做法,但它会起作用。而且由于安全性对你来说似乎不是一个大问题,这种方式就像地狱一样不安全也可能不会打扰你。

有一个login.php页面,它接受一个密码,然后在登录详细信息正确的情况下设置一个cookie。然后,每个php文件都可以检查cookie是否存在,以确定用户是否“登录”,并相应地显示信息。

login.php
...
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
    setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
    setcookie('loggedin', 'false', time() - 1200, '/url/');
    // display a login form here
}
etc

然后每个“受保护”页面都会检查此cookie:

if(isset($_COOKIE['loggedin'])) {
    if($_COOKIE['loggedin'] == 'true') {
        $showHidden = true;
    } else {
        $showHidden = false;
    }
} else {
    $showHidden = false;
}

我确信你会得到(高度不安全)的想法......

答案 4 :(得分:-2)

好吧,因为你知道它开始时是不安全的,你可以将密码存储在Web服务器上的某个文本文件中。当有人访问该页面时,您可以显示要求输入密码的表单。如果密码与文本文件中的密码匹配,则重新加载页面并显示信息。使用文本文件将允许您更改密码,而无需在要更改密码时修改他们正在访问的页面。除非你使用SSL,否则你仍然会在任何地方发送纯文本。如果您需要一些代码,请告诉我。