Архивы за месяц: августа 2010

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

Владимир | | PHP, Web разработка, WordPress.

wp-xmlrpc-extended

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

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

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

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

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

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

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

Владимир | | JavaScript, PHP, Web разработка.

loginza

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

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

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

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

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

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

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

Владимир | | HTML, JavaScript, PHP, Web разработка.

swfupload

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

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

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

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

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

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

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

Владимир | | PHP, Web разработка, Yii.

yii rbac

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

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

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

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

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

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

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

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