Codeigniter本机会话或ci会话库

时间:2012-02-27 19:36:40

标签: codeigniter session

我正在建立一个关于体育的非常小的社交网站。

我想问一个更有经验的开发人员,如果使用本机会话或ci会话库会更好吗?如果是ci库,最好使用数据库商店吗?

感谢您的选择

3 个答案:

答案 0 :(得分:3)

CI会话库可以帮助您快速上手,为您提供比本机会话更大的灵活性。但请记住,CI_Session类非常偏执;您可能会遇到意外的会话过期,特别是对于AJAX密集的应用程序。

我建议参加CI会议,并提出以下警告:

  1. 不要自动加载会话类,因为您可能希望在某些情况下忽略会话续订。
  2. 尽可能避免AJAX请求的会话类(如果你绝对需要它,你需要彻底检查sess_update()函数以防止意外过期)
  3. 您不应该通过CI动态加载图片,但有些情况需要它。这里适用的问题与AJAX请求相同。
  4. 此外,如果您需要比Cookie允许的更多存储空间,您需要将会话存储在一个表中(4KB,我认为;您将通过加密更快地使用它)。不妨使用数据库并完成它。

答案 1 :(得分:1)

我会选择原生的PHP Session,因为我认为后者存在问题。

如果用户的浏览器禁用了Cookie,该怎么办? 虽然禁用带有cookie的浏览器在互联网上并没有走得太远......但是,仍然有人禁用了他们的cookie,因此CI会话不是一个非常好的候选人......

那么我们如何在codeigniter中使用$ _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();
}

到system / core / Controller.php上的CI_Controller类

答案 2 :(得分:0)

您还可以使用native session extended library

充分利用这两者

引用:

  

对CI_Session的好处   *通过cookie id TTL(生存时间)强化会话固定 - 每隔给定时间自动重新生成cookie id(右   现在在类中配置了) - 请参阅有关使其可选的说明。   *您可以使用所有可用的PHP会话存储驱动程序(数据库,内存缓存等)   *“flash”会话属性(请参阅:“Flash”属性)

     

超过PHPsession的好处   *与CI_Session兼容      - 使用相同的方式,只需加载库,set_userdata(),userdata()      - 轻松将现有应用程序迁移到Native_session      - 需要文档 - 使用CI手册:)   *更好的安全性(自动和手动会话ID重新生成)

     

PHPsession引入了会话命名空间的概念,即恕我直言   鼓励您使用大量的会话变量。我更喜欢   尽可能限制会话的使用(因为   潜在的可伸缩性问题),因此Native_session不会实现   会话命名空间。