Всем доброго времени суток. На днях понадобилось проверить работоспособность 4 вариантов кода на разных версиях PHP (в сумме около 20). Причём изначально было понятно что 4 экземплярами дело не ограничится — в будущем подобных тестов предвидится больше. Вручную всё это делать очень утомительно, поэтому было написано 2 скрипта, которыми я бы хотел с вами поделиться.
Читать полностью »
Метка «PHP» - 42
Проверка работоспособности кода на множестве версий PHP
2013-02-13 в 15:04, admin, рубрики: php, тесты, метки: PHP, тестыMySQL и PHP: Класс для создания подключения к базе данных
2013-02-13 в 12:37, admin, рубрики: mysql, php, классы, ооп, Песочница, метки: mysql, PHP, классы, оопВ этой статье сегодня поговорим о создании подключения к базе данных и обсудим какой вариант лучше использовать процедурный или объектно — ориентированный. Для начала давайте разберем на каком уровне мы находимся, если это уровень полного новичка, тогда мой совет без исключения начать использовать процедурный стиль подключения к базе данных. Ранее я писал статью по этой теме на своем блоге, подробнее о процедурном стиле подключения к базе данный читайте в статье: «Как подключиться к MySQL используя PHP». Если за плечами есть уже какой нибудь опыт работы с процедурным стилем подключения к базе данных, тогда Вас наверное как и меня мои проекты просто взяли и заставили использовать объектно — ориентированный подход.
Так или иначе мы сейчас разберем этапы построения класса для создания подключения к базе данных MySQL на языке PHP. Нам понадобиться два PHP файла, в один файл мы «положим» класс для создания подключения к базе данных, а во — втором будем работать с этим классом. Читать полностью »
Хранение сессий в Redis и их совместное использование в PHP и Tomcat
2013-02-13 в 12:09, admin, рубрики: php, redis, Песочница, сессии, метки: PHP, redis, сессии Собственно задача весьма специфичная, но может еще кому-то эта работа пригодится. Вопрос целесообразности совместного использования Apache и Tomcat предлагаю оставить за рамками обсуждения. Задача была поставлена на работе уже как данность. Требуется обеспечить хранение сессий в Redis для PHP и Tomcat причем так, чтобы эти сессии были общими между ними. Продолжительное гугление результата не дало. И для PHP и для Tomcat существуют средства хранения сессий в Redis, но формат хранения у них разный. Все 3 найденные проекта для Tomcat сериализуют сессии в Redis с использованием бинарного формата для сериализации объектов Java. Также PHP и в Tomcat разные идентификаторы для Cookie сессии (PHPSESSID и JSESSID, соответственно).
Читать полностью »
Framework для создания API
2013-02-13 в 7:37, admin, рубрики: api, framework, php, Песочница, я пиарюсь, метки: api, framework, PHP В наше время создавая онлайн сервис, нужно подумать о разработке мобильных и desktop приложений дня него, думаю что не нужно разъяснять почему. Так же нужно чтобы это не было просто «вакуумное» приложение, нужно да бы оно работало с данными, которые лежат на сервере. А так как приложение находится не на стороне сервера и не имеет прямого доступа к нему, неплохо бы им завязать дружеские отношения между собой и «обмениваться фотографиями». Эти взаимоотношения можно построить с помощью API.
Читать полностью »
Внедрение зависимости c Inversion
2013-02-12 в 17:59, admin, рубрики: dependency injection, inversion of control, php, метки: dependency injection, inversion of control, PHPInversion это простой и функциональный контейнер внедрения зависимости для PHP 5.3. Поддерживает сервис-ориентированную архитектуру, ссылки, PRS-0, и Composer.
Установить можно через packagist.org: granula/inversion либо скачав и добавив к PRS-0 совместимому загрузчику.
$container = new InversionContainer();
$container['foo'] = 'MyClassFoo';
// ...
$foo = $container('foo');
In-app Billing Subscriptions со стороны сервера
2013-02-12 в 7:25, admin, рубрики: Google API, php, Разработка под android, метки: PHPIn-app Billing Subscriptions (подписки) позволяют автоматизировать списание средств со счета пользователя для приложений, разработанных под Android. Данный инструмент — большой помощник в задаче повышения монетизации приложений. В общем виде схема работы с подписками выглядит следующим образом:
- Пользователь покупает подписку на некоторые плюшки приложения
- В случае успешной покупки, приложение получает данные заказа пользователя, в частности идентификатор транзакции и токен продажи подписки, и передает их на сервер
- Сервер осуществляет проверку подписи заказа в Google Play, контролирует уникальность транзакции, определяет время завершения подписки и начисляет положенные блага
- По завершении подписки, сервер может определить факт продления и, в случае успеха, продолжить начисление благ
В статье представлены шаги по обеспечению серверной поддержки инструмента монетизации для In-App Billing version 2.
Читать полностью »
HTML с картинками в DOC на PHP собственными руками
2013-02-12 в 6:21, admin, рубрики: doc, mht, php, картинки, Песочница, метки: doc, mht, PHP, картинкиВ статье Не очень честная генерация DOC файлов на PHP был описан описан способ генерации DOC файла при помощи генерации MHT (MIME HTML) используя стороннюю библиотеку. Сегодня я расскажу о своей собственной генерации в этот формат. Плюсы моего способа следующие:
1) В OpenOffice читаемый текст и картинки.
2) В Word открывается файл в электронном виде, а не на весь экран.
3) Наш скрипт будет принимать HTML и отдавать сразу DOC файл на скачивание.
Ко всему прочему, вы поймете как преобразовать голый HTML в MHT собственными руками. Ошибки если и будут, то копаться в коде будет проще.
Начнем с функции, которая отдаст DOC файл на скачивание и будет работать во всех браузерах и со всеми протоколами(у меня с этим были проблемы):
/* Отсылаем файл на закачку */
function send_download($filename, $charset = 'cp1251')
{
header ($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
$UserBrowser = "Opera";
elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
$UserBrowser = "IE";
else
$UserBrowser = '';
$mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ?
'application/octetstream' : 'application/octet-stream';
header("Content-Type: application/msword; charset=".$charset);
$ua = (isset($_SERVER['HTTP_USER_AGENT']))?$_SERVER['HTTP_USER_AGENT']:'';
$isMSIE = preg_match('@MSIE ([0-9].[0-9]{1,2})@', $ua);
if ($isMSIE)
{
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}
else
{
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Pragma: no-cache');
}
}
Дайджест интересных новостей и материалов из мира PHP за последние две недели №10 (26.01.2013 — 11.02.2013)
2013-02-11 в 13:20, admin, рубрики: laravel, mysql, php, symfony, Zend Framework, Zend Optimizer, Блог компании Zfort Group, Веб-разработка, дайджест, Новости, подборка, ссылки, метки: laravel, mysql, PHP, symfony, zend framework, Zend Optimizer, Веб-разработка, дайджест, новости, подборка, ссылки
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Что и в каком объеме нужно знать php программисту
2013-02-11 в 8:54, admin, рубрики: css, html, javascript, mysql, php, Веб-разработка, метки: css, html, javascript, mysql, PHPХочу сразу оговориться данная статья что отображает мое собственное мнение по этому вопросу основанное на личном опыте и не претендует на абсолютную точность. Написана она для тех, кто или только задумывается на карьерой php программиста или думает что бы изучить дальше.
Об одной малоизвестной уязвимости в веб сайтах
2013-02-11 в 6:56, admin, рубрики: http, nginx, php, security, информационная безопасность, метки: http, nginx, PHP, securityПервое правило безопасности при разработке Веб приложений гласит: —
Не доверять данным пришедшим от клиента.
Почти все это правило хорошо знают и соблюдают. Мы пропускаем через валидаторы данные форм, кукисы, даже URI.
Но недавно я с удивлением обнаружил, что есть одна переменная, приходящая от клиента, которую почти никто не фильтрует.
Речь пойдет о компрометации веб приложения через подмену значения HTTP_HOST
и SERVER_NAME
.
Читать полностью »