CI(codeigniter)框架中使用set_cookie无效的问题

事件描述

本地开发,使用到了cookie,于是就用了CI框架的 set_cookie() 方法,但是用的过程中手贱把 $secure 参数值设置成了 TRUE,于是cookie一直设置不成功。。。

CI(codeigniter)框架中使用set_cookie无效的问题_第1张图片

需要注意的3点

  1. 参数 $secure 如果设置成 TRUE 时,只能通过HTTPS传输才能正确的设置cookie。
    这一点,在CI的文档中并没有详细说明,只是在参数介绍中有英文的说明(见上图)
    但是,分析CI的代码发现,CI中的 set_cookie() 方法,最终调用的是PHP的
    setcookie() 方法,手册中对每个参数有详细的介绍(又一次提醒我,一定要仔细看文档啊!!!)

如果线上为HTTPS,而本地为HTTP,那么可以这样来解决

CI(codeigniter)框架中使用set_cookie无效的问题_第2张图片
  1. 参数 domain 的设置
    手册的介绍是这样的:
CI(codeigniter)框架中使用set_cookie无效的问题_第3张图片

其中标注的语句很容易忽略,CI的文档中有补充和举例说明 链接跳转

如果需要设置一个全站范围内的 COOKIE ,而不关心用户是如何访问你的站点的, 可以
将 domain 参数设置为你的 URL 前面以句点开头,如:.your-domain.com
  1. 参数 expire 需要注意
    expire表示cookie的过期时间,但是,CI中 set_cookie() 方法和PHP中的 setcookie() 方法中的值却不同,CI中需要传入 以秒为单位的剩余时间 ,PHP中需要传入 剩余时间的时间戳
CI文档.png
PHP手册.png

你可能感兴趣的:(CI(codeigniter)框架中使用set_cookie无效的问题)