尝试从Codeigniter中的cookie获取会话ID但是......

Bri*_*n C 3 php codeigniter

我正在尝试从Codeigniter中的$ _REQUEST/$ _ COOKIE中检索会话ID.问题是它返回以下内容,我不知道如何访问它:

a:4:{s:10:"session_id";s:32:"f42269d0f23d0310b0274a580c90627e";s:10:"ip_address";s:13:"128.128.128.128";s:10:"user_agent";s:50:"Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/2010010";s:13:"last_activity";i:1311979074;}ffcb685c182ffbbb1affd1ee49a558df
Run Code Online (Sandbox Code Playgroud)

世界上是什么以及如何拉取会话ID(f42269d0f23d0310b0274a580c90627e)?

Anh*_*ham 5

它是php serialize()输出,使用http://www.php.net/manual/en/function.unserialize.php将其转换回PHP数据类型


Dwa*_*ton 5

看起来您正在错误地访问会话数据.您看到的序列化数据存储在数据库中,或者如果您没有在会话cookie中使用数据库.要获取会话ID,您应该使用Codeigniter会话"userdata".

所以要获得会话ID,你会去: $this->session->userdata('session_id');

请记住,Codeigniter会话不是本机PHP会话,因此您必须使用会话类函数来正确获取值.我对unserialize()函数的理解是它在性能上非常昂贵,你可能不希望不必要地增加使用它的开销.

  • Codeigniter具有内置功能,可检测请求是否为AJAX请求.它会检测使用AJAX请求发送的标头,如果您使用jQuery来执行AJAX请求,我认为它会发送相应的标头.这个函数可能就是你想要的:$ this-> input-> is_ajax_request() - 在这里查看输入类的文档:http://codeigniter.com/user_guide/libraries/input.html (3认同)