Продолжаем изучать разработку системы управления сайтом и следующим нашим шагом будет редактирование администраторов. Так как в последующих этапах нам нужно будет, создавать дополнительные категории администраторов и не просто создавать, а еще и как то их разделять, допустим на категории администраторы и менеджеры. Администраторам будут доступны все возможности управления системой, а менеджерам только базовые.
Ну это я немного отклонился от темы, так как данный этап будет рассмотрен в следующем уроке, а сейчас мы возьмем основу, а именно - добавление, редактирование и удаление администраторов. Для начала нам нужно определится с одним, что вся основа будет разбита по частям, а именно - функциональную, корневую и оформление. Перед тем как приступим к рассмотрению данного материала, давайте вспомним прошлый урок разработки системы управления сайтом.
Там с Вами, мы смогли создать вход и подготовить базу для пользователей. Успешно прошли авторизацию и выход.
Теперь давайте определимся кое с чем. У нас есть файл 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 } ?>
Мы не будем рассматривать весь код, если Вам что то не ясно и не совсем понятно, к примеру какой дамп базы данных нужно, то вернитесь к предыдущему уроку разработка системы управления сайтом и посмотрите недостающие моменты реализации данного скрипта.
И так подключаем данный файл, ко всем файлам, а вернее как на примере 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'>"; // делаем перезагрузку страницы, на станицу всех // администраторов } ?>
Некоторые стили, которых не было в первом этапе.
.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; }
Удачи Вам в реализации, до следующего урока по разработке системы управления сайтом!