Категории: PHP

Загрузка файлов с помощью 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, то выяснилось, что есть множество нюансов, которые приходится учитывать при работе с этой библиотекой. Ничего запредельно сложного и недоступного для понимания, но «ковырялся» я довольно долго 😉
Читать дальше

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

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

yii grid view

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

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

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

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

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

Владимир | | CodeIgniter, PHP, Web разработка, Разное.

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

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

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

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

Yii PHP фреймворк: оформление административных страниц

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

yii grid view

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

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

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

Yii PHP framework: создание запросов с условием IN

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

yii in condition

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

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

Рассмотрим небольшой пример – использование оператора IN.

Т.е. нужно сформировать примерно такой запрос.

SELECT * FROM tbl_users WHERE id IN (1, 2, 3)

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

WordPress плагин для внутренней перелинковки страниц сайта. Версия 3.

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

wp terms descriptions 3 logo

Знаете, всегда очень приятно, когда кто-то проявляет внимание к твоей работе и помогает полезными советами. Сразу появляется желание что-нибудь сделать 😉

Так примерно месяц назад я написал и выложил первую версию плагина Terms Descriptions. Практически сразу же появилось множество отзывов и пожеланий, были найдены баги.

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

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

В общем-то, я думал, что плагин решает свою узкую задачу в полном объеме… Но один из читателей этого блога (по имени Турист) объяснил мне, что это не так 🙂
Читать дальше

Yii фреймворк: получение статистики перехода по ссылкам от сервиса Bit.ly

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

yii bitly

Сегодня продолжим тему использования сервиса Bit.ly вместе с PHP фреймворком Yii. В прошлой части мы рассмотрели создание коротких ссылок для страниц вымышленного сайта с новостями.

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

Приступим.
Читать дальше

Использование сервиса Bit.ly вместе с PHP фреймворком Yii

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

yii bitly

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

Во-первых, длина ссылки и текста может превысить 140 символов. Т.е. ссылку лучше сразу сократить.

Во-вторых, будет сложнее отслеживать статистику переходов.

Поэтому гораздо удобнее использовать специализированные сервисы, например, Bit.ly. Этот сервис предоставляет API как для создания ссылок, так и для получения статистики переходов по ним.

Теперь рассмотрим небольшой пример.
Читать дальше

WordPress плагин для внутренней перелинковки страниц сайта. Версия 2.

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

wp terms descriptions 2

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

Прежде всего, хочу поблагодарить всех, кто участвовал в обсуждении и тестировании моего плагина «Terms Descriptions». Вы подсказали мне несколько хороших идей, которые я реализовал в новой версии плагина.

Сразу даю ссылку на архив.

Source

Новые возможности.
Читать дальше