Написал вариант с сессией. Прошу покритиковать, указать на тонкие места.
Итак. Все страницы админки, включая главную index.php, начинаются с такой строчки:
В check.php проверяется суперглобальная переменная $key, которая истинна только в том случае, если логин-пароль введены и введены правильно. Вот код check.php:
PHP:
<?php
session_start ();
if ($_SESSION ['key'] == false)
header ('Location: auth.php');
else
print "<a href = 'close.php'>Закрыть панель администратора</a><br>\n";
?>
Если $key ложна, то происходит перенаправление на auth.php. Там форма ввода логина и пароля будет выводится, если логин-пароль введены неправильно, либо если это первый вход в админку. Как только логин-пароль введены верно, появляется соотвествующее сообщение и ссылка в главное меню админки. Вот код auth.php:
PHP:
<?php
session_start ();
function printFormEnter () {
print <<< END
<form method = "post"
action = "">
<input type = "text"
name = "loginInput"><br>
<input type = "password"
name = "passwordInput"><br>
<input type = "submit"
value = "Отправить"><br>
</form>
END;
}
foreach ($_POST as $index => $value) {
$$index = $value;
}
$login = "dee8dd43be7a62de96b9f30b9829ccf5";
$password = "e242f36f4f95f12966da8fa2efd59992";
if (!isset($loginInput) || !isset($passwordInput)) {
print "Для того, чтобы войти в панель администратора, введите логин и пароль.<br>\n";
printFormEnter ();
exit ();
}
if (md5($loginInput) === $login && md5($passwordInput) === $password) {
print "Вы вошли в систему. Перейдите в <a href = 'index.php'>главное меню</a>.<br>";
$_SESSION['key'] = true;
} else {
$_SESSION['key'] = false;
print "Вы ввели неверную пару логин-пароль.<br>";
printFormEnter ();
exit ();
}
?>
Если $key истинна при проверке в check.php, то выводится ссылка на файл close.php, который закрывает сессию. Вот код этого php-файла:
PHP:
<?php
session_start ();
session_destroy ();
print "Вы закрыли панель администратора. <br> <a href = 'auth.php'>Открыть снова панель администратора</a>.";
?>
Вот как-то так. Итого имеем три "обслуживающих" файла: auth.php, check.php и close.php и одну строчку с инклюдом в каждом файле админки.