将php会话数据存储在cookie中

时间:2013-05-28 17:40:34

标签: php codeigniter

我知道默认的PHP会话存储机制是一个文件,通常在tmp中。 session_id是在cookie中携带的。

我也希望将少量的会话数据存储在cookie中。 (就像Rails默认一样。)

问题:是否有一个php库可以为我处理这个问题,还是需要使用session_set_save_handler等来自行处理?

已添加:只是 CodeIgniter session class可用吗?

2 个答案:

答案 0 :(得分:2)

你需要问自己为什么你这样做。如果您提供会话ID,则可以访问会话本身中存在的任何信息。如果您喜欢以任何其他方式执行此操作,则必须使用自己的会话系统。

以下是针对您的想法的几点:

  • Cookie最大尺寸(4kb)。 CI cookie溢出实际上很常见。
  • 文件服务器端的信息保证防篡改(或作为服务器防篡改)。 Cookie中的信息不是
  • 如果是“OMG DISK READ”这件事吓到你了 - 你总是可以绑定redis作为你的会话管理员。这样做实际上是微不足道的。
  • 最后,当您的代码被移植到其他地方时,您将拥有一个重要的PITA

假设你还想这样做(你确定吗?),答案就是设置另一个cookie。 PHP会话处理程序最好不要乱用,因为如果更改出错,可能会在整个地方投掷500秒。第二个cookie是你最好的选择。

答案 1 :(得分:-1)

试试这个

$newdata = array(
                   'username'  => 'johndoe',
                   'email'     => 'johndoe@some-site.com',
                   'logged_in' => TRUE
               );

$this->session->set_userdata($newdata);



$this->input->set_cookie($newdata);