密码保护页面没有数据库访问与PHP

时间:2010-08-04 05:13:30

标签: php database authentication password-protection

是否可以在没有数据库访问的情况下密码保护页面?我可能只有几页。但我应该能够更改密码并保存会话等。我想要一个安全的方式,因为它是生产网站!

如何在md5:

之后存储在config.php中
 <?php
 username="admin"; 
 password="1a1dc91c907325c69271ddf0c944bc72";
 ?>

如果这是一个好主意,有没有办法限制只从一个脚本访问此PHP 叫check.php还是什么?

4 个答案:

答案 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_contentsfile_put_contents前面添加“@”来完成(即:因此会转为@file_get_contents

使用示例http://left4churr.com/login/

答案 1 :(得分:2)

您应该使用.htaccess来做到这一点。您还可以.htaccess保护您的敏感php文件,例如:

Order Allow,Deny
Deny from All

答案 2 :(得分:1)

您可以使用HTTP authentication with PHP。 PHP-docu中有很好的例子。

答案 3 :(得分:0)

实际上数据库与密码保护无关 您可以直接在脚本中编写登录名和密码,也可以保存在数据库中。

无需限制访问您的php文件。通过HTTP调用,它将只是空白页,仅此而已。

所以,以这种方式存储它是可以的 对于甚至不使用数据库的网站来说已经足够了。