使用没有数据库或用户名但使用的php密码保护文件夹的最佳方法是什么。基本上我有一个页面,将列出组织的联系人,并需要密码保护该文件夹,而无需为每个用户负责。只需一个密码就可以经常更改并分发给组。我知道它不是很安全,但我想知道如何做到这一点。以最好的方式。
如果用户正确输入密码会暂时记住密码,那就太好了。
我正在做大卫·赫吉所建议的,除了没有饼干。它看起来似乎不安全,但它可能更好,密码保护不好,然后根本没有。
这是针对内部网站的,人们会有时间记住他们的登录名和密码,并且永远不会通过注册进程...除非它真的很容易,否则他们不会使用系统一点都不
我想看看这个问题的其他解决方案。
由于用户群不是非常精通技术的人,还有其他方法可以做到这一点。
答案 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)
假设您使用的是Apache:
答案 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,否则你仍然会在任何地方发送纯文本。如果您需要一些代码,请告诉我。