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

О том, что такое CAPTCHA и зачем она нужна, думаю рассказывать не нужно. Все, кто хоть раз регистрировался на каком-нибудь интернет-сервисе, прекрасно понимают, о чем идет речь.
В этой статье мы посмотрим, как создать несложную CAPTCHA, добавить ее к форме, и проверить правильно ли посетитель ввел ее значение. Посмотреть действующий пример можно здесь.
Сразу хочу отметить, что речь пойдет именно о работе с CAPTCHA, а не о создании рисунка для нее.
Поэтому мы используем готовую библиотеку для создания рисунка CAPTCHA. Библиотека называется достаточно незамысловато – captcha и может использоваться вместе с фрэймворком CodeIgniter. В описании библиотеки приведен пример ее использования на обычной странице, поэтому мы рассмотрим вариант проверки с применением технологии ajax.
Переходим к решению нашей задачи. Прежде всего, необходимо четко понимать, чем работа с captcha отличается от работы с обычным полем.
Читать дальше »
Опубликовано в Ajax, CodeIgniter, JavaScript | Комментарии (22) »
Web сервисы. Компас для CodeIgniter

За последнее время появилось несколько неплохих сборников ссылок на ресурсы о CodeIgniter.
Это, прежде всего, статья CodeIgniter Framework Геннадия Потапова, а также Сайты по CodeIgniter Максима.
К сожалению, информации о CodeIgniter на русском языке не так много как хотелось бы, поэтому появление таких списков можно только приветствовать
.
Я тоже решил поучаствовать и сделал свою версию списка.
Естественно собраны далеко не все ресурсы, поэтому я готов выслушать любые предложения и замечания.
P.S. Список я разместил на moikompas.ru. Кстати, очень интересный проект, который изначально задумывался как сборник ссылок на ресурсы по конкретным темам.
На данный момент «компасов» не много, но в перспективе может получится очень полезный ресурс.
Опубликовано в CodeIgniter | 1 Комментарий »
PHP framework CodeIgniter. Авторизация посетителей и ограничение доступа

С вопросами безопасности web ресурсов постоянно сталкивается каждый разработчик. И, естественно, в этой области существует масса решений. В этой статье я хочу рассказать о встроенных возможностях фрэймворка CodeIgniter, которые можно использовать для авторизации посетителей и ограничения их доступа.
Прежде всего, вкратце обрисую сложившуюся ситуацию.
Большинство web ресурсов используют для защиты пару «имя - пароль». Это не самый безопасный вариант, но зато удобный (простой) в использовании.
Более сложные методы защиты требуют от посетителя либо специальных знаний, либо покупки оборудования, либо того и другого. Например, служба WebMoney использует сертификаты для авторизации пользователей. Метод хороший, но инструкция по использованию и безопасной работе с этими сертификатами занимает несколько страниц. Обычный пользователь интернета не станет связываться с такой системой без достаточно веской причины (в случае WebMoney речь идет о его собственных деньгах).
Об аппаратной защите (вроде биометрических датчиков и т.п.) и говорить не приходиться. Эти устройства стоят денег и, зачастую, немаленьких.
Поэтому, метод авторизации с помощью имени и пароля, похоже, останется самым распространенным в обозримом будущем.
В «классическом» варианте этот метод работает так. Посетитель вводит имя и пароль, вы их проверяете и, если все в порядке, записываете какой-нибудь параметр в сессию (например, имя пользователя). После этого, в каждую защищенную страницу сайта нужно добавить код, который будет проверять, установлен ли нужный параметр в сессии, и если нет, предлагать посетителю ввести имя и пароль.
Естественно, этот подход далеко не самый лучший, т.к. код проверки формы будет дублироваться на каждой странице.
Читать дальше »
Опубликовано в CodeIgniter, PHP | Комментарии (24) »
CodeIgniter + AJAX. Проверка данных форм без перезагрузки страниц

В прошлой статье речь шла о проверке данных форм с помощью стандартной библиотеки фрэймворка CodeIgniter. Мы рассмотрели основные возможности библиотеки, создали страницу с формой и написали необходимый для ее проверки код.
Сегодня мы посмотрим, как решить эту же задачу без перезагрузки страницы с формой. Естественно будет использоваться технология ajax.
Давайте немного порассуждаем. Чем отличается ajax запрос от обычного запроса?
1) Ajax запрос можно выполнить только с помощью JavaScript.
2) Ответом сервера на обычный запрос должна быть html страница, а на ajax запрос – фрагмент данных (с разметкой или без нее).
Отсюда вывод. Чтобы добавить поддержку ajax нужно в клиентской части написать JavaScript функцию, которая прочтет данные из формы, отправит запрос и обработает ответ сервера, а в серверной части – изменить возвращаемые значения.
Примечание. Чтобы немного упростить себе жизнь, мы будем использовать библиотеку prototype для отправки запросов и обновления страницы.
Переходим к нашему примеру. Как вы помните, в прошлый раз мы создали форму с тремя полями для ввода личных данных пользователя (ник, полное имя, адрес email).
В этот раз мы используем эту же форму, только немного изменим html разметку.
Читать дальше »
Опубликовано в Ajax, CodeIgniter, PHP | Комментарии (16) »
PHP framework CodeIgniter. Проверка данных из форм

В этой статье я хочу рассказать о возможностях, которые предоставляет CodeIgniter для работы с данными форм. Несмотря на то, что обработка этих данных довольно простая, она включает множество проверок и для больших форм выливается в приличный кусок кода.
Каждый раз заново изобретать велосипед естественно никто не хочет, поэтому библиотек для решения этих задач существует просто немеряно.
Практически каждый фрэймворк предлагает свое решение этой задачи. И CodeIgniter тут не исключение. Возможно, его решение не идеальное, но, тем не менее, достаточно эффективное и удобное в использовании.
Рассмотрим небольшой пример. Допустим, у нас есть страница (userdata) с формой, содержащей поля для ввода личных данных. Если посетитель правильно заполнил форму, мы должны отправить его на главную страницу сайта (index). Если были допущены ошибки – показать их описание и предложить заполнить форму еще раз.
Естественно, доступ к обеим страницам осуществляется через контроллер, а их адреса выглядят так: www.site.com/index.php/main/index и www.site.com/index.php/main/userform.
Примечание. Подробнее почитать о навигации в CodeIgniter можно в статье «CodeIgniter: контроллер и представления».
Т.е. на данном этапе контроллер выглядит так:
Читать дальше »
Опубликовано в CodeIgniter, PHP | Комментарии (4) »
PHP framework CodeIgniter. Создание многоязычных сайтов

В этой статье речь пойдет о возможностях, которые предоставляет CodeIgniter для поддержки многоязычных сайтов.
Разберемся, как реализована поддержка языков.
Идея очень простая. Вы определяете, какие фразы должны быть переведены и создаете файлы с переводами.
После этого, даете возможность пользователю выбрать язык и загружаете строки из файлов выбранного языка.
Таким образом, при формировании страниц, текст должен загружаться из файлов с переводами, а не прописываться в шаблонах.
Примечание. В этой статье речь идет о локализации фрэймворка и сайта, а не контента. Т.к. контент (текстовый) обычно находится в базе данных, то для размещения переводов вам, скорее всего, придется создать дополнительные таблицы и изменять запросы в зависимости от выбранного языка.
Создание файлов переводов
Т.к. CodeIgniter это PHP фрэймворк, то и файлы с переводами представляют собой обычные PHP скрипты, в которых объявлены массивы строк. Имена этих файлов должны обязательно содержать окончание «_lang.php».
Читать дальше »
Опубликовано в CodeIgniter, PHP | Комментарии (35) »
PHP framework. Вышла новая версия CodeIgniter.
Спешу поделиться приятной новостью. Вышла новая версия php фрэймворка CodeIgniter. Новая версия имеет номер 1.6.0 и до этого момента была доступна только через репозитарий (Subversion).
Судя по описанию, в эту версию вошло очень много полезных изменений. Что, в общем-то, неудивительно, т.к. с прошлого релиза прошло больше шести месяцев.
Похоже, основные изменения коснулись работы с базой данных. Кроме того, изменена работа с сессиями (давно пора, в предыдущей версии были проблемы с безопасностью, и приходилось использовать дополнительные библиотеки). Ну и как обычно куча мелких изменений, багфиксов и т.п.
В общем, буду тестировать. А о результатах обязательно напишу
.
P.S. На мой взгляд, это один из лучших фрэймворков.
Опубликовано в CodeIgniter, PHP | Комментарии (11) »
Как настроить кодировки для работы с PHP фреймворком CodeIgniter

Недавно я столкнулся с проблемой.
Создал базу данных и в ней таблицу. Во время создания явно задал кодировку (utf-8).
После этого, установил и настроил CodeIgniter. Все представления (views) тоже были в кодировке utf-8, и, естественно, был добавлен мета-тег:
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
Т.е. кириллица в браузере отображалась правильно.
Начинаю добавлять данные в БД (с помощью scaffolding). Все отлично работает, буквы отображаются правильно.
Но, через некоторое время мне понадобилось сделать дамп базы. Запускаю phpMyAdmin, экспортирую базу и вижу вместо кириллицы «кракозябры»! При просмотре данных в phpMyAdmin – те же «кракозябры». Ввожу данные через phpMyAdmin – в нем все нормально, но на сайте – знаки вопроса.
Читать дальше »
Опубликовано в CodeIgniter, PHP | Комментарии (7) »
PHP framework CodeIgniter: контроллер и представления

В предыдущих выпусках мы начали разработку небольшого сайта, представляющего собой обычный каталог. Кратко напомню, о чем шла речь в предыдущих статьях.
В первой части мы установили и настроили фрэймворк (CodeIgniter).
Во второй – определились с требованиями к нашему приложению, создали БД, написали каркас контроллера и разобрались с передачей параметров в ссылках.
В третьей части описана модель нашего приложения, т.е. мы создали класс, выполняющий все операции с данными.
Подключаем модель к контроллеру
Для этого в конструкторе контроллера (system/application/controllers/catalog.php) добавляем строку
-
$this->load->model(‘catalogmodel’);
Обратите внимание, что имя файла модели указывается без расширения (.php). Это правило относится и ко всем остальным компонентам фрэймворка (библиотекам, представлениям).
У вас мог возникнуть вопрос: «Почему подключение выполняется именно в конструкторе?». Тут все просто. Подключить модель можно в любом из методов. Но тогда она будет доступна только внутри этого метода, а т.к. оба метода нашего контроллера используют одну и ту же модель, то лучше подключить ее в конструкторе (не дублируется код).
Теперь мы можем вызывать методы модели. Например,
-
$this->catalogmodel->getAllBooks();
-
$this->catalogmodel->getBookDetails($bookid);
Опубликовано в CodeIgniter, PHP | Комментарии (2) »
PHP framework CodeIgniter: работа с базой данных

Мы продолжаем изучение фрэймворка CodeIgniter. Сегодня речь пойдет о работе с базами данных.
В прошлой статье мы начали разработку небольшого сайта, представляющего собой обычный каталог. Мы уже определились со структурой данных, установили и настроили CodeIgniter. А также написали контроллер с двумя методами, которые будут создавать страницу с общим перечнем книг и страницу с подробной информацией о выбранной книге.
Т.к. обоим методам нужна информация из базы данных, рассмотрим возможности CodeIgniter в плане работы с БД.
В соответствии с архитектурой MVC для работы с данными используется модель. Что бы создать модель в CodeIgniter нужно написать класс, наследующий Model и поместить его в папку system/application/models.
Для нашего приложения достаточно одной модели, назовем ее Catalogmodel. Создаем файл system/application/models/catalogmodel.php и записываем в него следующий код.
Читать дальше »
Опубликовано в CodeIgniter, PHP | 1 Комментарий »




