Вопросы по CodeIgniter: родные сессии PHP, поток кода, проблемы с компоновкой? - PullRequest
4 голосов
/ 08 ноября 2008

Я только начинаю работать с 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 файла или вносить туда глобальный конфигурационный файл? Опять же, я чувствую, что выхожу за рамки и задаюсь вопросом, просто делаю ли я это, потому что у меня пока нет четкого понимания этого?

Макет / нижний колонтитул

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

Ответы [ 5 ]

3 голосов
/ 08 ноября 2008

Недавно выпущенный 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 один или два раза, чтобы установить начальные значения и тому подобное, и у меня никогда не было с этим проблем.

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

1 голос
/ 12 ноября 2008

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

1 голос
/ 08 ноября 2008

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

0 голосов
/ 14 ноября 2012

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

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

0 голосов
/ 17 ноября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...