Архивы за месяц: февраля 2008

Плагины WordPress. Как бороться со спамом в комментариях

Владимир | | WordPress, Разное.

Stop spam
С недавних пор кто-то решил, что этому блогу очень не хватает спама в комментариях и упорно старается исправить ситуацию 🙂 .

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

Примечание. Для создания captcha я использовал Math Comment Spam Protection Plugin.

Но с недавних пор (недели 2 назад) начал появляться спам в трекбеках (где-то по 5-10 штук в день).

Первое время я удалял его вручную, но это дело мне быстро надоело 🙂 .
Читать дальше

PHP framework CodeIgniter. Управление внутренней адресацией

Владимир | | CodeIgniter, htaccess, PHP.

CI router
В этой заметке я покажу, как использовать встроенный роутер CodeIgniter'а для решения одной несложной задачи.

Прежде всего, пару слов о том, что это такое и зачем нужно.

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

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

Любой запрос браузера передается роутеру, а уже потом – контроллеру. Таким образом, можно изменить любой из параметров запроса. Например, перенаправить запрос другому контроллеру или добавить/удалить параметры.

Делается это достаточно просто. В файле /application/config/routes.php нужно задать правила в виде:

$route[‘выражение’] = "новый_адрес";

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

Теперь переходим к нашей задаче.
Читать дальше

Добавляем CAPTCHA к форме. Пример PHP скрипта, использующего AJAX.

Владимир | | Ajax, CodeIgniter, JavaScript.

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

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

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

Поэтому мы используем готовую библиотеку для создания рисунка CAPTCHA. Библиотека называется достаточно незамысловато – captcha и может использоваться вместе с фрэймворком CodeIgniter. В описании библиотеки приведен пример ее использования на обычной странице, поэтому мы рассмотрим вариант проверки с применением технологии ajax.

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

Web сервисы. Компас для CodeIgniter

Владимир | | CodeIgniter.

Компас
За последнее время появилось несколько неплохих сборников ссылок на ресурсы о CodeIgniter.

Это, прежде всего, статья CodeIgniter Framework Геннадия Потапова, а также Сайты по CodeIgniter Максима.

К сожалению, информации о CodeIgniter на русском языке не так много как хотелось бы, поэтому появление таких списков можно только приветствовать 🙂 .

Я тоже решил поучаствовать и сделал свою версию списка.

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

P.S. Список я разместил на moikompas.ru. Кстати, очень интересный проект, который изначально задумывался как сборник ссылок на ресурсы по конкретным темам.
На данный момент «компасов» не много, но в перспективе может получится очень полезный ресурс.

Сколько нужно резервных копий?

Владимир | | Разное.

Сразу скажу правильный ответ: «Сколько не делай, все равно будет мало!» 🙂

И самое паршивое то, что проблемы возникают в самый неподходящий момент.

Как раз такая ситуация у меня и возникла. 12-ого февраля все было нормально, а 13-ого я увидел, что в блоге не хватает двух последних записей.

Проблема была с сервером хостера («разрушилась файловая система» — по их словам). Данные были восстановлены по резервной копии за 10-ое февраля.

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

Но вот с комментариями оказалось сложнее. Какие-то я восстановил, а какие-то – мог пропустить. За что я прошу прощения у их авторов.

Поэтому если вы вдруг не увидите своего комментария, просто отправьте его еще раз.

Вместо заключения.

Ситуация, безусловно, неприятная, но очень поучительная. Нельзя переоценивать свои силы и быть слишком уверенным в себе 🙂 .

Естественно, я пересмотрю подход к созданию резервных копий.

И еще раз прошу прощения за потерянные комментарии.

P.S. Очень неплохо в этой ситуации показала себя служба FeedBurner. Все, подписчики RSS ленты получили полный текст всех статей даже после восстановления из резервной копии (кстати, еще один повод подписаться на RSS 🙂 ).

PHP framework CodeIgniter. Авторизация посетителей и ограничение доступа

Владимир | | CodeIgniter, PHP.

Авторизация посетителей

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

Прежде всего, вкратце обрисую сложившуюся ситуацию.

Большинство web ресурсов используют для защиты пару «имя — пароль». Это не самый безопасный вариант, но зато удобный (простой) в использовании.

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

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

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

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

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

CodeIgniter + AJAX. Проверка данных форм без перезагрузки страниц

Владимир | | Ajax, CodeIgniter, PHP.

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

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

Давайте немного порассуждаем. Чем отличается ajax запрос от обычного запроса?

1) Ajax запрос можно выполнить только с помощью JavaScript.

2) Ответом сервера на обычный запрос должна быть html страница, а на ajax запрос – фрагмент данных (с разметкой или без нее).

Отсюда вывод. Чтобы добавить поддержку ajax нужно в клиентской части написать JavaScript функцию, которая прочтет данные из формы, отправит запрос и обработает ответ сервера, а в серверной части – изменить возвращаемые значения.

Примечание. Чтобы немного упростить себе жизнь, мы будем использовать библиотеку prototype для отправки запросов и обновления страницы.

Переходим к нашему примеру. Как вы помните, в прошлый раз мы создали форму с тремя полями для ввода личных данных пользователя (ник, полное имя, адрес email).

В этот раз мы используем эту же форму, только немного изменим html разметку.
Читать дальше

PHP framework CodeIgniter. Проверка данных из форм

Владимир | | CodeIgniter, PHP.

Проверка данных форм

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

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

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

Рассмотрим небольшой пример. Допустим, у нас есть страница (userdata) с формой, содержащей поля для ввода личных данных. Если посетитель правильно заполнил форму, мы должны отправить его на главную страницу сайта (index). Если были допущены ошибки – показать их описание и предложить заполнить форму еще раз.

Естественно, доступ к обеим страницам осуществляется через контроллер, а их адреса выглядят так: www.site.com/index.php/main/index и www.site.com/index.php/main/userform.

Примечание. Подробнее почитать о навигации в CodeIgniter можно в статье «CodeIgniter: контроллер и представления».
Т.е. на данном этапе контроллер выглядит так:
Читать дальше

PHP framework CodeIgniter. Создание многоязычных сайтов

Владимир | | CodeIgniter, PHP.

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

Разберемся, как реализована поддержка языков.

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

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

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

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

Создание файлов переводов

Т.к. CodeIgniter это PHP фрэймворк, то и файлы с переводами представляют собой обычные PHP скрипты, в которых объявлены массивы строк. Имена этих файлов должны обязательно содержать окончание «_lang.php».
Читать дальше

17 WordPress плагинов, которые у меня активированы

Владимир | | WordPress.

17 плагинов для wordpress

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

Я не буду утверждать, что здесь собраны лучшие плагины (это скорее всего не так), но некоторые из них я выбрал после тестирования 5-10 аналогичных. И, кроме того, все они 100% рабочие 🙂 .
Читать дальше