【问题标题】:How to enable PHP cookies?如何启用 PHP cookie?
【发布时间】: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


【解决方案1】:

有两个地方可以做到这一点,要么在你的 php 配置中,要么在 htaccess 文件中。

配置

在您的 php.ini 文件中查找并更改此设置:

session.use_cookies=1

heres the docs 在这个和所有其他 cookie 相关的开关上。

注意:如果你不知道你的 php.ini 文件在哪里,从命令行输入$ php --ini,它会告诉你它在 cli 的位置,服务器版本可能会在 apache2/ nginx 文件夹。

htaccess

检查您的 .htaccess 文件中没有此行。

SetEnv session.use_cookies='0';

【讨论】:

  • 感谢您的回答,我刚刚检查了 php.ini 文件,并没有在任何地方看到这部分命令 session.use_cookies=1,我想我必须添加这个命令?跨度>
  • 默认开启。所以我先检查我的答案中的另一个选项。
  • 不,.htaccess 文件中没有 session.use_cookies='0' 命令
  • 而执行这段代码的结果是:string(1) "1"
  • (抱歉,我之前的错误复制粘贴导致您检查错误的参数。)首先检查您的环境(在更改配置之前)以确定这是否是问题所在? var_dump(ini_get('session.use_cookies'));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2013-04-12
  • 2017-09-05
  • 2018-04-16
  • 1970-01-01
相关资源
最近更新 更多