Webdevkin. Статьи по теме "Бэкенд"

Админка на файлах. Урок 3. Шаблонизатор Twig

декабрь 3 , 2018

В предыдущем уроке админки мы разобрались с конфигами и значениями параметров. Сегодня научимся выводить настройки в браузере. А чтобы не было скучно просто писать html, подключим к проекту шаблонизатор Twig. Ему и будет посвящена основная часть статьи.

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

Читать дальше

Админка на файлах. Урок 2. Конфиги и бекенд

ноябрь 30 , 2018

В первой статье об админке мы разобрали простой способ чтения настроек из отдельных файлов.

Плюсы такого подхода:

  1. Внедряется за 15 минут 10-ю строками кода
  2. Одна настройка - один файл

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

Минусы:

  • 1. Для правки настроек приходится лезть на ftp
  • 2. Чем больше настроек, тем больше файлов, а значит и больше шансов ошибиться
  • 3. Настройки хранятся только в строковом виде, из чего вытекают два подпункта
  • 3.1. При чтении приходится их конвертировать
  • 3.2. Опять легко ошибиться: вместо числа вбить строку и поломать приложение

Давайте напишем больше 10 строк кода, но зато эти минусы устраним.

Читать дальше

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

ноябрь 22 , 2018

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

Читать дальше

Подключаем смс-уведомления в интернет-магазине

сентябрь 3 , 2017

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

Загуглив в рамблере, я с некоторой грустью выяснил следующее. Похоже, те благостные времена работы волшебных сервисов отправки смс за 3 копейки ушли и больше не вернутся. Были в свое время народные умельцы, которые отправляли халявные смски через общедоступные формочки на сайтах операторов сотовой связи, но теперь лавочку прикрыли. Чтобы отправить смс через сайт оператора, нужно проделать массу манипуляций в зависимости от паранойи оного оператора: это и в личный кабинет войти, и ввести код подтверждения при отправке смс, полученный через смс же на свой номер. Да еще и ограничения по количеству и/или промежутков времени. В общем, там лось ногу сломит. Впрочем, если у Вас другая, более радостная информация, то поделитесь в комментах, обрадуйте автора :-)

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

Читать дальше

Нано-агрегатор новостей. Учимся парсить сайты с помощью phpQuery

июнь 17 , 2017

Иногда приключается необходимость вытащить с какого-то сайта контент: изображения, ссылки или тексты. Говоря по-научному, распарсить сайт. В благих целях делать это или нет, дело Ваше. Я лишь хочу продемонстрировать, как это работает с технической точки зрения.

Для примера рассмотрим простую, уже довольно старую, но надежную библиотеку для парсинга - phpQuery. А чтобы было не скучно просто читать методы библиотеки, то запилим маленький проектик, который громко назовем "Агрегатор новостей".

В качестве примера возьмем новости футбола. А брать их будем с сайта bombardir.ru, на который я иногда заглядываю. Будем вытаскивать у них главные новости и статьи из центральной колонки и отображать их на нашей демо страничке (в целом, новостные агрегаторы так и работают). Посмотрите на исходный сайт, потом что получилось у нас, и если Вам интересно, как вытащить нужный контент, читайте статью дальше.

Читать дальше

SPA для поисковиков. Рендер на стороне сервера, robots.txt и страница 404

июнь 12 , 2017

SPA для поисковиков В первых двух уроках про SPA мы создали одностраничный сайт и соорудили для него sitemap.xml. Пройдя по любой ссылке в сайтмапе, посетитель сайта увидит правильно отрендеренный контент, заголовок страницы и прочее. Беда в том, что этот контент не видят поисковики. Они не умеют выполнять javascript и видят только то, что отдает сервер. Поэтому все страницы сайта для них будут совершенно одинаковые, что не только полезно, а еще и очень вредно :-)

Наша задача состоит в том, чтобы научить поисковые роботы видеть то же, что и мы с вами. Другими словами, заставить сервер отрисовывать ровно ту же html-разметку, что образуется после отработки javascript-кода в браузере.

Обращаю внимание: это никоим образом не означает отход от концепции одностраничных сайтов. Для наших посетителей при навигации по сайту страницы будут грузиться как и раньше: через ajax-загрузку контента и с History API. Изменится лишь первоначальная загрузка страницы, когда мы сразу отдадим в браузер нужный контент. Как это сделать, а также про небольшие хитрости с robots.txt и страницей 404 Not Found, читайте ниже в статье.

Метки:
Читать дальше

Простой RESTful-сервис на нативном PHP

февраль 5 , 2017

Я не знаю ни одного php-фреймворка. Это печально и стыдно, но законом пока не запрещено. А при этом поиграться с REST API хочется. Проблема в том, что php по умолчанию поддерживает только $_GET и $_POST. А для RESTful-сервиса надобно уметь работать еще и с PUT, DELETE и PATCH. И не очень очевидно, как культурно обработать множество запросов вида GET http://site.ru/users, DELETE http://site.ru/goods/5 и прочего непотребства. Как завернуть все подобные запросы в единую точку, универсально разобрать их на части и запустить нужный код для обработки данных?

Почти любой php-фреймворк умеет делать это из коробки. Например, Laravel, где роутинг реализован понятно и просто. Но что если нам не нужно прямо сейчас заниматься изучением новой большой темы, а хочется просто быстро завести проект с поддержкой REST API? Об этом и пойдет речь в статье.

Метки:
Читать дальше

MySql-миграции: что это и как реализовать простым php-скриптом

октябрь 16 , 2016

Когда разрабатываешь веб-приложение не один, а в команде и/или на нескольких машинах, рано или поздно сталкиваешься с проблемой синхронизации кода проекта и базы данных. Для управления кодом есть системы контроля версий, в частности, git, а для СУБД придуманы миграции.

Есть много готовых разнообразных инструментов, которые занимаются миграциями, но!

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

Поэтому всех, кому интересно узнать, как самим сделать простую утилиту миграций, написав полсотни строк php-кода, прошу в статью.

Читать дальше

Фильтры в интернет-магазине. Урок 4. Пишем базовый php-код

сентябрь 4 , 2016

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

Читать дальше

Развиваем тему интернет-магазина. Реализуем оформление заказа на клиенте и сервере

май 8 , 2016

Оформление заказа в интернет-магазинеВследствие большой популярности поста про корзину для интернет-магазина на javascipt и интереса публики к постройке магазинов в целом решил запилить напрашивающееся продолжение означенной статьи. Сейчас мы рассмотрим следующий этап: сбор данных о покупателе и его заказе и отправка их на сервер.
Что я подразумеваю под оформлением заказа? Как владельцу магазина мне бы хотелось предоставить на своем сайте страничку, где покупатель после накидывания товаров в корзину введет свои контактные данные, нажмет одну кнопку "Отправить заказ", и эти данные каким-то образом будут мне известны, сохранены в надежном месте, и я получу уведомление о новом заказе, дабы не пропустить это радостное событие и максимально быстро обработать этот заказ.
Чем это грозит программисту? Сперва нужно создать эту страничку, нарисовать на ней форму с нужными полями, вроде имени, телефона и адреса доставки. Затем написать немного javascript-кода, который будет, в первую очередь, собирать данные и отправлять их на сервер, а во вторую очередь, заниматься всякими прикольными штуками, например, валидацией введенных данных, обработкой ошибок от сервера, показом сообщений от этих ошибок и прочее. После этого создать в mysql несколько табличек, в которую нужно сохранить полную информацию о заказе, и написать серверный код, который и будет эту инфу обрабатывать. И последняя важная часть - это отправка писем менеджеру магазину и самому покупателю.
Все, что я перечислил, это минимальный, но вполне достаточный набор для функционирования большинства несложных интернет-магазинов.
И теперь подробнее о том, как это реализовать...

Читать дальше