是否可以在没有数据库访问的情况下密码保护页面?我可能只有几页。但我应该能够更改密码并保存会话等。我想要一个安全的方式,因为它是生产网站!
如何在md5:
之后存储在config.php中 <?php
username="admin";
password="1a1dc91c907325c69271ddf0c944bc72";
?>
如果这是一个好主意,有没有办法限制只从一个脚本访问此PHP 叫check.php还是什么?
答案 0 :(得分:2)
当然,为什么不呢?您可以在不可访问的目录中使用平面文件(受.htaccess或www根保护),并将其用作数据库。
这是一个简单的登录类我已经掀起了:
class SimpleLogin {
private $users;
private $db = './pass.txt';
function __construct() {
$data = file_get_contents($this->db);
if (!$data) {
die('Can\'t open db');
} else {
$this->users = unserialize($data);
}
}
function save() {
if (file_put_contents($this->db, serialize($this->users)) === false)
die('Couldn\'t save data');
}
function authenticate($user, $password) {
return $this->users[$user] == $this->hash($password);
}
function addUser($user, $password) {
$this->users[$user] = $this->hash($password);
$this->save();
}
function removeUser($user) {
unset($this->users[$user]);
$this->save();
}
function userExists($user) {
return array_key_exists($user, $this->users);
}
function userList() {
return array_keys($this->users);
}
// you can change the hash function and salt here
function hash($password) {
$salt = 'jafo2ijr02jfsau02!)U(jf';
return sha1($password . $salt);
}
}
注意:如果要在实际服务器中使用它,您真的应该关闭错误报告。这可以通过致电error_reporting()或在file_get_contents
和file_put_contents
前面添加“@”来完成(即:因此会转为@file_get_contents
)
答案 1 :(得分:2)
您应该使用.htaccess
来做到这一点。您还可以.htaccess
保护您的敏感php文件,例如:
Order Allow,Deny
Deny from All
答案 2 :(得分:1)
您可以使用HTTP authentication with PHP。 PHP-docu中有很好的例子。
答案 3 :(得分:0)
实际上数据库与密码保护无关 您可以直接在脚本中编写登录名和密码,也可以保存在数据库中。
无需限制访问您的php文件。通过HTTP调用,它将只是空白页,仅此而已。
所以,以这种方式存储它是可以的 对于甚至不使用数据库的网站来说已经足够了。