我正在建立一个关于体育的非常小的社交网站。
我想问一个更有经验的开发人员,如果使用本机会话或ci会话库会更好吗?如果是ci库,最好使用数据库商店吗?
感谢您的选择
答案 0 :(得分:3)
CI会话库可以帮助您快速上手,为您提供比本机会话更大的灵活性。但请记住,CI_Session类非常偏执;您可能会遇到意外的会话过期,特别是对于AJAX密集的应用程序。
我建议参加CI会议,并提出以下警告:
sess_update()
函数以防止意外过期)此外,如果您需要比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不会实现 会话命名空间。