【问题标题】:PHP isset for cookie not workingcookie的PHP isset不起作用
【发布时间】:2016-08-25 05:18:59
【问题描述】:

我在使用 PHP 中的 cookie 的条件语句时遇到了一些问题。

我想根据是否设置了 cookie 来更改图像的状态。这是我的代码(在 MAIN.PHP 文件中):

$cookie = "d_content_vote_".$databaseArray['id']; 
if(!isset($_COOKIE[$cookie])) {
  // display image 1 if cookie is not set
}
else { 
  // display image 2 if cookie is set
}

cookie 值(时间戳)在 ../INCLUDES/RATING.PHP 中设置,我对该文件进行了 ajax 调用。为了调试,我在 RATING.PHP 中做了一个print_r($_COOKIE),它给了我这个:

Array
(
    [d_content_vote_1] => 1402726678
    [d_content_vote_4] => 1402727148
    [PHPSESSID] => effa8778efbe1b3dfb5bb301e359997d
)

但是,当我在 MAIN.PHP 中执行 print_r($_COOKIE) 时,我没有得到 d_content_vote_* cookie,只有会话信息。

如何传输在 rating.php 中设置的 cookie,以便在 main.php 中使用它。我以前从未遇到过这个问题。

[附加信息:我现在正在 MAMP 服务器上构建站点]

【问题讨论】:

  • 检查页面是否被缓存。
  • 感谢@IagoMelanias,但我使用的是本地 MAMP 服务器并在每次重新加载时刷新缓存,所以不是这样。
  • $databaseArray。向我们展示您的阵列
  • 你调试的时候是print_r($_COOKIE[$cookie])还是print_r($_COOKIE)
  • cookie 设置的路径是什么?请显示您的setcookie() 代码,因为将为当前脚本的路径设置默认路径,而不是/。因此,不同的脚本不会显示相同的 cookie。

标签: php cookies


【解决方案1】:

我意识到我的 cookie 正在设置,并且 print_r 是在子目录 (/includes) 中的文件中完成的,因此不能在根目录中使用。为了让它在根目录下工作,我需要在函数中添加另一个属性:

setcookie($name, $value, $time, "/");

最后一个参数“/”保证cookie可以在根目录下使用。

【讨论】:

    【解决方案2】:

    当用户进行注销过程时删除 cookie 会怎样?如果我们在设置cookie时使用了4个参数,那么在注销过程中是否需要同时采用这4个参数?

    setcookie($NomeCookieLogOut, "", time()-3600);
    

    setcookie($NomeCookieLogOut, "", time()-3600, "/");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2020-09-23
      相关资源
      最近更新 更多