CodeIgniter sessions vs PHP sessions

2022-08-30 11:33:08

我对CodeIgniter相对较新,并且正在制作我的第一个CI项目,其中有用户帐户等。过去,我一直使用 PHP 的 $_SESSION 变量来达到此目的。但是,CI似乎有自己的会话机制,它声称这是“更好的”。

CI的会话机制似乎将所有数据存储在cookie中?就个人而言,我喜欢将所有数据存储在服务器上的想法,使用cookie密钥(如PHPs本机会话机制)进行访问...我是不是傻傻地以为这样更好?我应该接受CI的机制吗?或者我应该继续使用本机PHP会话吗?

你们是做什么的?

谢谢,
马拉


答案 1

根据我对CI的经验,我遇到了一些会话异常,但对于大多数日常需求,该库很好且易于使用。正如有人指出的那样,Flashdata是一个非常好的功能。

如果您选择使用CI的会话,我强烈建议您将会话存储在数据库中,此外,还要加密cookie:

$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database']   = TRUE;
$config['sess_table_name']     = 'sessions';

数据库结构应如下所示:

CREATE TABLE IF NOT EXISTS  `sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(50) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id)
);

答案 2

手册说灵活性更大,而不是更好 ;-)

我认为CodeIgnite会话类的主要好处是它与框架集成,它提供了一些额外的功能,例如IP地址跟踪和它所谓的flashdata(会话数据在读取后立即被删除)。如果您首先使用框架,则意味着这些选项可能对您有吸引力。

无论如何,您还可以将会话数据保存到数据库中:

http://codeigniter.com/user_guide/libraries/sessions.html


推荐