Создаём валютный информер с помощь PHP и JavaScript

31 октября, 2010
exchange rates

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

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

Результат, который должен получиться, можно посмотреть на демонстрационной страничке или запустив пример из архива.

демонстрационный пример архив с исходным кодом

Подключение информера

Читать дальше »

Опубликовано в Ajax, HTML, JavaScript, PHP, Web разработка | Комментарии (14) »

Особенности подключения JS скриптов в WordPress

10 октября, 2010
wordpress scripts

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

Один из таких примеров – подключение JavaScript кода в WordPress.

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

Кстати, аналогичные возможности есть и в различных фреймворках, например, Yii.

Но разница между фреймворком и WordPress в том, что с помощью последнего можно создать сайт, не читая документацию, во всяком случае, ту часть, которая касается API. В этом нет ничего плохого, но можно столкнуться с некоторыми нюансами. О них речь пойдет ниже.

Основные проблемы и причины их появления

Читать дальше »

Опубликовано в JavaScript, PHP, Web разработка, WordPress | Комментарии (11) »

Как «подружить» сервис Loginza и фреймворк Yii

29 сентября, 2010
loginza yii

Постоянные читатели этого блога, наверное, помнят, что и о фреймворке Yii, и о сервисе аутентификации Loginza я раньше рассказывал. Найти эти статьи несложно: Yii, Loginza.

Но в статье о Loginza, речь шла о протоколе обмена данными с сервисом, а вопрос аутентификации остался «за бортом». Я, конечно, объяснил когда нужно создавать сессию, но на практике этого явно недостаточно ;)

В этой статье я постараюсь исправить этот недостаток и покажу пример аутентификации пользователя с помощью сервиса Loginza.

Прежде всего, определим требования к такой системе.
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | Комментарии (39) »

Yii фреймворк: установка дефолтных параметров для виджетов

27 сентября, 2010
yii widget parameters

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

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

Например, у нас есть файлы.
protected/components/MyWidget.php – класс виджета
и
protected/components/views/myWidget.php – представление.

Класс виджета может выглядеть примерно так.
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | Комментарии (21) »

WordPress расширение возможностей встроенного XML-RPC сервера

30 августа, 2010
wp-xmlrpc-extended

Приветствую всех!

Тема публикации работы с движком WordPress через XML-RPC протокол обсуждается довольно часто. Пожалуй, это самый удобный способ удаленной публикации постов. Но, если вы хоть раз использовали эту возможность, то, скорее всего, заметили, что встроенный XML-RPC сервер поддерживает далеко не все возможности движка.

К тому же в последних версиях появилась возможность создавать собственные типы данных, и было бы удобно иметь возможность нормально работать с ними через XML-RPC.

Сегодня я покажу небольшой пример создания собственного XML-RPC сервера для WP.

Примечание. Если вы раньше не работали с XML-RPC, то, думаю, вам будет интересно почитать статьи Публикация постов в WordPress с помощью XML-RPC и CodeIgniter и Отложенная публикация постов в WordPress с помощью XML-RPC.

Прежде всего, сформулируем задачу.
Читать дальше »

Опубликовано в PHP, Web разработка, WordPress | Комментарии (4) »

Аутентификация с помощью социальных сервисов и OpenId (Loginza)

26 августа, 2010
loginza

Приветствую всех!

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

Большой проблемы здесь, конечно, нет. На официальных сайтах вы легко найдете документацию для разработчиков (обычно с примерами) и сможете начать работу. Более того, сервисы вроде Facebook предлагают готовые решения, которые достаточно просто подключить к сайту и не разбираться с протоколом обмена данными.

Но если вам нужно обеспечить поддержку максимально большого количества сервисов, то объем работы резко возрастает.

Но недавно я наткнулся на один очень интересный сервис под названием Loginza, предназначенный для решения именно этой задачи. И хочу показать небольшой пример работы с ним.

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

Опубликовано в JavaScript, PHP, Web разработка | Комментарии (23) »

Загрузка файлов с помощью SWFUpload и PHP

14 августа, 2010
swfupload

О загрузке файлов на сервер рассказывается, наверное, в каждой книге о веб разработке. Обычно при этом приводится пример формы с тегом input type=file и объясняется, как работать с массивом $_FILES на стороне сервера. Это классический вариант. Он отлично работает, но имеет несколько ограничений.

1) Чтобы загрузить несколько файлов, нужно создать несколько тегов input. При этом пользователь должен будет выбирать каждый файл отдельно, что довольно неудобно при большом количестве файлов.

2) Невозможно показать процент загрузки файла.

3) Загрузка нескольких файлов будет выполнена в одном запросе. Тут нет ничего плохого, но может возникнуть проблема, если на сервере установлены ограничения на максимальный объем запросов и время выполнения скриптов.

4) Загрузка не будет асинхронной, т.е. произойдет перезагрузка страницы.

На сегодняшний день существует два основных варианта решения этих проблем. Использование iframe или flash (по-идее, silverlight тоже можно использовать для этих целей).
Читать дальше »

Опубликовано в HTML, JavaScript, PHP, Web разработка | Комментарии (119) »

Yii PHP framework: контроль доступа с использованием ролей (RBAC)

6 августа, 2010
yii rbac

Я думаю, все, кто хоть немного работал с фреймворком Yii знают, что он поддерживает возможность разграничения прав доступа на основе ролей.

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

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

if (!Yii::app()->user->checkAccess('createUser')) {
	throw new CHttpException(403, 'Forbidden');
}
//остальной код…

В теории всё просто. Но на практике, документации и примеров по этой теме практически нет (надеюсь, это скоро изменится).

Основные источники информации (на русском): Аутентификация и авторизация и RBAC и описание ролей в файле. На английском хороших и подробных примеров, к сожалению, я не нашел.

Примечание. Очень советую прочитать эти статьи, прежде чем переходить к моему примеру.

Когда я первый раз решил использовать RBAC, то выяснилось, что есть множество нюансов, которые приходится учитывать при работе с этой библиотекой. Ничего запредельно сложного и недоступного для понимания, но «ковырялся» я довольно долго ;)
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | Комментарии (28) »

CGridView. Часть вторая. AJAX.

25 июля, 2010
yii grid view

В этой части я хочу рассказать о некоторых особенностях реализации AJAX запросов в компоненте CGridView.

Предположим, у нас есть таблица, и мы создали для неё модель и скрипты для выполнения CRUD операций (с помощью встроенного генератора Yii).

Пусть таблица называется countries, содержит список стран с двумя полями (id, name).

В этом случае, страница управления записями будет доступна адресу
Читать дальше »

Опубликовано в Ajax, PHP, Web разработка, Yii | Комментарии (27) »

Неожиданное обновление CircleTasks

13 июля, 2010

Постоянные читатели этого блога, наверное, помнят, что некоторое время назад (прошло почти 10 месяцев :) ) я опубликовал несколько постов о разработке TODO скрипта под названием CircleTasks. Там же были выложены исходники и ссылка на демо версию.

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

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

И, совсем недавно, я узнал, что оказывается не я один пользуюсь этой системой :)
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка, Разное | Комментарии (12) »