Панель управления или просто админка
Пришло время сделать святая святых – админку сайта. Возможности ее будут такими: добавление, удаление, редактирование страниц и все. Эта версия CMS, как я уже неоднократно говорил, будет типа сайта-визитки с минимумом функционала.
Начнем с авторизации. При входе в админку будут запрошены логин-пароль администратора:
- <div style="position:absolute;width:220px;height:150px;left:50%;top:50%;margin-left:-150px;margin-top:-100px;background:#777;color:#eee;border:solid 1px black;padding:10px;font-family:Tahoma,Arial,FreeSans,Garuda,Utkal,sans-serif;overflow:auto">
- <form method="post" action="index.php">
- Логин:<br>
- <input type="text" size="30" name="login"><br><br>
- Пароль:<br>
- <input type="password" name="pass" size="30"><br><br>
- <input type="submit" name="auth" value="Войти">
- </form>
- </div>
Форма входа будет выглядить вот так:
Обработчик формы будет работать по такому принципу: если авторизация прошла успешно попадаем в админку, если нет выводим сообщение об ошибке. Также необходимо предусмотреть выход из админки, т. е. после работы в админке нажимаем кнопку выход, авторизацию сбрасываем и вновь показываем форму ввода логин-пароля.
Теперь содержимое файла /admin/index.php будет таким:
- <?
- include $_SERVER['DOCUMENT_ROOT']."/config.php"; //включаем файл настроек
- include $_SERVER['DOCUMENT_ROOT']."/inc/db_connect.php"; //подключение к серверу MySQL и выбор БД
- $user_status = 0; //обнуляем статус пользователя, 0 - пользователь не авторизован
- //Читаем куки и смотрим, есть ли в базе пользователь с таким паролем, и проверяем были ли нажаты кнопки вход и выход
- if (isset($_COOKIE['Login']) & isset($_COOKIE['Password']) & !$_POST['auth'] & !$_GET['exit']){
- //запрос
- $sql = mysql_query("SELECT * FROM ".$db_prefix."_users WHERE login = '".$_COOKIE['Login']."' && password = '".$_COOKIE['Password']."'");
- //если есть совпадение, авторизуем пользователя
- if (mysql_num_rows($sql) > 0){
- //собираем все данные о пользователе в массив
- $userinfo = mysql_fetch_array($sql);
- //устанавливаем куки
- SetCookie("Login",$userinfo['login']);
- SetCookie("Password",$userinfo['password']);
- $user_status = 1; //статус пользователя, 1 = админ авторизован
- }
- }
- //если была нажата кнопка из формы авторизации
- if ($_POST['auth']){
- //ищем совпадение пары логин-пароль в таблице
- $auth = mysql_query ("SELECT * FROM ".$db_prefix."_users WHERE login = '".$_POST['login']."' && password = '".$_POST ['pass']."'");
- //если есть совпадение, авторизуем пользователя
- if(mysql_num_rows($auth) > 0){
- //собираем все данные о пользователе в массив
- $userinfo = mysql_fetch_array($auth);
- //устанавливаем куки
- SetCookie("Login",$_POST['login']);
- SetCookie("Password",$_POST['pass']);
- $user_status = 1; //статус пользователя, 1 - авторизован админ
- }
- //если если пара логин-пароль не совпала, выводим сообщение об ошибке
- else{
- echo "Такой пользователь не существует или пароль не верный.";
- }
- }
- //если нажата кнопка выход
- if ($_GET['exit']){
- //удаляем куки
- SetCookie("Login",$_POST['login']);
- SetCookie("Password",$_POST['pass']);
- }
- //если статус пользователя не изменился, выводим форму авторизации
- if ($user_status == 0){
- ?>
- <!--здесь форма входа, код писал выше-->
- <?
- }
- //если пользователь авторизовался, показываем ему админку
- if ($user_status == 1){
- ?>
- <!--здесь показываем админку-->
- <?
- }
- ?>
На 52-й строчке вставляем содержимое админки, которое должно быть видно после авторизации. Тут все ограничивается вашей фантазией
Для начала покажем имя пользователя, который авторизовался и кнопку выхода.
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- <html>
- <head>
- <title>Панель управления сайтом</title>
- <meta http-equiv="Content-Language" content="ru">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <link rel="shortcut icon" href="/favicon.ico">
- <link rel="stylesheet" type="text/css" href="/admin/style.css">
- </head>
- <body>
- <div class="content-top">
- <p>Вы зашли как <? echo $userinfo['login']; ?>. <a href="?exit=ok">Выйти</a></p>
- </div>
Основной каркас у нас готов. Осталось прикрутить функциональную часть, а именно: добавление, изменение и удаление страниц.
