Архив Тэгов: PHP

Валидатор кирилицы в Zend Framework

Вопрос валидации кириллицы в Zend Framework встал остро, но ни один стандартный валидатор Zend Framework текста не предусматривает ее наличие и проверку в тексте.

Решение вопроса в следующей функции:

public function validCyrillic($string)
    {
        $zv = new Zend_Validate_Regex(array('pattern' => '/^[а-яА-Яa-zA-Z\.\d\s]*$/'));
        return $zv->isValid($string);
    }

Все до боли просто — валидатор сделал и стандартного валидатора Regex для регулярных выражений.

Мою проблему решило. Надеюсь и Вам поможет. Можно, используя регулярные выражения, проверять различные структуры данных (ощутил себя К.О. :) )

Установка ZFDebug

Ранее я писал краткий обзор на тему ZFDebug. Сейчас напишу об установке его на ZF. Итак, установка ZFDebug. Ее процесс крайне прост. читать далее »

MediaWiki: где же находятся файлы шаблонов?

Доброго времени суток.

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

И вот тут меня ждал сюрприз. После тщетных попыток поиска чего либо в интернете на эту тему. начал искать просто по папкам. Не первый день работают с разного рода CMS и сразу начал искать что-то либо напоминающее templates или layouts… А не тут то было.. Не нашел! читать далее »

Краткий обзор ZFDebug — дебагера для Zend Framework

Доброго времени суток.

Наткнулся в сети на ZFDebug на Google. Почитал, полистал — оказалось очень полезная штука для сбора информации при запуске проектов на Zend Framework.

Выдает общую информацию по используемым в процессе выполнения ресурсам. Для начала вот как это все выглядит.

Общий вид панели:

читать далее »

Переводим CodeIgniter на PHP 5.3

Доброго времени суток.

Возникла задача переноса сайтов с сервера с PHP 5.2 на сервер с PHP 5.3. Гладкого перехода и не ожидалось, тем более что во многих статьях об этом писалось. Вот с чего следует начать… читать далее »

UMI.CMS vs Kaspersky: мозг WIN

Доброго времени суток.

Ранее в статье UMI.CMS vs Kaspersky: кто круче? я писал о том, что UMI.CMS и Kaspersky не подружились на наших компьютерах из-за баннеров.

Не долго думая, было найдено простое решение это проблемы. читать далее »

UMI.CMS Start может больше

UMI.CMSДоброго времени суток.

Есть у меня один сайт на UMI.CMS. Использую бесплатную версию. В целом все устраивает, но возникла необходимость написать свой модуль, ну или хотя бы его подобие модуля. Мне в частности понадобился WHOIS. Решил попробовать прикрутить его как модуль системы. Но, как и говорится в описании, модули писать свои нельзя с этой версией — при добавлении этого модуля в систему ничего не происходило, он не регистрировался. А для использования его внутри текста страницы он должен быть зарегистрирован в системе, система должна знать про его существование и пути до исполняемых файлов.

НО… Часть модуля — статическая форма, которая находится на каждой странице. Я ее, конечно, разместил в шаблоне страниц и … О чудо! Она отобразилась!

Можно сделать следующие выводы: модуль работает, но его содержимое выводится только в шаблон. Значит можно просто сделать для страницы данного модуля свой шаблон и поместить вместо %content% нужный шаблон. Парсинг его прочитает и выполнит. Проверено :)

На основе этого, на мой взгляд, не сложно сделать, например, свой модуль каталога или модуль фото-галереи, используя возможности .htaccess.

В одной из следующих статей  я расскажу, как сделать так, чтобы в бесплатной версии UMI.CMS можно было нормально регистрировать модули. Эта фича была замечена мною позже и еще не изучена. В общих чертах — я просто поверх своей бесплатной версии накатил код платной версии. Это очень «в общих чертах». Но это уже совсем другая история…

Авторизация PHP при помощи LDAP: библиотека adLDAP

Доброго времени суток.

Потребовалось написать небольшой сервис для локальной сети организации. А сети есть Active Directory (далее AD). Возникла идея не создавать базу пользователей, а воспользоваться уже существующей и заполненной базой.

Для этого дела нашлась в сети в сети библиотека adLDAP. Предназначена для взаимодействия PHP и AD. Как оказалось, крайне удобная библиотека. Ее надо только настроить, и она будет служить верой и правдой. Для этого надо знать полный адрес в сети Вашего сервера AD (или нескольких). Из него можно получить суффикс доменный. По имени большинства настраиваемых переменных можно понять для чего они, и что должно находиться в них.

Вот некоторый из них:

  • accountSuffix — суффикс учетной записи
  • baseDn — разбор названия домена. Например mydomen.local будет DC=mydomen,DC=local
  • domainControllers — массив, содержащий полные имена серверов AD  в Вашей сети
  • adminUsername и adminPassword  - для моих целей не понадобились и имели значение NULL оба. Для аутентификации в AD этого вполне достаточно. Судя по комментам к переменным — они должны содержать логин и пароль пользователя с высокими привилегиями. Наверняка, будут необходимы для получения списков пользователей или групп, например.

Это базовые настройки класса, которые позволят подключиться к Вашему домену.

Пример использования есть по ссылке, приведенной выше. Там же и код этого класса. Документация по API здесь.

Вот собственно и все. Буду дальше его использовать, разбираться — обязательно напишу что-нибудь новенькое о нем.

Возможные проблемы с установкой 1С-Битрикс на хостинг

Доброго времени суток.

Честно признаюсь — по моему мнению Битрикс полный кошмар… Но люди его охотно ставят и пользуются. По этому решил описать возможные проблемы с установкой 1С-Битрикс на хостинг, с которыми приходилось сталкиваться

По теме: при установке на хостинг он весьма требователен. Может попросить, а временами и приказать поменять некоторые атрибуты в конфигурации сервера. А именно:
open_basedir, realpath_cache_size, прекомпилятор (акселератор PHP), mbstring.internal_encoding и другие. Все перечислять не буду. Проблема состоит в том, что все эти настройки можно поменять только в php.ini. Попробую описать, что каждая из перечисленных мною представляет. Начнем с последней.

  • mbstring.internal_encoding — определяет, какая кодировка используется по умолчанию внутри, для Битрикса необходимо значение utf-8.
  • Прекомпилятор- акселератор PHP. Выдержка из Wikipedia:программа, ускоряющая исполнение сценариев PHP интерпретатором путём кэширования их байткода.Иными словами эта штука компилирует код, кэширует скомпилированную версию и при обращении к скрипту, выполняет его скомпилированную копию из кэша. Прекомпилятор является необязательным — Битрикс ставится и без него.
  • realpath_cache_size — кэш, в котором хранятся абсолютные пути к выполняемым файлам. Это позволяет уменьшить время, затрачиваемое на резрешение путей, что на мой взгляд дает прирост производительности при большом количестве посещений. Доступно с версии PHP 5.1.0 (в некоторых источниках пишут с 5.2). По умолчанию стоит 16 Кб, это маловато мягко говоря для Битрикса. Он просит не менее 4096 Кб. Цифра большая, и, судя по всему, рассчитанная на большое количество хитов.
  • open_basedir — путь, выше которого клиентские скрипты на хостинге пройти не смогут. Битрикс требует, чтобы путь уходил в корень, т.е. доступ ко всему жесткому диску. На самом деле папки tmp вроде бы должно хватать. Если честно с этим не особо экспериментировал, так что точно утверждать не стану. Скажу только, что Битрикс при установке часто ругается.

Пока вроде бы все из тех, что мне встречались и мешали «жить». Если появятся еще какие — обязательно дополню.

Получение прямой ссылки на видео YouTube.

Доброго времени суток.

Решил выделить из предыдущего поста отдельную функцию для получения видео только из YouTube. Видео с этого видеохостинга можно получить, имея ID видео в системе. Что-то около 10 символов абракадабры. Вот результат:

function getVideoUrl($id)
{
    $formats = array('18', '22', '37', '38');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.youtube.com/get_video_info?video_id=' . $id);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $links = curl_exec($ch);
    curl_close($ch);
    parse_str($links, $info);
    if ($info["status"] == 'fail') {
        $video_array[] = '';
        return;
    }
    $res = explode(',', $info['url_encoded_fmt_stream_map']);
    foreach ($res as $k => $v) {
        parse_str($v, $rr);
        if (in_array($rr['itag'], $formats)) {
            $video_array[] = $rr['url'];
        }
    }
    return $video_array;
}

Это так сказать «частный» вариант функции, только для YouTube. Вариант сделан из предыдущей статьи, так что тоже для получения исключительно файлов формата mp4.

Яндекс.Метрика