Сравнить два массива на PHP

Возникла задача сравнить на PHP два массива на полную идентичность. Т.е. не только совпадение ключей и значений, но и проверить последовательность расположения элементов относительно друг друга. И все еще усугублялось вложенностью массивов. Доходило до четырехмерного массива и больше.
В результате родилась вот такая функция.
Читать далее

Рубрика: Работа | Метки: , | Оставить комментарий

Еще про Gmail и POP3

Как я уже писал получать почту с Gmail через POP3 не проблема. Но POP3 на Gmail работает довольно хитрым образом. При запросе письма через команду GET протокола POP3 это письмо «отмечается» как «прочитанное» и при следующем запросе его уже как бы нет в списке писем.
В общем-то относительно логично, хотя и противоречит концепции POP3. Но при таком подходе довольно сложно производить отладку приложений работающих с почтой и практически невозможна работа нескольких клиентов. Видимо для таких случаев и был придуман «recent» режим.
Читать далее

Рубрика: Работа | Метки: , , | Оставить комментарий

PHP, libCURL, cURL и OpenSSL сертификаты

При использовании SoapClient работающего по HTTPS возникла проблема в том что не удавалось загрузить WSDL и инициализировать клиент.
Причем через браузер файл WSDL отдается нормально — только с предупреждением о невалидном сертификате. Оказалось что разработчики сервера не стали заморачиваться с сертификатами и просто подписали его самостоятельно.

Как показало небольшое расследование SoapClient в PHP использует libcurl для работы с HTTPS. А cURL в свою очередь видит невалидный сертификат и отказывается качать файл.
Можно очень просто научить cURL игнорировать валидность сертификата. Но как сделать это через SoapClient я не нашел.

Попросить сервер отдавать валидный сертификат так же невозможно. Впрочем как и убрать поддержку cURL из текущей сборки PHP.

Остается один путь — научить локальный cURL в этой связке воспринимать имеющийся сертификат как валидный.
Читать далее

Рубрика: Работа | Метки: , , , | Оставить комментарий

Создание Excel файла из PHP скрипта

Как-то так получилось, что c давних пор я считал генерацию файла Excel (.xls) из скриптов PHP сложной и нудной работой. Формат был закрыт, да и нормальных библиотек не найдешь. Из «адекватных» вариантов было либо использование библиотек на Perl, либо создание «переходных» форматов (csv, xml, html) которые мог бы импортировать Excel.

Но как оказалось все меняется…
Читать далее

Рубрика: Полезности, Фриланс | Метки: , , , | Оставить комментарий

pop.gmail.com

Понадобилось забирать почту по POP3 с аккаунта на Gmail. Основная проблема в том что подключится можно только с поддержкой SSL. Помню что как-то давно использовал для аналогичной задачи какую-то навороченную библиотеку на Perl. А сейчас вот желательно нужно на PHP. Использование обычного класса не помогает — выдает ошибку соединения. Начал уже искать какую-нибудь монстроидальную библиотеку и думать о том не перейти ли на IMAP… Читать далее

Рубрика: Полезности, Работа | Метки: , , | 1 комментарий

Проверить что e-mail дошел

Появилась вот задача: определять что письмо отправленное по электронной почте дошло до адреса.

Следует сразу сказать что SMTP никому и ничего не гарантирует. Но есть пути все таки определить что письма доходят или не доходят.
Читать далее

Рубрика: Работа | Метки: , , , | Оставить комментарий

CodeIgniter: начало

Начал я тут смотреть в сторону CodeIgniter. Говорят очень хороший FrameWork. Скачалось 🙂 и установилось на раз-два-три. А вот дальше какой-то ступор — не пойму я их идеалогию. Верней с наскока понять не могу, а читать и вникать пока времени нет. Но будем пробовать.

Рубрика: Жизнь, Полезности | Метки: , | Оставить комментарий

YML для Яндекс-маркета

Делал очередной скрипт для выгрузки товаров в Яндекс-маркет. Делал для zen cart — но это большой роли не играет. Столкнулся с тем фактом что сервер несмотря на указание кодировки в заголовках
header("Content-Type: application/xml; charset=windows-1251");
все равно упорно отдавал utf-8.
В свою очередь Яндекс смотрел в загловке, что идет кодировка utf-8 и выкидывал ошибку о том что локаль неверная и он отказывается работать.
Просматривая справку по функции header наткулся на пример, который привел меня к стоящей мысли. В результате YML стал отдавать не как страницу, а как файл для скачивания. Для этого добавил строку
header("Content-Disposition: attachment; filename=\"price.xml\"");
И в результате Яндекс маркет съел этот YML файл без всяких возражений.

Рубрика: Фриланс | Метки: , , | Оставить комментарий

Joomla от 1.5 к 1.6

Итак, итоги перехода от Joomla 1.5 к Joomla 1.6 на примере отдельно взятого компонента. Все получилось. А теперь выводы.
Читать далее

Рубрика: Фриланс | Метки: , | Оставить комментарий

Joomla 1.6

Посмотрел тут новую версию joomla — 1.6.0. Надо будет заставить работать под ней пару компонентов.
Глубоко пока не залазил, но некоторые впечатления сложились.
1. Теперь для установик нужен PHP версии 5.2.4 и старше. Мелочь конечно, но на некоторых хостингах до сих пор стоит 4-ая версия.
2. Внешне система стала поприятней. Поменяли дизайн админки. Да и шаблон «морды» по умолчанию стал получше.
3. Судя по всему в 1.6 отказались от поддержки глобальной переменной $mainframe. Если это так, то почти все компоненты «идут лесом» — т.е. на отладку и переписывание. Совместимости похоже никакой.

Пока вроде бы все, но дальше думаю будет больше.

Рубрика: Фриланс | Метки: | Оставить комментарий