Собственный сеанс Codeigniter или библиотека сеансов CI - PullRequest
3 голосов
/ 27 февраля 2012

Я создаю действительно маленький социальный сайт о спорте.

И я хотел бы спросить более опытного разработчика, лучше ли использовать нативную сессию или библиотеку сессий ci? а если библиотека ci, то лучше использовать хранилище данных?

Спасибо за ваши варианты

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012

Библиотека сеансов CI поможет вам быстро начать работу и даст вам большую гибкость, чем собственные сеансы. Имейте в виду, однако, что класс CI_Session довольно параноидален; Вы можете получить неожиданное истечение срока сеанса, особенно в приложениях с интенсивным использованием AJAX.

Я рекомендую пойти с сеансами CI со следующими предостережениями:

  1. Не загружайте класс сеанса автоматически, так как в некоторых случаях вы, возможно, захотите игнорировать обновление сеанса.
  2. Как можно лучше избегайте сеансового класса для запросов AJAX (если он вам абсолютно необходим, вам потребуется перестроить функцию sess_update(), чтобы предотвратить неожиданное истечение срока действия)
  3. Вы не должны загружать изображения динамически через CI, но есть случаи, когда это необходимо. Здесь применяются те же проблемы, что и для запросов AJAX.

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

1 голос
/ 24 сентября 2012

Я бы пошел на нативный PHP-сеанс, потому что я считаю, что с последним проблема.

Что если в браузере пользователя отключены файлы cookie? Хотя браузеры с отключенными файлами cookie в наши дни не получают большого распространения ... Но, тем не менее, есть люди, у которых отключены файлы cookie, поэтому CI sessioncookies не очень хороший кандидат ...

Так как же мы можем использовать $ _SESSION [] в codeigniter? Попробуйте это:

Поскольку страницы в mvc запускаются контроллером, мы можем сделать это

public function __construct(){
    self::$instance =& $this;
    foreach (is_loaded() as $var => $class) {
        $this->$var =& load_class($class);
    }

    $this->load =& load_class('Loader', 'core');

    $this->load->initialize();

    log_message('debug', "Controller Class Initialized");
    session_start();
}

в класс CI_Controller в system / core / Controller.php

0 голосов
/ 28 февраля 2012

Вы также можете получить лучшее из обоих, используя расширенную библиотеку native session .

Цитировать:

Преимущества по сравнению с CI_Session * защищен от фиксации сеанса с помощью идентификатора cookie TTL (время жизни) - автоматически генерирует идентификатор cookie каждые заданные промежутки времени (верно) теперь сконфигурирован внутри класса) - см. примечание о том, как сделать его разделяемым. * вы можете использовать все доступные драйверы хранилища сессий PHP (база данных, memcache и т. д.) * Атрибуты «флэш» сеанса (см. Атрибуты «флэш»)

Преимущества перед PHPsession * совместим с CI_Session - тот же способ использования, просто загрузите библиотеку, set_userdata (), userdata () - легко перенести существующие приложения в Native_session - нужны документы - используйте руководство CI :) * лучшая безопасность (автоматическая и ручная регенерация идентификатора сессии)

PHPsession представляет концепцию пространства имен сеансов, которая, по-моему, призывает вас использовать большое количество сессионных переменных. я предпочитаю максимально ограничить использование сеансов (из-за потенциальные проблемы масштабируемости), поэтому Native_session не будет реализовывать пространства имен сеансов.

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