|
|
||||||||||||||
|
|
|
||||||||||||||
Программирование
Представим такую ситуацию. После нескольких дней/недель/месяцев упорного кодинга Вы написали скрипт. Скрипт получился очень хорошим, да вот только одна беда управлять данными можно только с помощью 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 ( «Доступ закрыт»);
?>
И после неё уже как-нибудь организовываем управление данными.
Я рассказал Вам основы написания админ-панели, а её написание целиком и полностью ложиться на Ваши плечи. Я мог бы написать о том, как можно удалять, редактировать, добавлять данные с помощью админ-панели, но это уже выходит за рамки данной статьи.
Вообще, предложенные листинги входа и выхода можно использовать не только для организации админки, но также, например, для организации закрытого доступа к сайту (по логину и паролю) или к отдельным его материалам.
12.11.2007
|
Copyright © 2005—2007 "Satellitov.net" & Crash |