Уроки Разработка системы управления сайтом - Часть 2
20 октября 2013
1382
система управления сайтом, разработка системы управления сайтом

Разработка системы управления сайтом - Часть 2

Сложность Рубрика PHP
Демонстрация » Скачать »

Продолжаем изучать разработку системы управления сайтом и следующим нашим шагом будет редактирование администраторов. Так как в последующих этапах нам нужно будет, создавать дополнительные категории администраторов и не просто создавать, а еще и как то их разделять, допустим на категории администраторы и менеджеры. Администраторам будут доступны все возможности управления системой, а менеджерам только базовые.

 

Ну это я немного отклонился от темы, так как данный этап будет рассмотрен в следующем уроке, а сейчас мы возьмем основу, а именно - добавление, редактирование и удаление администраторов. Для начала нам нужно определится с одним, что вся основа будет разбита по частям, а именно - функциональную, корневую и оформление. Перед тем как приступим к рассмотрению данного материала, давайте вспомним прошлый урок разработки системы управления сайтом.

Там с Вами, мы смогли создать вход и подготовить базу для пользователей. Успешно прошли авторизацию и выход. 

 

Структура скрипта.

 

  1. bd.php - подключение к базе данных
  2. index.php - форма входа
  3. functions.php - функциональный файл
  4. profile.php - главная страница администратора
  5. users.php - редактирование администраторов
  6. add_user.php - добавление администратора
  7. add_user_insert.php - обработчик добавления администратора
  8. edit_user.php - редактирование администратора
  9. edit_user_update - обработчик редактирования администратора
  10. del_user.php - удаление администратора
  11. style.css - файл стилей
  12. menu.php - подключение меню
  13. template/up.php - подключение шапки
  14. template/down.php - подключение футера
  15. error.php - подключение файла ошибок
  16. logout.php - подключение файла выхода

 

Подключение функционала.

 

Теперь давайте определимся кое с чем. У нас есть файл functions.php в нем для удобства мы будем хранить все функции скриптов, тем самым логически это будет правильней и код будет по валидности грамотным, а главное понятным.

 

Как это будет все работать?

 

Очень просто, к каждому файлу мы подключаем файл functions.php и в нужном месте вызываем необходимую функцию.

 

Пример 1 и образец, каждого файла.

 

<?
@session_start();
// запускаем сессию
include ("bd.php");
// подключаемся к базе данных
include ("functions.php");
// подключаем функциональный файл
if(session_is_registered("register"))
{
// проверка на авторизацию администратора
?>
<?
include("template/up.php");
// подключение шапки
?>
<?
add_user();
/*
Подключение функции. Заметьте!!!
Что функция подключается без function!!!
И в конце обязательно ставится точка с запятой!!!
*/
?>
<?
include("template/down.php");
// подключение футера
?>
<?
}
else
{
include("error.php");
// Вывод ошибки и переброс на index.php
}
?>

 

Мы не будем рассматривать весь код, если Вам что то не ясно и не совсем понятно, к примеру какой дамп базы данных нужно, то вернитесь к предыдущему уроку разработка системы управления сайтом и посмотрите недостающие моменты реализации данного скрипта.

 

ШАГ ПЕРВЫЙ. Файл functions.php.

 

И так подключаем данный файл, ко всем файлам, а вернее как на примере 1.

Данный функционал полностью откомментирован, поэтому я не думаю, что стоит его подробно объяснять. Если что то не понятно - спрашивайте!

 

<?
//Авторизация
function profile($login,$pass)
{
// Создаем функцию с переменными
// $login и $пароль
$sql=mysql_query("SELECT * FROM admin_profile
WHERE login='$login' AND pass=md5('$pass')");
// Выбираем все поля из таблицы admin_profile
// где login равно $login и pass равен по md5
// $pass
$res=mysql_num_rows($sql);
return $res;
}


//Главная страница администратора
function myprofille($register)
{
include("menu.php");
// подключение меню

echo"<div class='profile'>
<span class='span_1'>Ваш логин: </span>
<span>$register</span></div>";
// Вывод логина
}


//Редактирование администраторов
function users()
{
include("menu.php");
// подключение меню
?>
<div class='profile'>
<a href='add_user.php'>Добавить нового администратора</a>
<br><br>
<table cellspacing='0' cellpadding='0' class='table'>
<tr>
<td width='30' class='td'>
ID
</td>
<td width='150' class='td'>
Логин
</td>
<td width='100' class='td'>
Удаление
</td>
<td width='100' class='td'>
Редактирование
</td>
</tr>
</table>
<?
{
$users = $_SESSION['register'];
// проверка на авторизованность администратора
$sql = mysql_query("select id, login from admin_profile
where id!='$users'");
// выбираем все поля из таблицы с администраторами, где
// id равен авторизованному администратору
@$res = mysql_fetch_array($sql);
do
{
echo"
<table>
<tr>
<td width='30'>";
echo $res['id'];
echo"</td>
<td width='150'>";
echo $res['login'];
echo"</td>
<td width='100'>";
$col = mysql_query("select count(*) from admin_profile");
@$delete = mysql_fetch_array($col);
// Создаем условие по подсчету id всех администраторов и
// если остается последний id, то запрещаем его удаление!
if($delete[0]>1)
{
echo"<a href='del_user.php?id=$res[id]'>Удалить</a>";
// если все правильно! TRUE
}
else
{
echo"Запрещено!";
// если все не правильно! FALSE
}
echo"</td></td>
<td width='100'>";
echo"<a href='edit_user.php?id=$res[id]'>Редактировать</a>";
// Ссылка на редактирование
echo"</td>
</tr>
<table>";
}
while (@$res = mysql_fetch_array($sql));
}
echo"</div>";
}


//Добавление администратора
function add_user()
{
include("menu.php");
// подключение меню
?>
<!--Простая форма для добавления нового администратора
с полями логин, пароль и проверка пароля. Все данные передаются
в файл add_user_insert.php, который будет осуществлять вставку
каждого поля.-->
<form name="form" method="post" action="add_user_insert.php">
<table><tr><td>
<strong>Логин</strong><br>
<input class='inputlp' type="text" name="login" id="login">
<br><br>
<strong>Пароль</strong><br>
<input class='inputlp' type="password" name="pass" id="pass">
<br><br>
<strong>Повторите пароль</strong><br>
<input class='inputlp' type="password" name="pass2" id="pass2">
<br><br>
<input class='input_button' type="submit" id="submit"
value="Сохранить"> /
<a href='users.php'>Назад</a>
</td></tr></table>
</form>
<?
}


//Добавление администратора
function add_user_insert($login, $pass, $pass2)
{
include("template/up.php");
// подключаем шапку, нужны были стили
$PHPSESSID = session_id();
// проверка на авторизованность администратора
if (!empty($login) && !empty($pass) && !empty($pass2))
{
// Делаем проверку и обрезку полей
if (isset($_POST['login'])) {$login= $_POST['login'];}
if (isset($_POST['pass'])) {$pass= $_POST['pass'];}
if ($pass == $pass2)
// Если пароль и повторный пароль совпали, значит
// переходим к выборке всех полей и заносим их в таблицу
// с администраторами
{
$sql2 = mysql_query("select login from admin_profile");
//  выбираем поле логин из таблицы с администраторами
for($i=0; $row2=mysql_fetch_array($sql2); $i++)
{
// создаем цикл
$login2 = $row2["login"];
$a = strtolower($login2);
$b = strtolower($login);
// переводим буквы в нижний регистр
if ($a == $b) $pr = 1;
// создаем сравнение переменных логина
}
if (!isset($pr))
{
$pass = md5($pass);
// шифруем пароли по md5
$sql=mysql_query("insert into admin_profile (login,pass)
values ('$login','$pass')");
// Если все правильно заносим, нового администратора
// в таблицу, если нет выводим ошибочные сообщения
echo"<meta http-equiv=Refresh content='0;
URL=users.php?PHPSESSID=$PHPSESSID'>";
// делаем перезагрузку страницы, на станицу всех
// администраторов
}
else echo"<p class='error'>Пользователь с данным логином
уже существует!</p><br>";
}
else echo"<p class='error'>Пароли не совпадают!</p><br>";
}
else echo"<p class='error'>Необходимо заполнить все поля!
</p><br>";
add_user();
}


//Редактирование администратора
function edit_user($id)
{
include("menu.php");
// подключение меню
if (isset ($_GET['id'])) {$id=$_GET['id']; }
if (!isset($id)) {$id==1;}
// выводим строку по GET с уникальным идентификатором
$sql = mysql_query("select * from admin_profile where id='$id'");
// выбираем все поля из таблицы администраторов где id = $id
$res = mysql_fetch_array($sql);
// ниже создаем форму, которая будет иметь все поля при авторизации
// их можно будет изменить. Не забываем про скрытие id и его передачу
// файлу edit_user_update.php
?>

<form name='form' action='edit_user_update.php?id=<?=$id["id"]?>'
method='post'>
<table class='border_form'><tr><td>
<strong>Администратор</strong> - <?=$res["login"]?>
<br><br>
<strong>Логин</strong><br>
<input class='inputlp' type='text' name='login'
value='<?=$res["login"]?>'>
<br><br>
<strong>Пароль</strong><br>
<input class='inputlp' type='password' name='pass'>
<br><br>
<input name='id' type='hidden' value='<?=$res["id"]?>'>
<input class='input_button' type='submit' id='submit'
value='Сохранить'> /
<a href='users.php'>Назад</a>
</td></tr></table>
</form>
<?
}


//Редактирование администратора
function edit_user_update($id, $login, $pass)
{
if (isset($_POST['login'])) {$login = $_POST['login'];}
if (isset($_POST['pass'])) {$pass  =  $_POST['pass'];}
// проверка на существование полей
{
$PHPSESSID = session_id();
// проверка на авторизованность администратора
$pass=md5($pass);
// шифровка поля в md5
$sql = mysql_query("update admin_profile set
login='$login', pass='$pass' WHERE id='$id'");
// заносим все поля в таблицу с администраторами
// где id=$id
echo"<meta http-equiv=Refresh content='0;
URL=users.php?PHPSESSID=$PHPSESSID'>";
// делаем перезагрузку страницы, на станицу всех
// администраторов
}
}


//Удаление администратора
function del_user($id)
{
$PHPSESSID = session_id();
// проверка на авторизованность администратора
$sql = mysql_query("delete from admin_profile where id='$id'");
// Удаляем администратора с выбранным id
echo"<meta http-equiv=Refresh content='0;
URL=users.php?PHPSESSID=$PHPSESSID'>";
// делаем перезагрузку страницы, на станицу всех
// администраторов
}
?>

 

ШАГ ВТОРОЙ. Стили CSS.

 

Некоторые стили, которых не было в первом этапе.

 

 

.table
{
border-top: 1px solid blue;
border-right: 1px solid blue;
border-bottom: 1px solid blue;
}

.td
{
border-left: 1px solid blue;
padding: 5px;
background: #1cdcff;
}

.inputlp
{
border: 1px solid black;
}

 

Удачи Вам в реализации, до следующего урока по разработке системы управления сайтом!





Роман Краутер