Автор: Unrecogn!seD
Представим такую ситуацию. После нескольких дней/недель/месяцев упорного кодинга Вы написали скрипт. Скрипт получился очень хорошим, да вот только одна беда - управлять данными можно только с помощью phpMyAdmin или других менеджеров баз данных (если скрипт написан на MySQL) или "ручным" редактированием файлов, что также сопряжено с определёнными проблемами - файл надо скачать, отредактировать, "залить" на хостинг... Гораздо проще, когда у скрипта есть администраторская панель (сокращённо "Админ-панель") с помощью которой можно управлять данными. Сегодня мы научимся основам написания админ-панели.
Первое, что нам надо сделать - это создать отдельную подпапку. Назовём её дефолтно - "admin". Наша админ-панель в будущем будет располагаться по адресу http://ваш_сайт.ru/п..._скрипт/admin/. Вообще, называть папку именно "admin" вовсе не обязательно, можно назвать её как угодно.
Второе, что нам надо сделать - это создать файл конфигурации админки. Для этого создаём в папке с дефолтным названием "admin" файл с не менее дефолтным именем - "config.php". Вписываем в него следующее содержимое:
Цитата:
<?php $adminlogin = 'admin'; $adminpassw = '12345'; ?>Значения переменных adminlogin и adminpassw заменяем логином и паролем - реквизитами доступа в будущую админку. В вышеуказанном примере логин - "admin", пароль - "12345".
Теперь создаём файл входа в админку. Создаём новый файл в папке admin под названием index.php, и заполняем его кодом следующего содержания:
Код:
<?php session_start(); if (!empty($_SESSION['admin'])) { if ($_SESSION['admin']) { ?> <html> <head> <title>Административная панель</title> <style type="text/css"> #wrap { width: 100%; height: 100%; } .loginbox1 { width: 300px; padding: 4px; border: 1px solid #777; background-color: #777; color: white; font-weight: bold; } .loginbox2 { width: 300px; padding: 4px; border: 1px solid #777; color: #777; } </style> </head> <body> <center> <table cellpadding="0" cellspacing="0" id="wrap"><tr><td align="center"> <table cellpadding="0" cellspacing="0"> <tr><td class="loginbox1" align="center">Вход выполнен</td></tr> <tr><td class="loginbox2" align="center"><a href="admin_main.php">Перейти к административной панели</a></td></tr> </table> </td></tr></table> </center> </body> </html> <? exit; } } $_SESSION['admin'] = false; include ('config.php'); function not_logged_in() { echo '<html> <head> <title>Административная панель</title> <style type="text/css"> #wrap { width: 100%; height: 100%; } #wraptd { padding: 20px; } .loginbox1 { width: 300px; padding: 4px; border: 1px solid #777; background-color: #777; color: white; font-weight: bold; } .loginbox2 { width: 300px; padding: 4px; border: 1px solid #777; color: #777; } .loginbox2 input { width: 200px; margin: 3px 0; border-color: #888; color: #777; } </style> </head> <body> <center> <table cellpadding="0" cellspacing="0" id="wrap"><tr><td align="center" id="wraptd"> <table cellpadding="0" cellspacing="0"> <tr><td class="loginbox1" align="center">Вход в административную панель</td></tr> <tr><td class="loginbox2" align="center"> <form action="index.php" method="post"> <input type="text" name="login" value="Логин"><br> <input type="text" name="password" value="Пароль"><br> <input type="submit" value="Войти"> </form> </td></tr> </table> </td></tr></table> </center> </body> </html>'; exit; } if(!$_POST) not_logged_in(); if(!$_POST['login']) not_logged_in(); if(!$_POST['password']) not_logged_in(); if($_POST['login'] != $adminlogin) not_logged_in(); if($_POST['password'] != $adminpassw) not_logged_in(); $_SESSION['admin'] = true; ?> <html> <head> <title>Административная панель</title> <style type="text/css"> #wrap { width: 100%; height: 100%; } .loginbox1 { width: 300px; padding: 4px; border: 1px solid #777; background-color: #777; color: white; font-weight: bold; } .loginbox2 { width: 300px; padding: 4px; border: 1px solid #777; color: #777; } </style> </head> <body> <center> <table cellpadding="0" cellspacing="0" id="wrap"><tr><td align="center"> <table cellpadding="0" cellspacing="0"> <tr><td class="loginbox1" align="center">Вход выполнен</td></tr> <tr><td class="loginbox2" align="center"><a href="admin_main.php">Перейти к административной панели</a></td></tr> </table> </td></tr></table> </center> </body> </html>Уфф... Большой код вышел Так-с, код надо немного разобрать. Для входа мы используем сессии. Переменные сессии сохраняются в файлах на сервере. Если введённые логин и пароль совпадают с логином и паролем, указанными в конфигурации, то задается значение true (правда) переменной $_SESSION['admin'] для обозначения администратора.
Теперь нужно написать скрипт выхода из админки. Скрипт проверяет, выполнен ли вход и, если вход выполнен, производится выход. Создаём файл admin_logout.php и впихиваем в него следующий код:
Код:
<?php session_start(); if(!$_SESSION['admin']) die ("Доступ закрыт"); session_destroy(); ?> <html> <head> <title>Административная панель</title> <style type="text/css"> #wrap { width: 100%; height: 100%; } .loginbox1 { width: 300px; padding: 4px; border: 1px solid #777; background-color: #777; color: white; font-weight: bold; } .loginbox2 { width: 300px; padding: 4px; border: 1px solid #777; color: #777; } </style> </head> <body> <center> <table cellpadding="0" cellspacing="0" id="wrap"><tr><td align="center"> <table cellpadding="0" cellspacing="0"> <tr><td class="loginbox1" align="center">Выход выполнен</td></tr> <tr><td class="loginbox2" align="center"><a href="../">Вернуться на главную страницу скрипта</a></td></tr> </table> </td></tr></table> </center> </body> </html>У нас уже есть возможность зайти в админку и выйти из неё, но самой админки то и нет Займёмся её созданием.
Для начала создаём файл admin_main.php, и начинаем его следующим кодом:
Цитата:
<?php session_start(); if(!$_SESSION['admin']) die ("Доступ закрыт"); ?>
А после этого уже пишем, что хотим. В этом файле предполагаются ссылки на все основные функции админки (их нужно "выносить" в отдельные файлы), а также ссылка на выход из админки (на файл logout.php).
Все файлы админки также начинаем с этой же конструкции. На всякий случай повотрю её:
Цитата:
<?php session_start(); if(!$_SESSION['admin']) die ("Доступ закрыт"); ?>И после неё уже как-нибудь организовываем управление данными.
Я рассказал Вам основы написания админ-панели, а её написание целиком и полностью ложиться на Ваши плечи. Я мог бы написать о том, как можно удалять, редактировать, добавлять данные с помощью админ-панели, но это уже выходит за рамки данной статьи.
Вообще, предложенные листинги входа и выхода можно использовать не только для организации админки, но также, например, для организации закрытого доступа к сайту (по логину и паролю) или к отдельным его материалам.