2012-02-27 156 views
3

我建立了一個關於體育的非常小的社交網站。Codeigniter本地會話或ci會話庫

我想問一個更有經驗的開發人員,如果最好使用本地會話或ci會話庫?如果ci庫使用數據庫存儲更好?

感謝您選擇

+0

我覺得笨會話庫,它已經準備好並易於使用,並且最好使用數據庫。這是我的投資組合http://heera.it/portfolio,您可以找到大多數使用ci構建的應用程序。 – 2012-02-27 19:47:24

+0

你能花一點時間澄清你的具體問題,而不是問哪個更「好」?這沒有意義。 – 2012-02-27 19:58:20

+1

@SheikhHeera無恥的插頭,呃? ;) – landons 2012-02-27 21:20:50

回答

3

的CI會議庫將讓你和非常快速地走,給你比本地會話更大的靈活性。請記住,雖然,CI_Session類是相當偏執;您可能會遇到一些意外的會話過期,尤其是對於使用AJAX的應用程序。

我建議用CI會話去,有以下注意事項:

  1. 不要自動加載會話類,因爲你可能會想忽略在某些情況下會更新。
  2. 盡你所能,避免AJAX請求的會話類(如果你確實需要它,你需要檢修sess_update()功能,防止意外到期)
  3. ,則不應通過動態進行CI加載圖像,但有些情況下需要它。這裏同樣適用於AJAX請求。

此外,如果您需要更多的存儲空間而不是cookie允許的話,您需要將會話存儲在表格中(4KB,我認爲;您將在加密時更快地使用它)。不妨使用數據庫並完成它。

+1

感謝您的詳細信息先生,它幫助了我很多 – Side 2012-02-28 07:30:07

+0

當使用AJAX以及在命令行上使用cURL(使用cookie jar功能)時,我有代碼點火器的本機會話有多個問題。我會嚴肅地建議設置不加密和不旋轉或只是使用別的東西。 – 2013-07-02 09:52:55

0

您也可以通過使用native session extended library來獲得最佳效果。

引述:

優勢超過CI_Session *通過Cookie編號TTL硬化針對會話固定(生存時間) - 自動重新生成的Cookie ID的時候每一個給定的量(右 現在配置裏面的類) - 請參閱關於使其可變的注意事項。 *您可以使用所有可用的PHP會話存儲驅動程序(數據庫,內存緩存等) *「閃」會話屬性(參見:「閃光」的屬性)

優勢超過PHPsession *與CI_Session 兼容 - 使用同樣的方法,只是加載庫,set_userdata(),用戶數據() - 便於現有的應用遷移到Native_session - 需要的文檔 - 使用CI手冊:) *更好的安全性(自動和手動會話ID再生)

PHPsession引入會話名稱的概念速度,恕我直言, 鼓勵您使用大量的會話變量。我更喜歡 儘可能限制會話的使用(因爲 潛在的可伸縮性問題),所以Native_session將不會實現會話名稱空間的 。

1

我會去原生PHP會話,因爲我相信後者有問題。

如果用戶的瀏覽器禁用了cookie,該怎麼辦? 儘管瀏覽器禁用cookies不會遠離互聯網這些天......但仍然有人禁用了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類/ Controller.php這樣