Категории: CodeIgniter

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».
Читать дальше

PHP framework. Вышла новая версия CodeIgniter.

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

Спешу поделиться приятной новостью. Вышла новая версия php фрэймворка CodeIgniter. Новая версия имеет номер 1.6.0 и до этого момента была доступна только через репозитарий (Subversion).

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

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

В общем, буду тестировать. А о результатах обязательно напишу 🙂 .

P.S. На мой взгляд, это один из лучших фрэймворков.

Как настроить кодировки для работы с PHP фреймворком CodeIgniter

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

Поддержка кодировок в CodeIgniter
Недавно я столкнулся с проблемой.

Создал базу данных и в ней таблицу. Во время создания явно задал кодировку (utf-8).

После этого, установил и настроил CodeIgniter. Все представления (views) тоже были в кодировке utf-8, и, естественно, был добавлен мета-тег:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Т.е. кириллица в браузере отображалась правильно.

Начинаю добавлять данные в БД (с помощью scaffolding). Все отлично работает, буквы отображаются правильно.

Но, через некоторое время мне понадобилось сделать дамп базы. Запускаю phpMyAdmin, экспортирую базу и вижу вместо кириллицы «кракозябры»! При просмотре данных в phpMyAdmin – те же «кракозябры». Ввожу данные через phpMyAdmin – в нем все нормально, но на сайте – знаки вопроса.
Читать дальше

PHP framework CodeIgniter: контроллер и представления

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

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

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

Подключаем модель к контроллеру

Для этого в конструкторе контроллера (system/application/controllers/catalog.php) добавляем строку

$this->load->model('catalogmodel');

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

У вас мог возникнуть вопрос: «Почему подключение выполняется именно в конструкторе?». Тут все просто. Подключить модель можно в любом из методов. Но тогда она будет доступна только внутри этого метода, а т.к. оба метода нашего контроллера используют одну и ту же модель, то лучше подключить ее в конструкторе (не дублируется код).

Теперь мы можем вызывать методы модели. Например,

$this->catalogmodel->getAllBooks();
$this->catalogmodel->getBookDetails($bookid);

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

PHP framework CodeIgniter: работа с базой данных

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

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

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

Т.к. обоим методам нужна информация из базы данных, рассмотрим возможности CodeIgniter в плане работы с БД.

В соответствии с архитектурой MVC для работы с данными используется модель. Что бы создать модель в CodeIgniter нужно написать класс, наследующий Model и поместить его в папку system/application/models.

Для нашего приложения достаточно одной модели, назовем ее Catalogmodel. Создаем файл system/application/models/catalogmodel.php и записываем в него следующий код.
Читать дальше

PHP framework CodeIgniter: создаем небольшой web сайт

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

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

Т.к. изучать фрэймворки (да и программирование вообще) лучше всего на примерах, создадим небольшой web сайт.

Допустим, нам нужен каталог книг. Для каждой книги у нас есть следующие данные:
— название;
— автор;
— количество страниц;
— жанр;
— аннотация.
Читать дальше

PHP framework CodeIgniter. Установка и настройка.

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

CI горящие буквыВ минимальном варианте для использования CodeIgniter необходимы web сервер (например, Apache) и интерпретатор PHP. Кроме того, в большинстве случаев нужен сервер баз данных (например, MySQL).

Примечание. Подробное описание настройки этих компонентов вы найдете в статье «Установка и настройка WAMP».

Предположим, что все необходимые компоненты у вас установлены, а переменная сервера DOCUMENT_ROOT указывает на папку E:/my_sites/www/.
Распаковываем в эту папку, скачанный с официального сайта, архив.

Если вы сейчас зайдете на ваш сайт (http://localhost/), то увидите страницу приветствия CodeIgniter. В принципе, установка уже завершена, но, по ряду причин, такой вариант далеко не самый лучший.
Читать дальше

Как создать свой сайт на PHP? Или зачем нужны фреймворки?

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

Создание своего сайта
Создание современного web сайта (приложения) представляет собой довольно трудоемкую задачу. Когда вы читаете книгу или руководство, то все кажется довольно простым. Демонстрационные программы редко бывают больше нескольких страницы. Все красиво работает…

Но, проблема в том, что это учебные примеры. Как только вы попытаетесь использовать их на практике, вы увидите, как увеличивается объем кода. Рассмотрим обработку данных, полученных из формы. Мы должны:

— проверить тип полученных значений;
— убедиться, что значения имеют допустимые величины (или формат);
— удалить из текста запрещенные теги (защита от XSS);
— заменить в параметрах SQL-запросов служебные символы на их эскейп последовательности (защита от SQL Injection);
— если параметры связаны между собой, проверить эти связи;
— и т.д.

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

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

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