Вопросы по CodeIgniter: собственные сеансы PHP, поток кода, проблемы с разметкой?

Я только начинаю работать с CodeIgniter и пытаюсь хэшировать свои обычные модули / функции, чтобы они правильно работали в рамках MVC. У меня есть несколько конкретных вопросов для тех, кто имеет большой опыт работы с CodeIgniter:

СЕССИИ

Сеанс CodeIgniter хранит данные сеанса на стороне клиента в файле cookie, который для меня просто не сработает. Я знаю, что для него есть несколько замен, или я мог бы создать свою собственную библиотеку / помощника; но я просто не вижу никакой пользы от простого использования $_SESSION.

Если я просто буду использовать $_SESSION, возникнут ли у меня проблемы с остальной частью фреймворка? Зависит ли какая-либо другая часть фреймворка от использования сеанса CodeIgniter?

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

ПОТОК КОДА И КОНФИГУРАЦИЯ

У меня есть несколько элементов конфигурации, которые нужно сделать раньше, чем что-либо еще.

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

Проблема в том, что system_folder и application_folder (которые будут установлены в зависимости от того, на каком сервере выполняется код) устанавливаются в первую очередь в файле index.php, до того, как будет загружена какая-либо из конфигураций.

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

Где лучше всего складывать такие вещи, которые должны произойти очень рано? Я знаю, что есть файл конфигурации, файл автозагрузки, файл констант и т. д., Но это уже слишком поздно для некоторых элементов. Это плохая практика - просто помещать эти вещи в верхнюю часть основного файла index.php или включать их в глобальный файл конфигурации? Опять же, я чувствую, что выхожу за рамки, и задаюсь вопросом, делаю ли я это просто потому, что у меня еще нет четкого понимания этого?

ПЛАН / ПОДГОТОВКА КНИГИ

Как и у большинства людей, у меня есть верхний колонтитул, навигация, нижний колонтитул и т. д. Я привык просто хранить их в файлах, которые включены в мой шаблон страницы. Я считаю, что могу сделать то же самое, просто сделав их просмотры и включив их в свой просмотр главной страницы. Это лучший способ пойти? Некоторым из них требуется немного данных; например, на какой странице они находятся для навигации и т. д. Как лучше всего управлять навигацией, общим верхним / нижним колонтитулом и т. д.?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
1
6 263
5

Ответы 5

Недавно выпущенный CI 1.7 обрабатывает сеансы в базе данных (если вы ее используете).

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

Для вашего верхнего / нижнего колонтитула / навигации вы можете создать (например) headerview.php, footerview.php и contentview.php и передавать данные своим представлениям, выполнив что-то вроде этого в контроллере:

$data['title'] = 'about us';
$data['content'] = 'hello world!';

$this->load->view('headerview', $data);
$this->load->view('contentview', $data);
$this->load->view('footerview');

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

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

Поздравляем с выбором фреймворка; Я уверен, ты не разочаруешься. ;)

У вас может быть несколько строк load-> view в каждом контроллере, но я лично считаю, что это связано. Я настоятельно рекомендую вам взглянуть на хуки в CodeIgniter, где вы можете определить функции, которые будут автоматически запускаться после каждого контроллера / метода (прекрасный пример АОП).

На самом деле массив $ _SESSION, кажется, не установлен, поэтому вы не можете использовать собственные сеансы PHP (по крайней мере, на 1.7). Однако в вики CodeIgniter есть класс сеанса, который использует собственные сеансы php - вы можете использовать его так же, как и другие, но он сохраняет только session_id в файле cookie. Вот: http://codeigniter.com/wiki/Native_session/

Привет - Спасибо за это. Ты уверен? Кажется, что $ _SESSION нормально работает на сервере разработки, но мне не хотелось бы видеть, как он внезапно исчезнет в один прекрасный день. Мы используем 1.7.0.

Eli 12.11.2008 02:41

Привет, на самом деле я только начал использовать CI, и я ни в чем не уверен: P Может быть, мне что-то не хватает какой-то настройки конфигурации ... Но я также использую реализацию из ссылки и пока довольно happy - также поддерживает функцию flashdata. Думаю стоит проверить. Удачи!

doekman 12.11.2008 13:12

Спасибо! (вот еще несколько символов, так как требуется 10)

Eli 18.11.2008 02:14

@lacho Я создал свою собственную библиотеку аутентификации на $ _SESSION. и он отлично работает на 1.7.

Я считаю, что $ _SESSION намного безопаснее, поскольку «сеансы» CI - это файлы cookie, которые хранятся на стороне клиента и классифицируются как «передаваемая пользователем информация», которой нельзя доверять.

Данные в файлах cookie зашифрованы, поэтому теоретически это безопасно (вы можете их потерять, но их нельзя изменить, если ключ не протекает).

Mark 20.05.2012 23:00

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

http://www.moreofless.co.uk/using-native-php-sessions-with-codeigniter/

Другие вопросы по теме