2012-02-27 2 views
3

Im создает действительно маленький социальный сайт о спорте.Собственная сессия Codeigniter или библиотека сеансов ci

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

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

+0

Я думаю, CodeIgniter библиотеку сеанса , он готов и прост в использовании, и лучше использовать базу данных. Это мое портфолио http://heera.it/portfolio, и вы можете найти большинство приложений, созданных с помощью ci. –

+0

Можете ли вы провести время, разъясняя свои конкретные проблемы, а не спрашивая, что это «лучше»? Это не имеет смысла. –

+1

@SheikhHeera Бесстыдный плагин, а? ;) – landons

ответ

3

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

Я рекомендую идти с CI сессий, со следующими оговорками:

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

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

+1

Благодарим вас за подробную информацию о сэре, это очень помогло мне – Side

+0

У меня много проблем с собственными сеансами воспламенителя кода при использовании AJAX, а также при использовании cURL в командной строке (с использованием функции cookie jar). Я бы серьезно рекомендовал либо настройку, чтобы не шифровать и не вращать, а просто использовать что-то еще. –

0

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

Цитирую:

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

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

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

1

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

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

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

Поскольку страницы в 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 на системы/ядра/controller.php

Смежные вопросы