2012-02-27 114 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这样