【问题标题】:Simple cookie will not set简单的 cookie 不会设置
【发布时间】:2012-02-04 01:45:09
【问题描述】:

我之前设置了 cookie,它们运行良好。我基本上已经将该代码复制到另一台服务器上的另一个网页上,但该代码不起作用。代码在 if 语句中,但我知道它的触发,因为我还将代码回显到浏览器进行调试,它会显示出来。

<?php
    // Set some cookies
            $user = stripslashes($_POST['user']);
            $password = md5($_POST['password']);
            $hour = 0; // Changed to expire on browser close, was time() + 86400;

            setcookie(Panel_ID, $user, $hour); echo "setcookie(Panel_ID, $user, $hour);";
            setcookie(Panel_PW, $password, $hour); echo "setcookie(Panel_PW, $password, $hour);";
?>

然而,当我进入下一页并检查所有存在的 cookie 时,这两个都没有设置。

<?php     
echo "Cookies set are...";
print_r($_COOKIE);    
?>

当时有一些 cookie,但它们来自网站上的一个论坛,而不是我设置的两个。

我什至尝试了一个非常简单的 cookie 来排除变量问题或任何问题:

<?php
  setcookie(test,scott,0);
?>

而且那个也没有设置。

【问题讨论】:

  • 您是在 plaintext 的 cookie 中设置用户密码?
  • 不,它实际上已经在代码中进一步转换了。
  • 那里,现在它也显示在这里;)

标签: php cookies setcookie


【解决方案1】:

setcookie 的第一个参数应该是一个字符串...看起来您只是将 cookie 名称作为变量输入。尝试在第一个参数周围加上引号。

【讨论】:

  • 没有变化,同样,同样的事情在我的另一台服务器上也能正常工作,第一部分没有引号。
【解决方案2】:

终于找到答案了。

我发现了一些关于 cookie 的帖子,其中提到在 setcookie 之前不能创建 HTML。我移动了我的代码,但仍然有问题(没有变化)。然后我移动了我的代码,以便在另一个部分之前触发它。基本上该页面有一个 if(isset($user)) 和一个 if not set。我将 if isset 移到了另一部分的上方,这样在设置 cookie 之前肯定不会读取任何 HTML(即使它不应该是因为它位于未触发的 if 语句中)。这终于奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2011-07-25
    • 2013-08-22
    相关资源
    最近更新 更多