【发布时间】:2013-02-06 17:24:06
【问题描述】:
很像Detect if cookies are enabled in PHP 和Check if cookies are enabled 中提出的问题,我想知道是否启用了cookie。
不过,我正在努力使这对用户尽可能透明,因此我对在我的 URL 中附加一些“cookietest=1”参数不感兴趣。
我知道我可以重定向回用户最初输入的页面,取消设置“cookietest=1”GET 参数,然后通过会话告诉原始页面是否禁用了 cookie,但是...
我目前正在使用 CodeIgniter,不想弄乱 CodeIgniter 会话,因此不使用 PHP 会话来存储 cookie 启用/禁用状态。
我实际上不确定使用 PHP 会话是否会弄乱 CodeIgniter 会话,但即使不是,我仍然想知道是否有一些巧妙的解决方案,可以在不设置的情况下进行 cookie 检查一个 GET 参数或使用会话(但是重定向很好)?
更新
看来我需要澄清一点:
我想知道客户端是否启用了cookies。我已经尝试过我链接到的问题中描述的方法,即:
- 设置 cookie。
- 重定向到检查 cookie PHP 页面或使用“cookietest=1”GET 参数的同一页面。
- 查看 cookie 是否仍然设置:如果是 => 万岁,cookie 正在工作!否则 => 嘘,cookie 被禁用。
我要问的是是否可以在不设置 GET 参数的情况下执行此操作(因为这在 URL 中可见)。该问题的答案是“是的,如果您使用 PHP 会话”。
然后我的下一个问题是:是否可以不设置 GET 参数并且不使用 PHP 会话?
【问题讨论】:
-
仅供参考 CodeIgniter 实际上并不使用 cookie,它存储会话密钥,所有数据都存储在会话数据库表中。
-
但它是否使用原生 PHP 会话,如果我开始设置会话变量,可能会以某种方式搞砸,而不是什么?
-
@Dunhamzzz CodeIgniter “确实”使用 cookie,但默认情况下仅存储会话的哈希键。除此之外,您可以将 CodeIgniter 配置为使用基于您在
application/config/config.php中设置的 32 位 md5 哈希的加密 cookie@