Делаем админку на файлах. Урок 1

ноябрь 22 , 2018
Следующая статья

  • Добрый день, Александр! Полгода назад Вы делали нам сайт-визитку. Нужны небольшие доработки. Можно на Вас рассчитывать?
  • Здравствуйте, Евгений! Да, конечно. Что хотите сделать?
  • Внедрить на сайте блок "Обратный звонок". Когда и за сколько сможете это сделать?
  • Давайте уточним. Есть дизайн окошка, посетитель оставляет номер телефона, который отправляется на определенную почту, изменяемую в настройках. 2 дня и стоить это будет N монет.
  • К сожалению, мы ограничены во времени и деньгах, это окошко нужно уже завтра. Давайте Вы найдете шаблонную форму, внедрите до завтра, а почту мою вбейте evgen@site.ru, менять ее не будем. Чтобы быстрее и подешевле.
  • Хорошо, тогда до завтра, это дешевле - M монет.
  • Отлично, ждем!

  • Евгений, все готово, проверяйте
  • Все хорошо, спасибо!

Прошел месяц.

  • Александр, добрый вечер! Неудобно просить, но Вы не могли бы поменять в обратном звонке почту evgen на stepan@site.ru? С сайтом теперь работает Степан. Надеюсь, Вас это не затруднит?
  • Добрый вечер, Евгений. Не затруднит, уже заменил
  • Спасибо

Спустя полгода.

  • Привет, Александр. Меня зовут Степан, Евгений сказал, что все вопросы по сайту к тебе. Нам надо заменить почту в обратном звонке. Поставь, плиз, sales@site.ru, не трудно?
  • Привет, Степан. Сделал
  • ок

Через 3 дня.

  • Саш, привет. Слушай, у нас новый маркетолог вышла, добавь еще почту elena@site.ru
  • Привет, Степан. Напоминаю, мы договаривались только о создании сайта, от поддержки ваша фирма отказалась
  • И что теперь, тебе каждый раз платить, чтобы почту заменить? Сразу не мог нормально сделать, чтобы мы сами ее меняли?

Если для Вас такой разговор это невероятная дичь, значит, Вы не фрилансили и не работали в веб-студии.

У меня же реакция на такие разговоры поначалу была примерно такая

Злая рожица

Что делать?

Рассмотрим разные варианты:

1. Безропотно и дальше меняем почту по просьбам Степана. Каждый раз думаем, что последний
2. Говорим, что каждое обращение к Вам стоит столько-то, и отправляем Степана к херам собачьим
3. Отправляем письма на нейтральную почту и объясняем Степану или местному админу, как сделать редиректы на нужные ящики
4. Считаем, сколько стоит натянуть сайт на привычную CMS. Выкатываем счет
5. Указываем php-файл с отправкой письма и номер строки, в которой написана искомая почта. Пусть правят прямо в коде, лишь бы отстали.

Есть еще один вариант. Потратить 15 минут времени и позволить Степану редактировать почту через файловый менеджер сайта. Говорим Степану, что пусть открывает файл settings/email.txt и вбивает туда нужную почту. txt - не php-код, накосячить в файле с одной строкой сложнее. К - компромисс. Или консенсус. Вечно в них путаюсь. Короче, эта супер инновация реально облегчит жизнь людей и не потребует от Вас больших усилий.

Риторический вопрос, а не зашквар ли делать такую "админку" на файлах, обсудим в комментах. Пока нас интересует только техническая сторона вопроса. Как это реализовать, сейчас и рассмотрим.


Пишем код

В качестве проекта возьмем пустую папку. Создадим в ней папку admin. А в admin уже файл admin.class.php и папку settings с двумя текстовыми файлами email.txt и phone.txt. В email.txt напишем webdevkin@gmail.com, а в phone.txt - 8-911-123-45-67.

Теперь сделаем класс. Пока в нем будет один статический метод. То есть класс выполняет роль пространства имен. Содержимое admin.class.php

    class Admin {
    
        // Возвращаем значение настройки
        public static function get($key) {
            $pathToFile = $_SERVER['DOCUMENT_ROOT'] . '/admin/settings/' . $key . '.txt';
            $value = file_get_contents($pathToFile);
            return $value !== false ? $value : 'nodata';
        }
    
    }

Единственная функция get читает указанную настройку из файла. Если файла нет или ошиблись с названием настройки, вернет 'nodata'. Теперь этот файл подключаем в любом месте проекта и считываем настройки через Admin::get('название_настройки')

Выглядит не особо сложно, но давайте все-таки убедимся, что работает. Создадим в папке admin файл index.php и напишем там

    include_once './admin.class.php';
    
    echo Admin::get('email');
    echo '
'; echo Admin::get('phone'); echo '
'; echo Admin::get('wrong_key');

Результат будет такой

webdevkin@gmail.com
8-911-123-45-67
nodata

Вот и все. Неожиданно, да? В несколько строк мы реализовали не админку, конечно, но некоторое ее подобие. Этого вполне хватит для начала. Теперь ответственный за сайт может в файловом менеджере отредактировать настройки. Усилий никаких, а людям жить легче.

В следующих статьях будем развивать эту историю. Редактировать настройки прямо на хостинге годится для некоторых случаев. То есть если у Вас ситуация как в диалоге или "лучшая продающая CMS для лендингов всего за тыщу рублей в месяц". А для остальных сделаем простой интерфейс для редактирования.

P.S. Эта статья открывает тему админок и панелей управления. Из простейшей админки на файлах дальше мы сделаем панель управления на базе MySql и личный кабинет для интернет-магазина.

Продолжение следует.

Следующая статья
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!