Возможно ли защитить паролем страницу без доступа к db? У меня может быть только несколько страниц. Но я должен иметь возможность менять пароль, а также сохранять сеансы и т. Д. И я хочу, чтобы он был безопасным способом, как для производственного сайта!
Как его хранить в config.php после md5:
<?php username="admin"; password="1a1dc91c907325c69271ddf0c944bc72"; ?>
Если это хорошая идея, существует ли способ ограничить доступ к этому php только из одного скрипта, называемого check.php или чего-то еще?
Конечно, почему бы и нет? Вы можете использовать плоские файлы в недоступном каталоге (защищенном .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); } }
не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_put_contents
и file_put_contents
(то есть: так оно превращается в @file_get_contents
)
Пример использования : http://left4churr.com/login/
Для этого вы должны использовать .htaccess
. Вы также можете защитить .htaccess
свои разумные php-файлы, с чем-то вроде:
Order Allow,Deny Deny from All
Вы можете использовать HTTP-аутентификацию с PHP . Очень хорошие примеры представлены в PHP-документе.
На самом деле база данных не имеет никакого отношения к защите паролем.
вы можете писать логин и пароль непосредственно в своем скрипте, а также хранить в базе данных.
Нет необходимости ограничивать доступ к вашему php-файлу. Вызывается через HTTP, это будет просто пустая страница и не более того.
Итак, все в порядке, чтобы сохранить его таким образом.
Достаточно для сайта, который даже не использует базу данных.