Обновить
0

CodeIgniter *

MVC-фреймворк с открытым исходным кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Codeigniter: делаем сессии наконец стабильными (прежде всего для авторизаций)

Время на прочтение2 мин
Охват и читатели16K
Сессии в Codeigniter хороши всем. Правда, очень удобно сделаны, особенно когда вы храните сессии в БД (что я считаю единственно верным). Куки шифрованные, в куках ничего, кроме идентификатора нету. Они привязываются к user_agent и, опционально, к IP. Красиво, безопасно.

Но есть у них очень существенный недостаток: жизнь сессии считается от поля last_activity. Это значит, что если у вас стоит expire сессии в двое суток, то при обращении к сессии, у которой last_activity < time()-172800, она ликвидируется и начинется новая. Следственно, для того что бы пользователям не приходилось каждый раз логиниться на сайт, last_activity нужно поддерживать в акутальном состоянии.
Поле last_activity обновляется в двух случаях: когда вы записываете что-то новое в сессию, либо когда сессия обновляется (по-умолчанию каждые 5 минут, опять же, относительно last_activity; указывается в конфиге). И вот главная проблема в том, что при обновлении сессии меняется session_id и текущая сессия у пользователя сессия прерывается, стартует новая.

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

Проблема «животрепещущая», о ней часто вспоминают на форумах Codeigniter, но толкового решения там нигде я так и не увидел.

Но голь, как известно, на выдумки хитра, поэтому простое решение таки нашлось.
Читать дальше →

Каркас для web-приложений, построенный на CodeIgniter

Время на прочтение9 мин
Охват и читатели36K
image
Наверняка, многие веб-программисты изучали и, может быть, даже использовали такой замечательный фреймворк как CodeIgniter. Мой выбор пал на него ввиду того, что у него самый низкий порог вхождения, он наиболее прост в изучении, хорошая документация, быстрый и т.д. и т.п. Для простых проектов самое «оно», чтоб попробовать свои силы именно как разработчик. Само собой, для более серьезных проектов лучше использовать более функциональные и навороченные фреймворки.

Далее буду описывать, как я «апгрейдил» CodeIgniter, чтобы использовать этот каркас для разных проектов, т.к. базовый его функционал и примеры из документации, мягко говоря, очень простые, а в жизни всё гораздо сложнее. Итак, начнем-с.
Читать дальше →

Интеграция шаблонизатора Twig в CodeIgniter 2

Время на прочтение2 мин
Охват и читатели9.2K
Логотип CodeIgniterЛоготип Twig
CodeIgniter — это небольшой и быстрый php фреймворк, с низким порогом вхождения. Хотя есть такие силачи как Yii, Symfony и Kohana, по непонятным причинам, все проекты пишу именно на нем. Всё бы хорошо, но есть у CI две довольно ощутимые проблемы: слабо развитый ActiveRecord и отсутствие шаблонизатора. Вторую проблему мы и решим.

Почему Twig, а не SMARTY?


Как по мне SMARTY — нечто большое, старое и страшное. С другой стороны — мощное и проверенное временем. Twig — молод, энергичен и вызывает доверие, так как встроен в Symfony, а у этого фреймворка довольно большое и активное сообщество. Хотя ещё вчера провели сравнение производительности в котором явно выиграл SMARTY, я решил попробовать Twig.

C общей информацией закончили, переходим к сути — три простых шага для интеграции Twig в CodeIgniter 2:

1. Переносим файлы Twig в CI


Забираем стабильную версию Twig с gitHub'а
github.com/fabpot/twig
Извлекаем содержимое архива и переименовываем папку в Twig, переносим её в папку application/libraries в вашем CI.

2. Связываем Twig с CI


Забираем стабильную версию одноименной библиотеки Twig для CI, которая даст нам возможность вызывать Twig из контроллера.
github.com/jamiepittock/codeigniter-twig
Из архива берем папку application и копируем поверх папки application в вашем CI.

3. Настраиваем пути Twig


Открываем application/config/twig.php и меняем пути в соответствии с вашими настройками. Например, мне понадобилось изменить путь к кэшу
$config['cache_dir'] = BASEPATH.'cache/twig';

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

Альтернатива mysql_pconnect для драйвера mysqli в php 5.3

Время на прочтение2 мин
Охват и читатели8.5K
В качестве драйвера для соединения с базой я использовал mysqli. Проблема началась, когда я добавил на свой тестовый сервер > 500 000 записей в одну таблицу. Соединение с базой стало занимать от 1 до 10 секунд, несмотря на то, что в настройках стояло:
$db['default']['pconnect'] = TRUE;

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

CodeIgniter 2.0.0 Released

Время на прочтение1 мин
Охват и читатели1.7K
Этого ждали больше года [назад]. Месяцев десять назад был топик о том, что CI2 — soon. С тех пор были перестановки в команде разработчиков, да и так перспективы кодигнайтера были сомнительны. Сейчас большая часть поклонников ушла с CI на Yii или Kohana, а то и вовсе с php на питон или руби. Но вот совершенно неожиданно на сайте фреймворка объявили о релизе.

Большую часть плюшек можно обозреть, например, по вышеозначенному топику. А в официальном анонсе заявлено следующее.
  • В минимальных требованиях php 5.1.
  • Драйверы.
  • Application Packages.
  • Удалён скаффолдинг и класс валидации, удалены плагины в пользу хелперов.
  • Изменения в роутере, формах.
  • Кеш стал не только файловым, но и APC и memcache.
  • Командная строка для крона.
  • 50+ багфиксов.
  • 20+ усовершенствований и твиков.

На чём разработчики собираются работать дальше — это: документация, библиотека аутентификации, более объектная модель.

Делать выводы предоставляю заинтересованным в том.

Доменная (LDAP) аутентификация в Codeigniter

Время на прочтение3 мин
Охват и читатели7.6K
image

Статья ориентирована на начинающих Codeigniter-щиков, таких как я.

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

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

Допустим, что CI уже установлен и настроен. Кстати, на одном из западных сайтов, доступно много хороших и исчерпывающих видео уроков по настройке и использованию Codeigniter-а.
Читать дальше →

Как сделать FULLTEXT поиск в CMS на CodeIgniter

Время на прочтение10 мин
Охват и читатели6.3K
На Хабре в последнее время появляется все больше постов посвященных набирающему популярность framework'у CodeIgniter. Это довольно простой и удобный фреймворк с помощью которого можно быстро начать делать нормальные приложения на PHP. Под катом пример реализации FULLTEXT поиска в CMS на CodeIgniter.
Читать дальше →

Добавляем так недостающий parse_string()

Время на прочтение2 мин
Охват и читатели1.4K
image В марте от хабраюзера Wave появилась новость, заставившая затрепетать сердца всех любителей фрэймворка CodeIgniter: вот-вот должна появиться версия 2.0 этой ляльки. И вот, прошло уже больше двух месяцец, а воз и ныне там, «двушка» для скачивания с офф.сайта так и недоступна.

И все бы ладно, да очень не хватало метода, который обещали внедрить во вторую версию фрэймворка — parse_string() в классе Parser, который бы позволил нам парсить шаблоны не только из файлов, но и из переменных. А так, как в одной из моих разработок есть потребность хранить небольшие шаблончики в БД, то, так сказать, стало мне невтерпеж.

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

За реализацией этого метода — добро пожаловать под хаброкат.

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

Новости CodeIgniter — 2.0 soon

Время на прочтение2 мин
Охват и читатели1.6K
На сайте кодожжотера появилась интересная новость.
Ellislab перешли с SVN на Mercurial и выложили на bitbucket версию 2.0.0
Но по порядку.
Читать дальше →

Доработка стандартного механизма обработки ошибок в CodeIgniter

Время на прочтение5 мин
Охват и читатели3.7K
CodeIgniter предоставляет неплохие возможности по обработке ошибок, но мне они показались недостаточными по следующим причинам:
  • отсутствует возможность обработки исключений
  • отсутствует возможность уведомлять администратора сайта о возникающих ошибках через почту
  • довольно скудная информацию о возникающих ошибках (в фреймворке с которым я работал раньше текст ошибки дополняется дампом глобальных переменных, что очень сильно облегчает процесс отладки, хотелось бы подобную схему увидеть и в CodeIgniter)

Будем это исправлять =)
Читать дальше →

Вышел CodeIgniter 1.7.2

Время на прочтение1 мин
Охват и читатели1.4K
Список изменений:
  • Совместимость с php 5.3;
  • Добавлен класс Cart (корзина для интернет-магазинов);
  • Улучшения хелпера Form;
  • Добавлена функция is_php() для проверки версии php;
  • Усовршенствована функция show_error(), тепрь она позволяет отсылать http-статусы ошибок. Все вызовы этой функции во фреймворке теперь шлют соответствующие статусы;
  • Многочисленные исправления ошибок;

Источник
Скачать

CodeIgniter + lighttpd = ЧПУ

Время на прочтение1 мин
Охват и читатели3.5K
image

Имеем новый проект «domen.com», который будет работать на php-фреймворке codeigniter и вебсервере lighttpd.
Задача: сделать красивую работу ЧПУ
Читать дальше →

Гибкий base_url

Время на прочтение2 мин
Охват и читатели8.1K
Как-то мнe захотелось чтобы при обращению к странице по https, также все внутренние линки были изменены на варианты с https. Так как view страницы загружается с разными url, относительные пути не проходили (js/script.js) и я решил использовать функцию base_url (echo base_url().'js/script.js'), но дело в том что она подставляет содержимое переменной $config['base_url'], которая в свою очередь статична.
Немного поискав я нашел решение — динамический базовый путь в $config['base_url']. Также положительным эффектом является то, что теперь не нужно изменять base_url при переносе файлов между доменами.
Код под катом

Ближайшие события

CodeIgniter Debug Toolbar

Время на прочтение1 мин
Охват и читатели4.7K
CodeIgniter Debug Toolbar
Многие видели девелоперский тулбар для фреймворка Kohana (слизанный, в свою очередь, с Symfony), который недавно выкладывали на хабре. Мне он очень понравился — захотелось поиметь такой и для себя.

Немножко поколдовав, получилось нечто похожее…
Читать дальше →

Автодополнение функций CodeIgniter в NetBeans

Время на прочтение2 мин
Охват и читатели3.1K
На волне интереса к NetBeans расскажу небольшой хинт. Я работаю в основном с CodeIgniter, и вот чего мне сильно не хватает в IDE это быстрого автодополнения для встроенных функций (библиотек, хелперов) — вроде $this→form_validation→…

Сейчас я расскажу, как это реализовать:

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

MVC на примере CodeIgniter

Время на прочтение3 мин
Охват и читатели12K
На официальном сайте есть видео где рассказывается о создании блога. Там рассказано о применении только представления и контроллера, модель опускается и остается на самостоятельное изучение. Далее попытаюсь рассказать, как использовать полную модель MVC на примере вывода записей в блоге.
Читать дальше →

Расширение класса Form_validation поддержкой значений полей по умолчанию

Время на прочтение3 мин
Охват и читатели1.6K
Однажды задал в комментариях такой вопрос. Недавно решил эту проблему, расширив класс Form_validation в CodeIgniter (отдаленно напоминает переделку, подсказанную мне в ответ на мой вопрос).
Вообще странно, что такого функционала в классе в валидации изначально нет — функции хелпера form для вывода значения поля, установки чекбокса, etc (set_value, set_checkbox) поддерживает значение поля по умолчанию, однако прописывать в отображениях везде в set_value дефолтные значения не очень удобно.

Поэтому было написано вот такое расширение класса валидации, позволяющее установить массив значений по умолчанию. Так же переопределены методы, которыми пользуется хелпер form.
Читать дальше →

Руководство пользователя на русском в формате chm

Время на прочтение1 мин
Охват и читатели5.9K
Для тех у кого интернет не всегда под рукой, да и просто для любителей локальных мануалов, я скомпилировал руководство пользователя по CodeIgniter (code-igniter.ru) в отдельный файл chm.

Скачать его можно отсюда: www.iforyou.ru

UPD 1: Добавлена страничка с классом Image Manipulation.
UPD 2: Добавлена страничка с классом Typography.
UPD 3: Удалено выпадающее содержание (то что на JavaScript), панель справа теперь в юникоде.
UPD 4: Страница с содержанием теперь в две колонки.
UPD 5: Исправлена ошибка с кодом в одну линию. Теперь код как в оригинале.