Вопросы CodeIgniter: собственные PHP-сессии, поток кода, вопросы размещения?

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

ЗАСЕДАНИЯ

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

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

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

CODE FLOW & CONFIG

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

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

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

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

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

ПЛОЩАДЬ / ЛЕСТНИЦЫ

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

Недавно выпущенный 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'); 

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

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

Поздравляем вас с выбором рамок; Я уверен, вы не будете разочарованы. 😉

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

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

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

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

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

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