【发布时间】:2018-04-09 14:35:49
【问题描述】:
我最近遇到了一个 PHP 会话问题,每次浏览器刷新时会话都会丢失。
我看到 cookie 中没有读取 PHPSESSID。
然后我尝试了这段代码。
echo (isset($_COOKIE['foo']) && $_COOKIE['foo']=='bar') ? 'enabled' : 'disabled';
而且似乎 PHP cookie 被禁用了。
我的问题是:如何启用 PHP cookie?是什么导致了这个问题?
是服务器配置吗?
提前谢谢你。希望能读到别人的解释。
【问题讨论】:
-
没有像 PHP Cookies 这样的东西 - 无论您是从 PHP 还是 JavaScript 设置它们,它都是 HTTP cookie;我假设您 正在 在该回显之前实际设置
$_COOKIE['foo']并且您正在重新加载页面(因为 cookie 第一次不会存在)? -
那个我也用过,还有这段代码 $a = session_id(); session_destroy(); session_start(); $b = session_id(); session_destroy(); if ($a == $b) echo"Cookies ON";否则回显“Cookies OFF”;所以饼干掉了,你怎么看,饼干掉的原因是什么?我已经通过 .htaccess 重定向到 https,我认为这可能是问题,但我删除了那部分命令,问题仍然存在。
-
^ 您现在意识到这将 a) 不起作用并且 b) 根本没有意义?拥有
$a = session_id()之前session_start()将是null。然后你正在销毁一个你还没有开始的会话......等等...... -
哦,是的,我意识到了这一点,但我正在尝试使用此代码检查 cookie 是启用还是禁用: echo (isset($_COOKIE['foo']) && $_COOKIE['foo' ]=='酒吧') ? “启用”:“禁用”;他们被禁用了。
-
是的 - 但您尚未澄清您是否 1) 在此之前实际设置了 cookie(例如使用
setcookie())和 2) 重新加载页面(因为 cookie 第一次不可用周围)。
标签: php session cookies session-cookies