Категории: PHP

История одного мини теста или почему не стоит изобретать велосипед

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

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

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

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

Выполнить поиск в базе – не проблема. Но меня заинтересовал другой вопрос. Не будет ли быстрее искать данные в текстовом файле, а не базе?
Читать дальше

Как подключить Gravatar (PHP скрипт)

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

Сервис Gravatar за последнее время стал очень популярным. Даже в админке WordPress’а теперь отображаются аватары комментаторов. Кстати, довольно удобно. Но речь не о WP.

В этой заметке я расскажу, как добавить Gravatar на собственную web страницу.

Для того чтобы получить картинку, вам нужно указать несколько параметров и на их основе сформировать URL. Рассмотрим их подробнее:

1) eMail пользователя, иконку которого вы хотите добавить.
2) Размер иконки (в пикселях).
3) Рейтинг иконок, которые вы разрешаете показывать. Сервис позволяет присвоить иконке рейтинг, на основе которого можно отфильтровать неприличные или содержащие ненормативную лексику аватары.
4) URL картинки, которая будет загружена если gravatar отсутствует.

Теперь напишем функцию, формирующую URL.
Читать дальше

Объектно-ориентированное программирование на PHP. Сортировка объектов средствами SPL.

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

К сожалению, использование объектно-ориентированных возможностей PHP встречается не так часто, как хотелось бы. Конечно, тут есть объективные причины, например, не все хостеры предоставляют PHP5 (именно с этой версии появилась нормальная поддержка ООП).

К тому же, огромное количество PHP скриптов написано без использования ООП. И во многих случаях нет необходимости их переписывать.

Но ООП – это не «модная фишка». Эта парадигма программирования при правильном использовании позволяет сделать php скрипты понятнее, сократить количество ошибок, и, самое главное, увеличить скорость разработки (за счет повторного использования кода).

В этой заметке я хочу рассказать о нескольких таких возможностях и показать пример работы с SPL (StandardPHPLibrary).

Предположим, у нас есть задача, нужно отсортировать массив. Ничего сложного, можно просто использовать функцию sort.

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

Разработчики CodeIgniter вводят правила оформления кода

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

В документации к новой версии CodeIgniter 1.7 появился новый раздел General Style and Syntax (Общий стиль и синтаксис). В нем описаны рекомендации по оформлению кода при разработке с использованием CodeIgniter.

Релиз этой версии фреймворка еще не вышел. Поэтому скачать ее можно только из репозитория Subversion по адресу (http://dev.ellislab.com/svn/CodeIgniter/trunk/). А страница документации с рекомендациями находится здесь.

Пересказывать их все нет смысла. Большую часть этих правил и так все соблюдают. Но вот некоторые – довольно интересны. О них я и расскажу.
Читать дальше

Поддержка тем в CodeIgniter

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

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

Примечание. Если вы не знакомы с этим фреймворком, то сначала вам стоит почитать статью «Как создать свой сайт на PHP? Или зачем нужны фреймворки?».

Прежде всего, сформулируем задачу:

1) контроллер должен оставаться неизменным при использовании любой из тем;

2) файлы тем должны находится в отдельных папках;

3) минимальная нагрузка на систему (т.е. шаблонизаторы и дополнительные библиотеки не используем).

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

Отсюда вытекает простейший вариант решения задачи. Читать дальше

Эффективное использование Eclipse

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

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

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

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

Самое обидное – это когда пользуешься программой полгода, а потом натыкаешься на какую-нибудь полезную возможность и думаешь: «Сколько я времени мог сэкономить, если б знал о ней раньше».

В этой статье я хочу рассказать о своем опыте использования Eclipse для разработки на PHP.
Читать дальше

Ускоряем работу с CodeIgniter. Шаблоны для Eclipse.

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

В одном из прошлых постов я выкладывал свои шаблоны Eclipse для создания комментариев.

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

Установка шаблонов стандартная.

1) Качаете архив с шаблонами (ссылка в конце поста) и распаковываете его.

2) Запускаете Eclipse и заходите в меню Window -> Preferences.

3) В левой части окна выбираем PHP -> Templates (см. скриншот).

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

Блокировка доступа к элементам web страницы

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

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

Библиотека называется jQuery BlockUI Plugin и, как следует из названия, представляет собой плагин к jQuery.

Принцип работы следующий. Библиотека создает дополнительный слой (overlay) над всей страницей или каким-то блоком на ней.

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

Если вы видели, как работают библиотеки типа Lightbox, то представляете, о чем идет речь.

Приведу простой пример. Допустим, необходимо заблокировать доступ к странице на время выполнения Ajax запроса.
Читать дальше

Публикация постов в WordPress с помощью XML-RPC и CodeIgniter

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

Движок WordPress буквально «нашпигован» различными функциями и возможностями. В этой статье я расскажу, как написать небольшое web приложение, из которого вы сможете публиковать посты в ваш блог.

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

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

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

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

Эта статья больше ориентирована на второй вариант.
Читать дальше

Уязвимости в MySQL и SQL запросах

Владимир | | MySQL, PHP, Web разработка, Безопасность.

Эта заметка – вольный перевод статьи Stefan Esser MySQL and SQL Column Truncation Vulnerabilities.

SQL-инъекции (SQL-injection) на сегодняшний день остаются наиболее обсуждаемыми проблемами безопасности web приложений.

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

Первая уязвимость касается движка MySQL
Читать дальше