Пишем свою CMS, часть 4

Панель управления или просто админка

Пришло время сделать святая святых – админку сайта. Возможности ее будут такими: добавление, удаление, редактирование страниц и все. Эта версия CMS, как я уже неоднократно говорил, будет типа сайта-визитки с минимумом функционала.

Начнем с авторизации. При входе в админку будут запрошены логин-пароль администратора:

Copy SourceCopy HTML

  1. <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">
  2. <form method="post" action="index.php">
  3. Логин:<br>
  4. <input type="text" size="30" name="login"><br><br>
  5. Пароль:<br>
  6. <input type="password" name="pass" size="30"><br><br>
  7. <input type="submit" name="auth" value="Войти">
  8. </form>
  9. </div>

Форма входа будет выглядить вот так:
Обработчик формы будет работать по такому принципу: если авторизация прошла успешно попадаем в админку, если нет выводим сообщение об ошибке. Также необходимо предусмотреть выход из админки, т. е. после работы в админке нажимаем кнопку выход, авторизацию сбрасываем и вновь показываем форму ввода логин-пароля.

Теперь содержимое файла /admin/index.php будет таким:

Copy SourceCopy HTML

  1. <?
  2. include $_SERVER['DOCUMENT_ROOT']."/config.php"; //включаем файл настроек
  3. include $_SERVER['DOCUMENT_ROOT']."/inc/db_connect.php"; //подключение к серверу MySQL и выбор БД
  4. $user_status = 0; //обнуляем статус пользователя, 0 - пользователь не авторизован
  5. //Читаем куки и смотрим, есть ли в базе пользователь с таким паролем, и проверяем были ли нажаты кнопки вход и выход
  6. if (isset($_COOKIE['Login']) & isset($_COOKIE['Password']) & !$_POST['auth'] & !$_GET['exit']){
  7. //запрос
  8. $sql = mysql_query("SELECT * FROM ".$db_prefix."_users WHERE login = '".$_COOKIE['Login']."' && password = '".$_COOKIE['Password']."'");
  9. //если есть совпадение, авторизуем пользователя
  10. if (mysql_num_rows($sql) > 0){
  11. //собираем все данные о пользователе в массив
  12. $userinfo = mysql_fetch_array($sql);
  13. //устанавливаем куки
  14. SetCookie("Login",$userinfo['login']);
  15. SetCookie("Password",$userinfo['password']);
  16. $user_status = 1; //статус пользователя, 1 = админ авторизован
  17. }
  18. }
  19. //если была нажата кнопка из формы авторизации
  20. if ($_POST['auth']){
  21. //ищем совпадение пары логин-пароль в таблице
  22. $auth = mysql_query ("SELECT * FROM ".$db_prefix."_users WHERE login = '".$_POST['login']."' && password = '".$_POST ['pass']."'");
  23. //если есть совпадение, авторизуем пользователя
  24. if(mysql_num_rows($auth) > 0){
  25. //собираем все данные о пользователе в массив
  26. $userinfo = mysql_fetch_array($auth);
  27. //устанавливаем куки
  28. SetCookie("Login",$_POST['login']);
  29. SetCookie("Password",$_POST['pass']);
  30. $user_status = 1; //статус пользователя, 1 - авторизован админ
  31. }
  32. //если если пара логин-пароль не совпала, выводим сообщение об ошибке
  33. else{
  34. echo "Такой пользователь не существует или пароль не верный.";
  35. }
  36. }
  37. //если нажата кнопка выход
  38. if ($_GET['exit']){
  39. //удаляем куки
  40. SetCookie("Login",$_POST['login']);
  41. SetCookie("Password",$_POST['pass']);
  42. }
  43. //если статус пользователя не изменился, выводим форму авторизации
  44. if ($user_status == 0){
  45. ?>
  46. <!--здесь форма входа, код писал выше-->
  47. <?
  48. }
  49. //если пользователь авторизовался, показываем ему админку
  50. if ($user_status == 1){
  51. ?>
  52. <!--здесь показываем админку-->
  53. <?
  54. }
  55. ?>

На 52-й строчке вставляем содержимое админки, которое должно быть видно после авторизации. Тут все ограничивается вашей фантазией :-) Для начала покажем имя пользователя, который авторизовался и кнопку выхода.

Copy SourceCopy HTML

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>Панель управления сайтом</title>
  5. <meta http-equiv="Content-Language" content="ru">
  6. <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  7. <link rel="shortcut icon" href="/favicon.ico">
  8. <link rel="stylesheet" type="text/css" href="/admin/style.css">
  9. </head>
  10. <body>
  11. <div class="content-top">
  12. <p>Вы зашли как <? echo $userinfo['login']; ?>. <a href="?exit=ok">Выйти</a></p>
  13. </div>

Основной каркас у нас готов. Осталось прикрутить функциональную часть, а именно: добавление, изменение и удаление страниц.

Post to Twitter Post to Facebook

Рубрика: Веб-разработка | Комментарии (9)

Решение проблем с Samba

После публикации статьи по установке и настройке Samba мне стали часто задавать вопросы почему у них ничего не работает. Часто встречались очень простые ошибки, например, лишние пробелы или отсутствие сети.

Предлагаю вам несколько тестов работоспособности Samba, выполнив которые вы поймете, что делаете не так. Читать далее

Post to Twitter Post to Facebook

Рубрика: Ubuntu, Софт | Добавить комментарий

Пишем свою CMS, часть 3

Установка CMS

Теперь напишем установщик. В моих планах (ну, когда-нибудь :) использование этой CMS-ки на всех своих новых проектах, поэтому с установщиком будет проще. Если вам это не нужно, можете смело пропустить этот этап, но с одним условием – все таблицы в БД и файл config.php придется создавать в ручную. Читать далее

Post to Twitter Post to Facebook

Рубрика: Веб-разработка | Комментарии (4)

USB-устройства в VirtualBox-е

Маленький совет для линуксоидов на случай если usb устройства не видно в VitualBox-е.

Во-первых, надо установить VirtualBox Extension Pack для поддержки юсб устройств. Скачать можно с сайта разработчика https://www.virtualbox.org/wiki/Downloads.

Во-вторых, необходимо добавить себя в группу vboxusers. Делается это командой:
sudo usermod -a -G username vboxusers
где username – ваше имя пользователя в системе.

И в-третьих, перезагружаемся. После чего все подключенные юсб устройства будут доступны в VirtualBox-е.

Post to Twitter Post to Facebook

Рубрика: Ubuntu, Софт | Метки: | Добавить комментарий

Фото на документы в пару кликов

В этой статье речь пойдет о плагине для Gimp-а «Фото на документы».

У каждого человек есть как минимум один документ – это паспорт. У многих есть еще парочка документов – студенческий, пропуск, водительское удостоверение, загранпаспотр и т. д. И в каждом документы есть фотография. Каждый раз при получениее или обмене документов нам приходится идти в фотосалон и заказывать фотографии.

Фотографию можно  сделать самому, достаточно всего лишь сфотографироваться и распечатать, подумают многие. Отчасти это правда, но есть свои нюансы. Для каждого документа свои требования к фотографии (размеры, количество). Это все можно сделать в любом графическом редакторе, только нужно знать все требования.

Александр Карабанов сделал замечательный плагин для редактора изображений Gimp, который позволяет в пару кликов создать и распечатать себе фотографии на любые документы. Сайт разработчика http://gimp-id-photo.ru

Фото с сайта http://gimp-id-photo.ru

Автор подробно описал на своем сайте все этапе работы с плагином, начиная от установки и заканчивая уроком по созданию фотографий. Я использую этот плагин для у себя в фотосалоне и очень доволен работой. На изготовление одного комплекта  фотографий уходит не более двух минут плюс печать на принтере.

Скачать можно с сайта автора http://gimp-id-photo.ru/download.html. Плагин постоянно обновляется и совершенствуется, поэтому вовремя его обновляйте.

Если плагин вам понравится, не зубудьте поблагодарить автора.

Post to Twitter Post to Facebook

Рубрика: Софт, Фотография | 1 комментарий