在不使用db或用户名的情况下,使用php对文件夹/页面进行密码保护的最佳方法是什么

在不使用db或用户名的情况下,使用php对文件夹/页面进行密码保护的最佳方法是什么,php,passwords,password-protection,Php,Passwords,Password Protection,使用php对文件夹进行密码保护的最佳方法是什么?不使用数据库或用户名,而是使用。基本上,我有一个页面,将列出该组织的联系人,并需要密码保护该文件夹,而不必为每个用户的帐户。只有一个密码,每隔一段时间就会更改一次,并分发给组。我知道这不是很安全,但我想知道如何做到这一点。以最好的方式 如果用户正确输入密码后能记住一段时间就好了 我正在做大卫·赫吉建议的事情,除了没有饼干。它看起来确实像地狱一样不安全,但有一个糟糕的密码保护可能比没有更好 这是为内部网站,人们将有地狱般的时间记住他们的登录名和密码

使用php对文件夹进行密码保护的最佳方法是什么?不使用数据库或用户名,而是使用。基本上,我有一个页面,将列出该组织的联系人,并需要密码保护该文件夹,而不必为每个用户的帐户。只有一个密码,每隔一段时间就会更改一次,并分发给组。我知道这不是很安全,但我想知道如何做到这一点。以最好的方式

如果用户正确输入密码后能记住一段时间就好了


我正在做大卫·赫吉建议的事情,除了没有饼干。它看起来确实像地狱一样不安全,但有一个糟糕的密码保护可能比没有更好

这是为内部网站,人们将有地狱般的时间记住他们的登录名和密码,永远不会通过注册过程。。。除非真的很容易,否则他们根本不会使用这个系统

我想看看这个问题的其他解决办法


由于用户群由不太懂技术的人组成,还有什么其他方法可以做到这一点

假设您在Apache上:


既然您知道这是不安全的,那么您可以将密码存储在web服务器上某个位置的文本文件中。当有人访问该页面时,您可以显示一个请求密码的表单。如果密码与文本文件中的密码匹配,则重新加载页面并显示信息。使用文本文件将允许您更改密码,而无需在您想要更改密码时修改他们正在访问的页面。除非您使用SSL,否则您仍将到处发送明文。如果您需要一些代码,请告诉我。

我怀疑这是否算是做这件事的最佳方法,但它会起作用。既然安全性对你来说似乎不是什么大问题,那么这种方式就像地狱一样不安全的事实可能也不会困扰你

有一个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;
}

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

你可以使用这样的方法:

//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;
?>
//access.php
登录
你需要登录

密码:
然后在要保护的每个文件的顶部放置:

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

密文
这不是一个很好的解决方案,但它可能会满足您的需求

编辑

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

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

您已注销

如果您想避免cookie、会话,并且不想玩.htaccess文件,您也可以使用PHP单独进行http身份验证:

您可以将密码硬编码到文件中,并根据需要进行更改,或者从不在web\u可访问目录中的文件中包含密码


缺点是您无法设置“登录”屏幕的格式-这将是一个标准的http身份验证对话框

我想用php实现这一点。是的,我知道如何使用.htaccess+1来使用哈希算法进行预计算和存储。不过,SHA2或至少SHA1会更安全。我不知道OP关心多少安全。谢谢!正是我需要的!另外,它确实返回了一些不会影响任何内容的错误,因此我只是通过将
放在相应页面的顶部(在
之前)来关闭PHP错误。再次感谢!我尝试过使用这些错误,但每次都得到“不正确的密码”。我遗漏了什么吗?警告:此脚本无法保护同一目录中的图像和其他文件。如果文本文件不在公共目录中,这与http basic auth和大多数不同的php实现(没有SSL层)一样安全,因此我不会获得否决票。。。?