php5.com.ua - мы знаем о PHP все http://www.php5.com.ua ru info@php5.com.ua php5.com.ua - мы знаем о PHP все <![CDATA[Yii — php-фреймворк]]> http://www.php5.com.ua/blog/frameworks/151.html http://www.php5.com.ua/blog/frameworks/151.html
Данный релиз является результатом более, чем года упорной работы команды разработчиков и сообщества. В него вошли следующие новые возможности и улучшения:

Тестирование на основе PHPUnit.
Построитель форм.
— Возможность создания шкурок для виджетов.
— Улучшен API реляционных запросов ActiveRecord.
— В комплекте теперь поставляется набор расширений Zii, включающий виджеты для jQuery UI и другие полезные компоненты.

Полное руководство по версии 1.1 на русском языке на yiiframework.ru уже находится в актуальном состоянии.

Перевод обновлённого руководства по созданию блога будет завершён немного позже.
Скачать новые версии можно здесь: http://www.yiiframework.com/download/]]>
Thu, 21 Jan 2010 12:31:30 +0200 dodik Yii фреймворк
<![CDATA[Кеширование в Codeigniter при помощи Zend Cache]]> http://www.php5.com.ua/blog/frameworks/112.html http://www.php5.com.ua/blog/frameworks/112.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Codeigniter на столько мощный фреймворк, что приходится пользоваться недофреймфорком Zend Framework, слышал аргумент против Зенд Фреймворка: «это тупо набор классов», скажу, что это нихера не набор классов, а классы в ZF хороши. Поэтому будем пользовать Zend Cache для еширования в Codeigniter.

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

Использование компонента Zend Cache в CodeIgniter неудобно, поэтому решил написать свою библиотеку, которя будет использовать этот механизм кэширования и будет проста в применении с CodeIgniter. Теперь немного опишу своё творение, и расскажу как его применить.

Пример применения библиотеки


Для начала нужно сконфигурировать библиотеку, для этого нужно создать файл cache.php в /aplication/config/ примерно так:

//Путь до библиотеки Zend
$config['path_to_zend']  = '';

//Название фронтэнда
$config['frontend'] = 'Core';
//Название бэкэнда
$config['backend']  = 'File';

//Опции фронтэнда
$config['frontendOption']  = array(
       'lifetime'                  => null,
       'automatic_cleaning_factor' => 0,
       'automatic_serialization'    => true
);

//Опции бэкэнда
$config['backendOption']  = array(
    'cache_dir'              => APPPATH.'cache/',
    'read_control_type'      => 'strlen',
    'file_locking'           => false,
    'hashed_directory_level' => 0,
    'file_name_prefix'         => 'cache'
);


Здесь все ключи массива должны называться как и в документации Zend Cache. Все значения в примере данного конфига демонстрационные, вы сами должны подобрать необходимые для себя параметры.
Теперь библиотека настроена и можно перейти к её применению.
Для загрузки используем уже знакомый нами метод:

$this->load->library('Cache');

Пример 1:


if ( ! $end = $this->cache->load('name_ceche') ) {

    $blog = $this->db->get("blog");
    $category = $this->db->get("category");

    $end['content'] = $blog->result();
    $end['category'] = $category->result();

    $this->cache->save($end, 'name_ceche', array('page1', 'blog'));
}


В первом примере, мы кэшируем целый массив, это возможно если в настройках фронтенда параметр 'automatic_serialization' учтановлен в true.
В таком случае мы можем сохранить в кэш данные примо из базы данных или сразу из нескольких баз данных, либо перед их кэшированием можно как то их обработать что бы не тратить ресурсы сервера потом. Таким образом мы избавляемся от запросов к базе данных (в данном случае двух) и вместо этого подгружаем файл, что выполняется быстрее.

Пример 2:


if ( ! $end = $this->cache->load('name_ceche') ) {

    $blog = $this->db->get("blog");

    $data['content'] = $blog->result();

    $end = $this->load->view('myfile', $data, true);
   
    $this->cache->save($end, 'name_ceche', array('page1', 'blog'));
}


Во втором примере мы видим что кэшируется уже не массив с данными а целая часть страницы. Такой метод позволяет кэшировать данные которые не требуют частого обновления (например список категорий на странице, облако тэгов и т.д.) либо генерация этих данных очень ресурсоёмка и имеет смысл сохранить их на небольшой промежуток времени. И в данном случае опцию 'automatic_serialization' не обязательно устанавливать в true.

Пример 3:


$this->cache->remove('name_ceche');
$this->cache->clean('page1');
$this->cache->clean('blog');


В примере №3 показаны способы удаления кэша который мы создали ранее, в примерах 1 и 2. Но заметьте сделать что это можно сделать разными способами.
С помощью первого метода можно удалить кэш по его уникальному имени, с помощью второго и третьего метода мы сделаем тоже самое но используя ни его имя, а тэги которые были присвоены кэшу. Это позволяет удобно управлять кэшем, например можно удалить кэш категорий только с определённой страницы, задав при сохранении определённые тэги.

Подробную информацию о том для чего определённые настройки и описание бэкендов и фронтэндов не приводил т.к. эта информация есть на русском языке в документации к Zend Cache.

Скачать:
CI-ZendCache.zip]]>
Tue, 28 Jul 2009 18:04:46 +0300 igorok фреймворк CodeIgniter zend framework кеш cache
<![CDATA[Zend DB съедает память]]> http://www.php5.com.ua/blog/frameworks/97.html http://www.php5.com.ua/blog/frameworks/97.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Бывает, так, что валится ошибка и нужно быть телепатом, что бы продетектить эту ошибку. Так было и в этот раз.

При попытке забрать данные при помощи fetch, fetchAll, fetch*, find, findParentRow и т.д… выдает ошибку.

Fatal error: Out of memory (allocated 12058624) (tried to allocate 4294967294 bytes)


То, что это Zend_DB стало понятно немного позже. Zend_DB некорректно работает с типами LONGTEXT И LONGBLOB и эту проблему разработчики zend framework еще не решили. При формировании sql запроса Zend_DB смотрит на типы полей таблицы и пытается выделить память под будущей массив записей для каждой ячейки таблицы в соответствии с ее максимальным размером.

Для справки, размер LONGTEXT 4GB (2 в степени 32 – 1) символов т.е. даже, если размеры ваше таблицы не превышают 10kb, но в ней есть злостное поле LONGTEXT или LONGBLOB, то скорее будет хана.

Рецепт лечения простой — LONGTEXT меняем на MEDIUMTEXT (его размер 16Mb), а еще лучше на varchar(64000), но это совсем другая история:)

Для неверующих и читающих на английском http://framework.zend.com/issues/browse/ZF-1498]]>
Tue, 16 Jun 2009 17:32:21 +0300 igorok zend framework bug php error
<![CDATA[Zend Framework 1.8 Preview Release]]> http://www.php5.com.ua/blog/frameworks/65.html http://www.php5.com.ua/blog/frameworks/65.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Сегодня команда разработчиков Zend Framework выпустила предварительный релиз 1.8.0. Несмотря на то, что окончательный релиз намечен на конец этого месяца, этот релиз представляет собой тяжелый труд многих разработчиков и демонстрирует целый ряд новых мощных компонентов.

Этот релиз предназначен исключительно для ознакомления и не готов к использованию в реальных проектах.

Если вы уже используете Zend Framework, скачайте дистрибутив и оцените все новшества:

1.8 Preview Release (zip)
1.8 Preview Rel.ase (tarball)

Zend_Tool предоставляет инструментарий для работы с Zend Framework. Например уже сейчас вы можете из командной строки выполнять целый ряд задач — таких, как создание структуры проекта, добавления новых ресурсов для проекта, действий и видов для контроллеров, и многое еще. Например, теперь вы можете сделать это:

% zf create project foo

и сгенерировать скелет для нового проекта в каталоге с именем «foo», со следующей структурой:

|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
    |-- application
    |   `-- bootstrap.php
    |-- library
    |   `-- bootstrap.php
    `-- phpunit.xml


В будущем команда ZF добавит еще больше функционала в этом направлении. Респект Ральфу Шиндлер за работу над этим компонентом.

Zend_Application обеспечивает загрузку приложения (бутстрапинг), а также конфигурирование платформы. При использовании Zend_Application, вы будете создавать класс загрузки приложения, который сможет использовать как функционал плагинов так и собственный; С введением Zend_Loader_Autoloader_Resource и Zend_Application_Module_Autoloader, вы сможете использовать автозагрузку для различных классов в ваших модулях — например, модели, формы, и плагины. Это значительно упрощает использование ресурсов из других модулей, а также с использование ресурсов в рамках одного модуля. Респект Ben Scholzen за инициацию Zend_Application и его значительный вклад в этот компонент.

Спасибо всем кто внес свой вклад в этот релиз. Тестируйте и сообщайте о моментах которые можно будет улучшить к моменту выхода финального релиза 1.8 в конце этого месяца! нам знать, что мы можем улучшить для окончательного релиза 1,8 позднее в этом месяце!

Создание каркаса приложения с помощью Zend_Tool (англ.)
Инициализация приложения с помощью Zend_Application (англ.)

Краткий обзор основных моментов релиза 1.8


Zend_Tool — Ralph Schindler
Zend_Application — Ben Scholzen, Matthew Weier O'Phinney
Zend_Navigation — Robin Skoglund
Zend_CodeGenerator — Ralph Schindler
Zend_Reflection — Ralph Schindler and Matthew Weier O'Phinney
Zend_Cache (Zend Server backend) — Alexander Veremyev
Zend_Service_Amazon_Ec2 — Jon Whitcraft
Zend_Service_Amazon_S3 — Justin Plock, Stas Malyshev
Zend_Filter_Encrypt — by Thomas Weidner
Zend_Filter_Decrypt — Thomas Weidner
Zend_File_Transfer, Support for file upload progress support — Thomas Weidner
Zend_Json, expression support — Benjamin Eberlei, Oscar Reales
Zend_Http_Client_Adapter_Curl — Benjamin Eberlei
Zend_Search_Lucene (Support for searching across multiple indexes) — Alexander Veremyev
Zend_Pdf (Support for page scaling, shifting and skewing) — Alexander Veremyev
Zend_Validate_Int and Zend_Validate_Float (Locale support) — Thomas Weidner
Zend_Locale (Phonecode support) — Thomas Weidner
Zend_Validate_Iban — Thomas Weidner
Zend_Validate_File_WordCount — Thomas Weidner
Support for keyword field search using query strings — Alexander Veremyev
Translation-aware routes — Ben Scholzen
SOAP input and output header support — Alexander Veremyev]]>
Thu, 09 Apr 2009 15:12:08 +0300 igorok zend framework
<![CDATA[Добавлена документация]]> http://www.php5.com.ua/blog/frameworks/28.html http://www.php5.com.ua/blog/frameworks/28.html документация по Zend Framework 1.7.3 ]]> Thu, 29 Jan 2009 23:50:06 +0200 igorok документация zend framework <![CDATA[Проблемы отображения Datepicker в Dialog (JQuery фреймворк)]]> http://www.php5.com.ua/blog/frameworks/21.html http://www.php5.com.ua/blog/frameworks/21.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Наверно, это баг:) Когда вызываешь диалоговое окно (в моем случае оно было модальным) и в нем пытаешься вызвать Datepicker(календарик для выбора даты), то календарик оказывается под диалоговым окном. Естественно, пользоваться таким календариком не очень удобно:)

Первое, что пришло в голову — z-index. Оно и естественно, как фиксить?

Из того, что нашел — все сводилось к допиливанию кода именно JQuery, я противник такого варварства, т.к. не известно, где это может всплыть (это же говно:)).

Сделал так:

$(function() {
        $("#date_publish").datepicker();//собственно вызов нашего календаря
        $("#ui-datepicker-div").css("z-index", 1000000); //задаем z-index
});
]]>
Fri, 16 Jan 2009 12:27:46 +0200 igorok jquery фреймворк JavaScript dialog datepicker
<![CDATA[Роуты в Zend Framework и официальная документация]]> http://www.php5.com.ua/blog/frameworks/20.html http://www.php5.com.ua/blog/frameworks/20.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Когда разбирался с роутами в фреймворке, естественно читал документацию.

Столкнулся с такой проблемой, что пример кода из документации не хотел работать


// Создание маршрутизатора

$router = $ctrl->getRouter(); // по умолчанию возвращает rewrite router
$router->addRoute(
    'user',
    new Zend_Controller_Router_Route('user/:username',
                                     array('controller' => 'user',
                                           'action' => 'info'))
);
 


Начал рыть, не давала покоя переменная $ctrl. Я думал, что она где-то объявлена в фреймворке, потом выше кода в документации прочитал

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

В общем нужно инстанцировать:)

В начале кода добавляем:

$ctrl  = Zend_Controller_Front::getInstance();


Опять же, подразумевается, что у вы все, что надо заинклудили, в итоге получаем такой пример, который будет работать:


set_include_path('../library' . PATH_SEPARATOR . get_include_path());

require_once 'Zend/Controller/Front.php';    
require_once 'Zend/Controller/Router/Route.php';    

$ctrl  = Zend_Controller_Front::getInstance();

// Создание маршрутизатора

$router = $ctrl->getRouter(); // по умолчанию возвращает rewrite router
$router->addRoute(
    'user',
    new Zend_Controller_Router_Route('user/:username',
                                     array('controller' => 'user',
                                           'action' => 'info'))
);
 


Удачи в изучении документации:)]]>
Sun, 11 Jan 2009 23:28:45 +0200 igorok zend framework фреймворк route
<![CDATA[плагин Star Rating для JQuery]]> http://www.php5.com.ua/blog/frameworks/19.html http://www.php5.com.ua/blog/frameworks/19.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Есть такой интересный плуг для организации оценок всего чего угодно в один клик под яваскриптовый фреймворк JQuery.

Здесь можно скачать и посмотреть на него.
http://plugins.jquery.com/project/MultipleFriendlyStarRating

http://www.fyneworks.com/jquery/star-rating/

Проблема с которой я столкнулся — невозможность задизейблить звезды после того, как пользователь проголосовал. Как минимум это приводит к заблуждению пользователя.

Решение:


$('.auto-submit-star').rating({
                callback: function(value, link){
                        // 'this' is the hidden form element holding the current value
                        // 'value' is the value selected
                        // 'element' points to the link element that received the click.
                        $("#form-rating").ajaxSubmit({
                                success:function(data) {
                                        //именно здесь начинаем дизейблить звезды
                                        $("div", "#form-rating")
                                        .removeClass("star_live")
                                        .addClass("star_readonly")
                                        .unbind("mouseover")
                                        .unbind("mouseout")
                                        .unbind("click");
                                        //здесь закончили
                                        $('#message').text("Your vote was counted");
                                },
                                error:function(data) {
                                        form.fadeOut("slow");
                                        $('#message').text("Error!");
                                }
                        });
                }
        });
 
]]>
Fri, 09 Jan 2009 18:17:25 +0200 igorok jquery star rating JavaScript
<![CDATA[Akismet библиотека для фреймворка CodeIgniter]]> http://www.php5.com.ua/blog/frameworks/11.html http://www.php5.com.ua/blog/frameworks/11.html /** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.php {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;} .php.php a:link {color: #000060;} .php.php a:hover {background-color: #f0f000;} .php.php .imp {font-weight: bold; color: red;} .php.php .kw1 {color: #b1b100;} .php.php .kw2 {color: #000000; font-weight: bold;} .php.php .kw3 {color: #990000;} .php.php .co1 {color: #666666; font-style: italic;} .php.php .co2 {color: #666666; font-style: italic;} .php.php .co3 {color: #0000cc; font-style: italic;} .php.php .co4 {color: #0000ff; font-style: italic;} .php.php .coMULTI {color: #666666; font-style: italic;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .es_h {color: #000099; font-weight: bold;} .php.php .br0 {color: #009900;} .php.php .sy0 {color: #339933;} .php.php .st0 {color: #0000ff;} .php.php .st_h {color: #0000ff;} .php.php .nu0 {color: #cc66cc;} .php.php .nu8 {color: #208080;} .php.php .nu12 {color: #208080;} .php.php .nu19 {color:#800080;} .php.php .me1 {color: #004000;} .php.php .me2 {color: #004000;} .php.php .re0 {color: #000088;} .php.php span.xtra { display:block; } Akismet это удаленный антиспам веб-сервис.

Если для построения своих приложений вы используете фреймворк CodeIgniter и у вас есть комментарии к статьям, то рассмотренная ниже библиотека защитит вас от спамеров при помощи сервиса Akismet.

Для пользования сервисом Akismet необходимо получить API ключик у них на сайте.

Скачайте библиотеку и положите у себя по адресу application/libraries/.

Как использовать в контроллере:


$this->load->library('akismet');
 
$comment = array(
'author'        => $this->input->post('name'),
'email'         => $this->input->post('email'),
'website'       => $this->input->post('website'),
'body'          => $this->input->post('comment')
);
 
$config = array(
'blog_url' => 'http://www.yoursite.com/',
'api_key' => 'yourapikeyhere',
'comment' => $comment
);
 
$this->akismet->init($config);
 
if ( $this->akismet->errors_exist() )
{                              
        if ( $this->akismet->is_error('AKISMET_INVALID_KEY') )
        {
        log_error('AKISMET :: Проблемы с api ключем');
        }
        elseif ( $this->akismet->is_error('AKISMET_RESPONSE_FAILED') )
        {
        log_error('AKISMET :: Сервер не отвечает');
        }
        elseif ( $this->akismet->is_error('AKISMET_SERVER_NOT_FOUND') )
        {
        log_error('AKISMET :: Сервер не найден');
        }
 
        // Если сервер в дауне, мы просто постим коммент
        $this->_post_comment($comment);
        $this->load->view('thankyou');
}
else
{
        if ( $this->akismet->is_spam() )
        {
                $this->load->view('spam');
        }
        else
        {
                $this->_post_comment($comment);
                $this->load->view('thankyou');
        }
}
 


Скачать библиотеку Akismet]]>
Wed, 17 Dec 2008 21:25:29 +0200 igorok Akismet CodeIgniter фреймворк библиотека
<![CDATA[Новый раздел Jquery плагины и решения]]> http://www.php5.com.ua/blog/frameworks/10.html http://www.php5.com.ua/blog/frameworks/10.html Jquery плагины и решения — открыт новый раздел. Здесь будут публиковаться интересные решения использования Java Script фреймворка JQuery и плагинов под него.]]> Tue, 16 Dec 2008 00:32:28 +0200 igorok jquery