Создать админку для сайта

Админка за 10 минут

Здравствуйте, уважаемое Хабрасообщество!
Я занимаюсь разработкой веб-сайтов. Как правило, это решения под индивидуальные потребности заказчиков. Поэтому я не использую готовые CMS, а предпочитаю складывать кирпичики самостоятельно. Конечно и админскую часть приходиться писать самостоятельно, поскольку она должна выполнять те функции, которые нужны заказчику, но и ничего лишнего не должно быть. И если написать несколько методов для редактирования данных это пол беды, то приходилось ещё и верстать приятный и удобный интерфейс.
Долгое время я использовал Twitter Bootstrap, но он не мог удовлетворить все потребности. Приходилось верстать дополнительные кнопочки и писать скрипты. Но вот однажды, я познакомился с замечательным UI-фреймворком KendoUI от Telerik. Что из этого получилось под катом.
О самом фреймворке уже писалась статья на Хабре. Мы будем использовать библиотеку Web-контролов KendoUI Web. Чтобы понимать, что можно создавать с её помощью можно посетить страничку с демо. Для построения контролов можно использовать как хелперы для ASP.NET, JSP или PHP, так и javascript-виджеты. Последние распространяются по лицензии GPL v3 License, поэтому я использовал именно их. Скачать тот или иной пакет можно . На серверной стороне я использую ASP.NET MVC 4 с пакетом Microsoft ASP.NET Web API OData 4.0.0, уставить который можно с помощью команды PM> Install-Package Microsoft.AspNet.WebApi.OData
Для демонстрации создадим простой класс Article, и добавим ему три свойства разного типа
public class Article { public int ID { get; set; } public string Title { get; set; } public bool Hidden { get; set; } }
Далее создадим ApiController для работы с данными. В своем примере я использую Entity Framework, поэтому сразу указываю Scaffolding options

После этого я изменяю только действие GetArticles, так показано в примере ниже. Прежде всего теперь оно возвращает ODataResult. А в качестве параметра принимает ODataQueryOptions, это коллекция сериализованных параметров строки запроса. В самом действии мы получаем коллекцию и общее количество элементов в ней. А после применяем к ней входящие параметры. В результате мы возвращаем коллекцию после применение к ней параметров и общее количество, оно необходимо для пагинации.
public class ArticlesController : ApiController { private Storage db = new Storage(); // GET api/Articles public ODataResult<Article> GetArticles(ODataQueryOptions options) { var items = db.Articles; var count = items.Count(); var res = (IEnumerable<Article>)options.ApplyTo(items); return new ODataResult<Article>(res, null, count); } // GET api/Articles/5 public Article GetArticle(int id) { Article article = db.Articles.Find(id); if (article == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } return article; } // PUT api/Articles/5 public HttpResponseMessage PutArticle(int id, Article article) { if (ModelState.IsValid && id == article.ID) { db.Entry(article).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return Request.CreateResponse(HttpStatusCode.NotFound); } return Request.CreateResponse(HttpStatusCode.OK); } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } } // POST api/Articles public HttpResponseMessage PostArticle(Article article) { if (ModelState.IsValid) { db.Articles.Add(article); db.SaveChanges(); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, article); response.Headers.Location = new Uri(Url.Link(«DefaultApi», new { id = article.ID })); return response; } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } } // DELETE api/Articles/5 public HttpResponseMessage DeleteArticle(int id) { Article article = db.Articles.Find(id); if (article == null) { return Request.CreateResponse(HttpStatusCode.NotFound); } db.Articles.Remove(article); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return Request.CreateResponse(HttpStatusCode.NotFound); } return Request.CreateResponse(HttpStatusCode.OK, article); } }

Вот и все. Самое время переходить к клиентской части. Для начала подключим KendoUI и JQuery на страницу.
<link href=»~/Content/kendo/kendo.common.min.css» rel=»stylesheet» /> <link href=»~/Content/kendo/kendo.default.min.css» rel=»stylesheet» /> <script src=»//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js»></script> <script src=»~/Scripts/kendo/kendo.web.min.js»></script>
После этого установим и настроим виджет. Подробнее о настройках виджета можно прочитать .
<div id=»grid»></div> <script> $(document).ready(function () { $(«#grid»).kendoGrid({ dataSource: { pageSize: 3, serverSorting: true, serverFiltering: true, serverPaging: true, type: ‘odata’, transport: { read: { url: «/api/articles», dataType: «json», type: «GET» }, create: { url: «/api/articles», dataType: «json», type: «POST» }, update: { url: function (article) { return «/api/articles/» + article.ID }, dataType: «json», type: «PUT» }, destroy: { url: function (article) { return «/api/articles/» + article.ID }, dataType: «json», type: «DELETE» } }, schema: { data: function (data) { return data.Items; }, total: function (data) { return data.Count; }, model: { id: «ID», fields: { ID: { editable: false }, Title: { type: «string», editable: true, nullable: false, validation: { required: true } }, Hidden: { type: «boolean», editable: true } } } } }, height: 250, filterable: true, sortable: true, pageable: true, toolbar: , editable: «popup», columns: , title: » «, width: «210px» } ] }); }); </script>
Готово! Теперь можно запускать и проверять. Менее чем за 10 минут мы создали полноценный интерфейс для управления данными, с возможностью пагинации, сортировки и фильтрации. Удобный и приятный. Спасибо KendoUI и формату OData, а Вам за внимание.




Р.S. Кстати есть возможность локализации виджетов. Для этого необходимо подключить соответствующий скрипт из папки js/cultures, который поставляется в архиве с фреймворком.

Сделать админ панель admin panel для сайта пример

2018/07/02 Марат 8972 0 #HTML | #PHP | #ADMINKA | #PHP_BOOK |

Поддержи проект!!!

Сегодня займёмся админ панелью. Вчера решил сделать свою админку, вернее вход в админ панель, ну и про панель админа тоже поговорим! И естественно, что пошел посмотреть, что вообще пишут по поводу создания админ панель, как её сделать, где её скачать, как вообще она – админ панель функционирует!

И в очередной раз убедился, что бывают такие темы, что ничего внятного не написано, а если написано, то так коряво и непонятно, что просто нет никаких сил, чтобы это прочитать и тем более понять!

Наша миссия, исправлять такие вещи!

  1. Что такое админка сайта
  2. Список необходимых условий для создания админки
  3. Моя админ панель данного сайта
  4. Видео — как работает админка
  5. Список с примерами простых админ панелей для сайта!
  6. Система входа в админку старый вариант -> моя первая админка
  7. Система входа DW Admin v1.1. описание ->
  8. Как сделать роль администратора для сайта php -> вопрос из поисковика
  9. Как закачать скрипт админки на сайт

    Что такое админка сайта

    Для того, чтобы сразу было понятно, что такое админка -> вот вам скриншот, что я вижу заходя на сайт? а вы этого не увидите:

    Что мы можем понять из выше приведенного скрина!? Что в админку можно войти, что в ней, как минимум можно удалить страницу, и как минимум отредактировать её же -> есть видео на тему аминка сайта

    Панель администратора сайта

    Что такое панель администрирования сайта — это место, которое доступно только админу, для редактирования данных сайта. Почему нет внятного, простого ответа на то, где взять и скачать, и начать пользоваться панелью админки!?
    Ответ очень простой!

    Система хранения данных везде отличается, и вообще! Прежде чем что- отредактировать в админ панели… эти данные нужно сохранить!

    Как организовать панель администрирования сайта в админке.

    Вы должны понимать, что с каждым движком, уже идет вход в админку и сама панель управления и все, что здесь было описано про вход — это, как в принципе должен работать вход в адин панель!

    После того, как вы благополучно создали вход и можете протестировать вход в админку — вам нужно будет

    Поместить тот код, что располагается на тестовой странице на все страницы, которые вы хотите администрировать!

    И далее… про панель… и администрирование возникает целая куча развилок…

    Как будут храниться ваши данные — файл или база данных.

    Какой сайт вы собираетесь делать — личный сайт — или же будут пользователи, модераторы. Эти роли все нужно продумывать и все прописать!

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

    Список необходимых условий для создания админки

    Для того, чтобы ваша админ панель, панель администратора, называйте как хотите, существовала — нужно выполнить несколько условий!

    Сессии.
    Для того, чтобы попасть в панель админа вам нужна : система входа в админку старый вариант(см. новый):
    1. Страница входа — index.php. Пример.
    2. Страница выхода — logout.php . Пример.
    3. Тестовая страница для иллюстрации работы входа в админку… Пример. Вставить код из тестовой страницы в каждую страницу, которая касается администратора.

    Моя админ панель данного сайта

    Хочу показать собственную панель администрирования сайтом и видеоэкскурсия по моей админке в Следующем пункте.
    Все, что вы видите сделал не сразу… это наверное 3 или четвертый вариант панели админа! И уже думаю, что возможно следующая админка на подходе! Потому, что мы растем, мы меняемся и меняется наше представление о том, как панель администрирования должна выглядеть!

    На странице с контентом доступно : редактирование, удаление, войти в админку.

    Вид моей панели админа.

    Видео — как работает админка

    Чтобы примерно представлять, как работает админка, как должна работать панель администратора сайта, сделал специально для вас видео, которое можно назвать экскурсией по моей админке!

    Не нужно воспринимать увиденное — как руководство к действию! На данный момент, я храню и редактирую данные в своей панели админки именно таким образом!

    Список с примерами простых админ панелей для сайта!

    Сейчас есть просто огромное количество разнообразных систем администрирования сайта, админок…

    НАЗВАНИЕ АДРЕС ССЫЛКА
    0 Image CMS
    1 MaxSite CMS
    2 TextoLite
    3 Adminstation

    И еще пока искал наткнулся на … просто огромный список различных cms

    Изучив немного тему именно панелей, то это скорее исключение — отдельная панель администрирования, скорее всего она идет вместе с движком!

    Где скачать админку!?

    Чуть не забыл если вас интересуют админки, то мы собрали архив шаблонов(искал для себя)

    Не получается скачать!? ->

    Несколько архивов шаблонов сайта.

    Вход а админки на странице со всеми скриптами

    Система входа в админку старый вариант

    Начнем со страницы index.php — Страница входа для админа.

    Запустим сессию:

    session_start ();

    Сделаем соль – набор цифр и букв, которую надо изменить – для лучшего шифрования.

    $salt = «89fe766db2985e1ecc1972c25577ddbf»;

    Получим пароль и имя администратора(По умолчанию : имя — admin, пароль — 12345):

    $name = md5(strip_tags($_POST).$salt); // echo $name.»<br>»; $pas = md5(strip_tags($_POST).$salt); // echo $pas.»<br>»;
    Как изменить admin и пароль!?

    Раскомментируйте(уберите «//») echo в каждой строке 3 + 4 — сохраните файл + загрузите на сервер, перезагрузите index.php.

    Заполните форму и нажмите отправить сверху слева будут данные. Которые вам нужно записать в 18 строку

    Попробуйте догадаться куда…

    строка 18 if(($name == «18127e516cb4596a51d28fed865eb4dc») && ($pas == «3efa71bc5cee5e6e133dff04ff4998b9»))
    Что требуется заменить!?

    Если у вас будет на сайте какая-то привязка к $_SESSION, то требуется заменить —

    admin_example строка 6 + 21 на admin в «index.php» + в файле «logout.php» — строка — 8.

    Если же вы не знаете, что такое — $_SESSION, то вам ничего не нужно менять – когда необходимость возникнет, то вам не потребуются объяснения…

    Если переданные данные верны строка 18, то вам выдаст – все верно – запустим соответствующую сессию, внутри какие-то данные..

    И будет переадресация на тестовую страницу.

    Если данные не верны. то будет выводиться(строка 26):

    $info = «Что-то не верно»;

    И будут записываться куки –сколько осталось попыток..

    После того, как все попытки будут потрачены будет выдаваться, что:

    заблокировано Если вы не в курсе, то куки можно удалить ручками открыв консоль.. – только выбрать не консоль.., а — application и далее куки -и удалить «_um_fl»

    Файл logout.php — страница выхода из админки

    Если сессия существует, то уничтожаем сессию и выводим вы вышли…

    session_destroy (); echo «Вы вышли»;

    Если сессии не существует то:

    echo «Для того, чтобы выйти – надо сперва войти!»;

    Если не требуется переадресация на страницу входа –удаляем строку №5

    Файл test.php — тестовая страница для проверки работы админки

    Этот файл нужен лишь для того, чтобы проиллюстрировать, как будет работать сессии администратора..

    Где много кода – там можно поместить вашу информацию строка 4 – 8 – эта информация не будет доступна, кроме вас…

    Данный код с этой страницы вы может поместить на любую страницу, где требуется скрыть информацию от всех других пользователей!

    Система входа в админ панель DW Admin v1.1.

    Если интересно, то вот сделал новую версию входа в админку -> DW ADMIN v1.1.

    Чем отличается новый скрипт входа от старого? В видео показан процесс выбора -секретного слова, либо закрыть форму от любопытных глаз + создание пароля, логина, из формы! вводим соответствующие данные и просто входим в админку…

    Как сделать роль администратора для сайта php

    Я периодически проверяю поисковые запросы и вот по одному из них -> «Как сделать роль администратора для сайта php» зашло несколько пользователей!

    И логично было бы ранее предположить, что если речь идет о входе в админку, то должны быть и роли соответствующие, как тот же админ!

    1). Если у вас есть отдельный вход для админа

    Чему собственно посвящена данная страница, то

    В момент входа в систему, вы просто запускаете сессию вида:

    $_SESSION =1;

    В месте, где предполагается некий вывод информации только для админа, к примеру -> это может быть кнопка входа в админку, делаем простое условие:

    <?
    if($_SESSION) { echo ‘ <button>Войти в админку</button>’; }
    ?>

    2). Если у вас нет отдельного вход для админа

    Если ваша система не предполагает отдельного входа в систему, то вам нужно распределение ролей на сайте прописывать отдельно!

    Как закачать скрипт админки на сайт

    Существует несколько способов закачать скрипт админки на свой сайт! Конечно же мы расскажем о своем способе:

    Нам потребуется доступ к серверу по ftp

    После того, как вы разобрались с доступом к серверу, нужен инструмент, чтобы заказать вашу админку на сайт -> filezilla (не обязательно, чтобы была именно эта программа с доступом по ftp, просто как-то повелось, что я использую её со времен мезозоя… так и продолжается!)

    Это все…

Вас может еще заинтересовать список тем : #HTML | #PHP | #ADMINKA | #PHP_BOOK | Последняя дата редактирования : 2020-05-17 02:04 Название скрипта :Вход в админку(Адм. №1) Скрипт № 9.2Ссылка на скачивение: Все скрипты на одной странице Теги:
как сделать админ панелькак сделать админ панель для сайта выход админ панельPhp админ панельвход из админ панельФайл выхода из панели администратораФайл входа в админ панельДелаем свою панель админаДелаем свою панель администратораадмин панель phpпанель администратора сайта на phpадмин панель с нулякак сделать администрирование сайта phpскрипт админ панелиадминка php своими рукамиkak sdelat admin panel v phpadmin panel phpсоздание админ панели для сайтакак создать панель администратора в phpсайт админ панельсоздание простой админки для сайта с авторизациейкак добавить админ панель на сайтпример админской панели на пхпкак сделать администратора phpструктура админ панели на php

Что такое админ-панель сайта и как туда попасть

Админ-панель для сайта позволяет управлять настройками проекта, добавлять новые страницы и удалять старые, изменять внешнее оформление ресурса и редактировать контент. В зависимости от используемой CMS способ доступа к админке сайта различается. В данной статье рассмотрим, как зайти в админ-панель Вордпресс, Joomla, Битрикс и OpenCart.

Как найти админ-панель сайта

Админ-панель есть у всех сайтов с CMS — системой управления контентом. Такая система позволяет с легкостью создавать сайт и наполнять его материалами любого формата без навыков программирования.

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

Чтобы попасть в админку сайта с CMS, необходимо действовать по следующему алгоритму:

  1. Определить CMS ресурса.
  2. Открыть форму авторизации.
  3. Ввести логин и пароль.
  4. Зайти в админ-панель.

Определение CMS ресурса осуществляется как с помощью специальных онлайн-сервисов, так и вручную. Нередко найти сведения о CMS ресурса можно в подвале сайта либо в HTML-коде. Этот сайт сделан в WordPress:

Если в подвале информация о CMS не отображается, просмотрим HTML-код главной страницы сайта. Для этого нажмем правую кнопку мыши и выберем «Просмотр кода страницы»:

Из анализа кода видно, что используется система Битрикс:

Также информацию о CMS получают с помощью онлайн-сервисов, например, инструмента Whatcms. Введем домен, отметим галочкой «Я не робот» и нажмем «Определить CMS»:

CMS определена верно:

Узнав CMS, перейдем на ее форму авторизации. Для этого в адресной строке браузера введем название сайта и добавим определенное дополнение, которое зависит от используемой CMS.

Истории бизнеса и полезные фишки

Вход в админ-панель Битрикс

Система 1C Битрикс — популярная CMS в странах СНГ. В рейтинге CMS всего мира на август 2019 года Битрикс занимает десятую позицию. Чтобы зайти в админку сайта Битрикс, добавим к домену /bitrix/admin/, например: https://www.pelenashka.com.ua/bitrix/admin/

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

Второй вариант входа — нажать кнопку «Битрикс24», что позволит авторизоваться через соцсети:

Возможные проблемы при входе в админку Битрикс

Если вы забыли логин или пароль, нажмите «Забыли свой пароль?» для получения данных на e-mail, привязанный к аккаунту:

Затем введите логин или e-mail и нажмите «Выслать»:

После получения контрольной строки обновите пароль.

2. Кэширование страницы авторизации

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

Вариант №1. Для быстрого доступа к истории браузера нажмем сочетание кнопок Ctrl+Shift+Del, после чего получим возможность указать период, за который будут удалены данные и выбрать перечень файлов:

Вариант № 2. Выберем в меню браузера «История»:

После этого нажмем «Очистить историю»:

Затем выберем период очистки и тип данных, как описано в первом варианте.
Когда очистка кэша завершена, повторно зайдем в админку Битрикс и авторизуемся.

Вход в админ-панель Вордпресс

WordPress — самая популярная система управления контентом в мире, с помощью которой к 2019 году создано около 18 миллионов сайтов. Ежемесячно более 400 миллионов пользователей посещают сайты на WordPress. Изначально CMS позиционировалась как система для блогов, однако сейчас ее активно используют и для интернет-магазинов.

Чтобы войти в админку WordPress, введем в адресной строке браузера название домена с дополнением /wp-login.php либо /wp-admin, например:

В окне авторизации введем e-mail и пароль, затем нажмем «Войти»:

После этого будет доступна админка WordPress, в которой отображается меню и последние опубликованные материалы:

Возможные проблемы при входе в админку WordPress

Если пароль от сайта утерян, нужно на странице авторизации выбрать «Забыли пароль?»

После этого введем логин или email, нажмем «Получить новый пароль», чтобы система отправила письмо на указанную электронную почту:

2. Ограниченный доступ

Могут быть установлены ограничения доступа к админ-панели сайта, например, внесен список определенных IP-адресов, с которых можно зайти в админку. В этом случае при попытке авторизации отобразится 403 ошибка: «You don’t have permission to access /wp-login.php on this server».

При подобной ошибке необходимо откорректировать файл .htaccess, расположенный в основном каталоге сайта на хостинге:

После этого нужно проверить, нет ли в файле такого фрагмента кода:<Files wp-login.php>

Order Deny,Allow Deny from all </Files>

Если код есть, то доступ будет запрещен с любых IP-адресов. Необходимо удалить данные строчки кода и доступ к админке будет восстановлен. Второй вариант — открыть доступ к админ-панели со всех адресов либо только с собственного IP-адреса. Для доступа с любого IP введем в конце файла указанные строчки:

<Files wp-login.php> Order Deny,Allow Allow from all </Files>

Для доступа с определенного IP добавим такой код:

<Files wp-login.php> Order Deny,Allow Deny from all Allow from your_IP </Files>

указав вместо your_IP свой IP-адрес.

Перемещенная страница авторизации

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

Вход в админ панель Joomla

Joomla занимает второе место по использованию во всем мире в рейтинге CMS, на данный момент на ней функционирует 2,5 миллиона сайтов. Чтобы попасть в админку Joomla, необходимо добавить к домену сайта /administrator/, например: http://vjoomla.ru/administrator/

Далее необходимо ввести логин, пароль и нажать «Войти»:

Возможные проблемы при входе в админку Joomla

1. Забытые данные для авторизации

Затем введите email, указанный при регистрации, пройдите проверку на спам и нажмите «Отправить»:

2. Нет доступа в админку при правильном вводе логина и пароля

Такая проблем может быть вызвана сохранением конфигурационного файла configuration.php в формате UTF-8, в котором добавляется запись BOM из трех символов. Эти три лишних символа воспринимаются CMS как ошибка, вследствие чего сбрасывается авторизация. Чтобы исправить подобную ошибку, необходимо скачать в панели управления сайта на хостинге файл configuration.php и пересохранить его с помощью редактора Notepad++, выбрав «Кодировать в UTF без BOM» в меню «Кодировки». После этого снова добавьте файл в исходный каталог.

Вход в админ-панель OpenCart

OpenCart — достаточно популярная CMS для создания интернет-магазинов. На август 2019 года на ней функционирует почти 400 тысяч сайтов. Чтобы попасть в административную панель OpenCart, добавим к домену сайта /admin, например: http://shop.epageview.com/admin/

В форме авторизации нужно ввести логин и пароль, затем нажать «Войти»:

После этого откроется админ-панель, в которой доступно редактирование сайта, а также просмотр статистики по заказам и покупателям:

Возможные проблемы при входе в админку OpenCart

Если утерян или забыт пароль от админки, нажмите на странице авторизации «Забыли пароль?»:

После этого укажите регистрационный e-mail и нажмите «Сброс», чтобы получить письмо для обновления пароля:

2. Отсутствует доступ в админку после смены хостинг-провайдера

При переносе сайта на другой хостинг иногда возникает проблема, связанная с использованием устаревшего драйвера mysql данным провайдером. В этом случае отредактируйте файлы config.php в корневом каталоге и папке admin:

Поменяйте в них указанную строку кода: define(‘DB_DRIVER’, ‘mysqli’), заменив название драйвера mysqli на mysql:

Запомнить

  1. Чтобы попасть в админку сайта, необходимо определить, какая именно CMS используется на проекте. Для этой цели подойдет ручной анализ сайта и его HTML-кода, а также онлайн-сервисы.
  2. Доступ в странице авторизации осуществляется с помощью добавления в адресной строке браузера к домену сайта определенных слов — admin, wp-login.php, administrator и пр.
  3. При утрате логина и пароля их восстанавливают с помощью указания адреса электронного ящика, который был добавлен при создании проекта.
  4. При попытках входа в админку CMS иногда возникают проблемы, связанные с ограниченным доступом только с указанных IP, изменением адреса страницы авторизации, ошибками в конфигурационных файлах. Их решают с помощью редактирования файлов .htaccess и configuration.php (config.php) на хостинг-провайдере.

Строим свою CMS на PHP и MySQL. Часть 1

Задача построения системы управления содержанием (CMS) может привести в замешательство новичка разработчика PHP. Но не так страшен черт, как его малюют! В данной серии уроков мы построим простую, но полностью работоспособную систему с нуля.

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

Вы можете посмотреть работу готового приложения на странице демонстрации (с целью безопасности включен режим «только чтение», так что добавлять, изменять и удалять статьи не получится). Также можно скачать полный код PHP нашей меленькой CMS с переведенными комментариями.

Примечание: для изучения материалов уроков потребуется веб сервер Apache с установленным модулем PHP и сервер MySQL. Для работы на локальном компьютере можно воспользоваться одним из инструментов веб разработчика: XAMPP (на английском языке), Denwer, Open server или другим.

Функционал нашей CMS

Первым делом надо точно определиться, что будет делать наша CMS. Итак, вот список функций:

Клиентская часть:

  • Главная страница, на которой выводиться список последних 5 статей
  • Страница со списком всех статей
  • Страница просмотра отдельной статьи

Серверная часть:

  • Вход/выход для администратора
  • Список всех статей
  • Добавление новой статьи
  • Редактирование существующей статьи
  • Удаление существующей статьи

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

Планирование работ

Для создания нашей CMS нужно сделать следующие шаги

  1. Создать базу данных
  2. Создать таблицу articles
  3. Сделать файл конфигурации
  4. Построить класс Article
  5. Написать скрипт клиентской части index.php
  6. Написать скрипт серверной части admin.php
  7. Создать шаблон клиентской части
  8. Создать шаблон серверной части
  9. Создать таблицу стилей и логотип системы

Примечание: на страницах уроков приводится код для нашей CMS готовый к копированию в ваши текстовые файлы. Если у вас нет желания создавать файлы самостоятельно, то можно скачать архив с исходниками, в котором содержатся все нужные папки и файлы.

Шаг 1. Создаем базу данных

На первом шаге нужно создать базу данных MySQL для хранения содержания. Можно сделать так:

  1. Запускаем программу клиент mysql Открываем окно терминала и набираем команду

    mysql -u username -p

    После запроса введите пароль для доступа к MySQL.

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

  2. Создаем базу данных После метки mysql> вводим:

    create database cms;

    И нажимаем Enter.

  3. Выходим из программы клиента mysql После метки mysql> вводим:

    И нажимаем Enter.

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

Для решения такой задачи также можно воспользоваться инструментами для администрирования баз данных, таким как phpMyAdmin, cPanel или Plesk (если они установлены на вашем сервере). В некоторых случаях использование подобных инструментов является единственным доступным для пользователя инструментом для работы с базами данных (ситуация зависит от правил, установленных на вашем хостинге).

Шаг 2. Создаем таблицу articles

Наша простая CMS имеет единственную таблицу в базе данных: articles. В ней содержатся все статьи в нашей системе.

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

Создаем текстовой файл tables.sql на жестком диске и добавляем в него следующий код:

DROP TABLE IF EXISTS articles; CREATE TABLE articles ( id smallint unsigned NOT NULL auto_increment, publicationDate date NOT NULL, # Когда статья опубликована title varchar(255) NOT NULL, # Полный заголовок статьи summary text NOT NULL, # Резюме статьи content mediumtext NOT NULL, # HTML содержание статьи PRIMARY KEY (id) );

Выше приведенный код определяет схему таблицы articles. Он написан на SQL, языке для создания и манипулирования базами данных в MySQL (и во многих других системах).

Разберем выше приведенный код

  1. Создаем таблицу articles Выражение DROP TABLE IF EXISTS articles удаляет любую существующую таблицу articles (вместе с данным — осторожно!). Мы выполняем данную операцию чтобы в базе не было двух таблиц с одинаковыми именами. Выражение CREATE TABLE articles ( ) создает новую таблицу articles. Код, размещенный в скобках, определяет структуру данных в таблице…
  2. Определяем для каждой статьи уникальный ID Теперь можно определять структуру таблицы. Таблица состоит из набора полей (также их называют столбцами). Каждое поле содержит опредленный тип информации о статье. Сначала мы создаем поле id. Оно имеет тип smallint unsigned (без знаковое маленькое целое), то есть число от 0 до 65,535. Таким образом, наша CMS может содержать до 65,535 статей. Также для него определяется атрибут NOT NULL, который означает, что поле не может быть пустым (null). Данное свойство существенно облегчает труд разработчика. Добавляем атрибут auto_increment, который указывает MySQL назначать новое, уникальное значение для поля id при создании записи. Итак, первая статья будет иметь id 1, вторая — id 2, и так далее. Мы будем использовать уникальные значения как указатели на статью при выводе и редактировании в CMS.
  3. Добавляем поле publicationDate Следующая строка создает поле publicationDate, которое хранит дату публикации каждой статьи. Данное поле имеет тип date, соответствующий значениям дат.
  4. Добавляем поле title Теперь создаем поле title, в котором размещается заголовок. Оно имеет тип varchar(255), то есть может хранить строку длиной до 255 символов.
  5. Добавляем поля summary и content Последние два поля 2, summary и content, содержат резюме статьи (краткое описание материала) и HTML содержание соответственно. Резюме имеет тип text (то есть, может состоять из 65,535). А поле content имеет тип mediumtext (то есть может содержать до 16,777,215).
  6. Добавляем основной ключ Последняя строка в выражении CREATE TABLE определяет ключ для таблицы. Ключ также называют индексом, и он служит для быстрого поиска данных в таблице за счет некоторого увеличения требующегося пространства для хранения. Мы определяем поле id как PRIMARY KEY. Каждая таблица может содержать единственный PRIMARY KEY, так как данный ключ уникально определяет каждую запись в таблице. Кроме того, с помощью данного ключа MySQL очень быстро находит нужную запись.

Теперь у нас есть схема таблицы и ее нужно загрузить в MySQL для создания структуры. Самый простой способ — открыть окно терминала, перейти к папке с файлом tables.sql и запустить следующую команду:

mysql -u username -p cms < tables.sql

…где username — имя пользователя MySQL, а cms — имя базы данных, которую мы создали на шаге 1.

Вводите пароль пользователя после запроса, и MySQL загрузит и выполнит код из файла tables.sql, создав таблицу articles в базе данных cms.

Также можно воспользоваться инструментами для администрирования баз данных, таким как phpMyAdmin, cPanel или Plesk (если они установлены на вашем сервере).

Шаг 3. Создаем файл конфигурации

Теперь у нас есть база данных и мы готовы разрабатывать код PHP. Начнем с создания файла конфигурации для хранения различных установок для нашей CMS. Данный файл будет использоваться остальными скриптами нашей системы.

Первым делом создаем папку cms в папке веб сервера. Она будет содержать все файлы нашей CMS.

В папке cms создаем файл config.php и копируем в него следующий код:

<?php ini_set( «display_errors», true ); date_default_timezone_set( «Australia/Sydney» ); // http://www.php.net/manual/en/timezones.php define( «DB_DSN», «mysql:host=localhost;dbname=cms» ); define( «DB_USERNAME», «username» ); define( «DB_PASSWORD», «password» ); define( «CLASS_PATH», «classes» ); define( «TEMPLATE_PATH», «templates» ); define( «HOMEPAGE_NUM_ARTICLES», 5 ); define( «ADMIN_USERNAME», «admin» ); define( «ADMIN_PASSWORD», «mypass» ); require( CLASS_PATH . «/Article.php» ); function handleException( $exception ) { echo «Sorry, a problem occurred. Please try later.»; error_log( $exception->getMessage() ); } set_exception_handler( ‘handleException’ ); ?>

Разберем код подробно:

  1. Выводим ошибки в браузере Строка ini_set() устанавливает режим вывода сообщений об ошибках в браузере. Отличная опция для отладки кода, но на готовом проекте данную опцию надо отключить ( установить значение false) для безопасности ресурса.
  2. Устанавливаем временную зону Так как наша CMS будет использовать функцию PHP date(), нужно указать временную зону сервера для PHP (иначе PHP будет генерировать предупреждение). В примере установлена зона «Australia/Sydney» — поменяйте на свою.
  3. Устанавливаем детали доступа к базе данных Затем определяем константу DB_DSN, которая указывает PHP, где искать базу данных MySQL. Параметр dbname должен соответствовать имени базы данных нашей CMS (cms). Также мы будем хранить имя пользователя MySQL и пароль, которые используются для доступа к базе данных CMS в константах DB_USERNAME и DB_PASSWORD. Установите правильные значения в данных константах, которые соответствуют вашим настройкам.
  4. Устанавливаем пути Мы устанавливаем 2 пути в нашем файле конфигураций: CLASS_PATH, который указывает на место хранения файлов классов, и TEMPLATE_PATH, который указывает на место хранения шаблонов HTML. Оба пути указываются относительно верхнего каталога cms.
  5. Устанавливаем количество статей, выводимых на главной странице HOMEPAGE_NUM_ARTICLES управляет максимальным количеством заголовков статей, которые выводятся на главной странице. Мы установили 5, но можно легко увеличить или уменьшить значение.
  6. Устанавливаем имя и пароль администратора Константы ADMIN_USERNAME и ADMIN_PASSWORD содержат данные регистрации для администратора нашей CMS.
  7. Включаем класс Article Так как файл класса Article (мы его создадим позже) требуется во всех скриптах нашего приложения, добавим его здесь.
  8. Создаем обработчик исключительных ситуаций В завершение определяем handleException() — простую функцию для обработки исключений PHP, которые могут генерироваться при выполнении кода. Данная функция выводит общее сообщение об ошибке и записывает данные об ошибке в журнал веб сервера. Такая функция способствует улучшению безопасности системы за счет обработки исключений PDO, которые могут выводить имя пользователя и пароль на странице. После определения функции handleException(), мы устанавливаем ее как обработчик исключений PHP, вызывая функцию set_exception_handler().

    Такой обработчик исключений сделан для упрощения материалов урока. «Правильный» способ для обработки исключений для перехвата всех вызовов PDO в Article.php заключается в использовании блоков try … catch.

  9. Замечание о безопасности

    В реальных проектах лучше помещать config.php где-нибудь за пределами корневого каталога веб сайта, так как в файле содержатся имена и пароли. Обычно код PHP невозможно просмотреть в браузере, но иногда из-за неправильной конфигурации веб сервера код становится доступным. Вы можете использовать функцию hash() для хэширования паролей и хранить в config.php хэши, вместо текстовых паролей. Затем при регистрации пользователя можно опять воспользоваться функцией hash() для кодирования введенного пароля и сравнения результата с сохраненным в config.php хэшем.

В следующем уроке мы построим основной класс нашего приложения — Article.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.elated.com/articles/cms-in-an-afternoon-php-mysql/
Перевел: Сергей Фастунов
Урок создан: 22 Ноября 2012
Просмотров: 263947
Правила перепечатки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *