Рубрика «php» - 205

Внезапная история из прошлого! Дело было так. Несмотря на то, что я программист «немного другого толку», обратились ко мне со стандартной просьбой – сделать сайт. Обычно я не берусь за подобные дела, но в этот раз решил немного подзаработать, тем более что это был не сайт-визитка или интернет-магазин, а нормальный сайт с базой некоторых объектов, объекты добавляются-редактируются-удаляются (аля CRUD) и с ними необходимо выполнять некоторые операции. О! подумалось мне, да это идеальная задача для (название фреймворка скрыто) и после всяческой бухгалтерии я незамедлительно приступил к делу.

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

Правда, появилась небольшая как бы просьба. Файловый менеджер, тот, с помощью которого на сайт в статью можно вставить картинку, ему не понравился. Вот хотелось ему чтобы всё как-то проще было. А тут и кнопок целых 20! Да и действий много. А нужно-то всего-навсего загрузить картинку на сервер и вставить на страничку. Ну ладно, подумал я, их же целый интернет, да и сам я много раз делал подобные решения. Но один страшен, как чёрт, другой по одному файлу загружает за раз, а вот третий ничё так вроде, но платен. В общем, история завершилась быстро, созданием простенького файлового менеджера с нуля. Но как-то сиделось мне, да и взгрустнулось. И выпил я (сока с мякотью, конечно). И открыл IDE и понеслось…
Читать полностью »

Написание статьи навеяно habrahabr.ru/qa/34735/ и habrahabr.ru/qa/32135/ вопросами, в качестве ответов на которые не смог найти полной и подробной информации, чего очень не хватало. Я надеюсь, что она будет полезна и другим.

Проект, на чью долю пал выбор в виде ZF в качестве основного фреймворка, представлял из себя мобильную версию сервиса (адаптивный дизайн с некоторыми ньюансами) + АПИ для мобильных приложений.
Коллегиально было принято политико-техническое решение делать единое АПИ, посредством которого будет общаться и сайт, и приложения.

На этом, думаю, прелюдию можно закончить и перейти к самому интересному.
Читать полностью »

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

Пару недель назад, Zeev Suraski, один из главных контрибьюторов PHP и по совместительству работник Zend, предложил включить в ядро PHP Zend Optimizer+.
Zend Optimizer+ это, так же как и Apc, кешер опкодов. Но, в отличии от Apc, он также неплохо умеет применять стандартные паттерны оптимизации кода.
Помимо этого, оптимайзер дает одну хорошую плюшку — его разработку поддерживает коммерческая организация, например стабильная поддержка трейтов в нем появилась почти одновременно с релизом PHP 5.4, в то время как APC нужно было ждать около полу года. В данный момент он уже поддерживает PHP 5.5.
Читать полностью »

Всем доброго времени суток. На днях понадобилось проверить работоспособность 4 вариантов кода на разных версиях PHP (в сумме около 20). Причём изначально было понятно что 4 экземплярами дело не ограничится — в будущем подобных тестов предвидится больше. Вручную всё это делать очень утомительно, поэтому было написано 2 скрипта, которыми я бы хотел с вами поделиться.
Читать полностью »

В этой статье сегодня поговорим о создании подключения к базе данных и обсудим какой вариант лучше использовать процедурный или объектно — ориентированный. Для начала давайте разберем на каком уровне мы находимся, если это уровень полного новичка, тогда мой совет без исключения начать использовать процедурный стиль подключения к базе данных. Ранее я писал статью по этой теме на своем блоге, подробнее о процедурном стиле подключения к базе данный читайте в статье: «Как подключиться к MySQL используя PHP». Если за плечами есть уже какой нибудь опыт работы с процедурным стилем подключения к базе данных, тогда Вас наверное как и меня мои проекты просто взяли и заставили использовать объектно — ориентированный подход.

Так или иначе мы сейчас разберем этапы построения класса для создания подключения к базе данных MySQL на языке PHP. Нам понадобиться два PHP файла, в один файл мы «положим» класс для создания подключения к базе данных, а во — втором будем работать с этим классом. Читать полностью »

Собственно задача весьма специфичная, но может еще кому-то эта работа пригодится. Вопрос целесообразности совместного использования Apache и Tomcat предлагаю оставить за рамками обсуждения. Задача была поставлена на работе уже как данность. Требуется обеспечить хранение сессий в Redis для PHP и Tomcat причем так, чтобы эти сессии были общими между ними. Продолжительное гугление результата не дало. И для PHP и для Tomcat существуют средства хранения сессий в Redis, но формат хранения у них разный. Все 3 найденные проекта для Tomcat сериализуют сессии в Redis с использованием бинарного формата для сериализации объектов Java. Также PHP и в Tomcat разные идентификаторы для Cookie сессии (PHPSESSID и JSESSID, соответственно).
Читать полностью »

В наше время создавая онлайн сервис, нужно подумать о разработке мобильных и desktop приложений дня него, думаю что не нужно разъяснять почему. Так же нужно чтобы это не было просто «вакуумное» приложение, нужно да бы оно работало с данными, которые лежат на сервере. А так как приложение находится не на стороне сервера и не имеет прямого доступа к нему, неплохо бы им завязать дружеские отношения между собой и «обмениваться фотографиями». Эти взаимоотношения можно построить с помощью API.
Читать полностью »

Inversion это простой и функциональный контейнер внедрения зависимости для PHP 5.3. Поддерживает сервис-ориентированную архитектуру, ссылки, PRS-0, и Composer.

Внедрение зависимости c Inversion

Установить можно через packagist.org: granula/inversion либо скачав и добавив к PRS-0 совместимому загрузчику.

$container = new InversionContainer();
$container['foo'] = 'MyClassFoo';
// ...
$foo = $container('foo');

Читать полностью »

In-app Billing Subscriptions (подписки) позволяют автоматизировать списание средств со счета пользователя для приложений, разработанных под Android. Данный инструмент — большой помощник в задаче повышения монетизации приложений. В общем виде схема работы с подписками выглядит следующим образом:

  1. Пользователь покупает подписку на некоторые плюшки приложения
  2. В случае успешной покупки, приложение получает данные заказа пользователя, в частности идентификатор транзакции и токен продажи подписки, и передает их на сервер
  3. Сервер осуществляет проверку подписи заказа в Google Play, контролирует уникальность транзакции, определяет время завершения подписки и начисляет положенные блага
  4. По завершении подписки, сервер может определить факт продления и, в случае успеха, продолжить начисление благ

В статье представлены шаги по обеспечению серверной поддержки инструмента монетизации для In-App Billing version 2.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js