CodeIgniter会话与PHP会话

Mal*_*ala 44 php session codeigniter

我是CodeIgniter的新手,我正在制作我的第一个CI项目,其中有用户帐户等.过去,我总是使用PHP的$ _SESSION变量.然而,CI似乎有自己的会话机制,它声称"更好"

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

你们做什么的?

谢谢,
麻辣

Cin*_*mon 34

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

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

$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database']   = TRUE;
$config['sess_table_name']     = 'sessions';
Run Code Online (Sandbox Code Playgroud)

数据库结构应如下:

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)
);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.经过更多的研究,我发现应该从会话cookie名称中删除下划线,因为这会导致IE窒息. (9认同)

Álv*_*lez 8

手册说的更灵活而不是更好 ;-)

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

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

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