【问题标题】:Cookie Not Being Set in PHPCookie 未在 PHP 中设置
【发布时间】:2012-09-27 20:32:19
【问题描述】:

在 PHP 中设置 cookie 有问题。 如果选中复选框,这是我用来设置 cookie 的代码。

<?php 
    if(isset($_POST['remember'])){
    setcookie("loggedemail",$email,"time()+3600","/");
    setcookie("loggedpassword",$password,"time()+3600","/");
    echo $_COOKIE['loggedemail'];
    echo $_COOKIE['loggedpassword'];
}
?>

这里的“记住”是我用来设置 cookie 的复选框的 ID。 这里的问题是

  • 当我在 chrome 的资源选项卡上看不到 cookie 点击“检查元素”。
  • 我看不到任何回声。
  • 未设置 cookie。

另外,当有人退出会话时,我无法删除会话 cookie。 session_destroy(); 似乎没有起作用,因为 Chrome 仍然显示要设置为活动的 cookie。

我该如何解决这些问题?

【问题讨论】:

    标签: php session-cookies setcookie


    【解决方案1】:

    如果你这样做:

    setCookie("cookieName", "value", time() + 3600);
    

    它必须工作(如果您没有更改任何浏览器设置)。但是,该变量在页面的下一次加载之前不可用。不过,您应该能够在 Chrome 开发工具中看到它。如果没有,请在设置 cookie 之前 100% 确保您没有输出任何内容。

    关于您的第二个问题,session_destroy() 破坏了一个会话,但它不会使已经发送到客户端的 cookie 无效。您需要通过设置它们的过期时间来手动使它们失效。

    【讨论】:

      【解决方案2】:

      $_COOKIE 的值是通过读取从浏览器接收到的 cookie 来设置的。

      为了从浏览器接收 cookie,它必须:在 PHP 中设置 -> 浏览器应该加载 -> 用户应该导航到下一页(或提交表单)。

      所以基本上,如果您使用setcookie,您将无法读取$_COOKIE,直到下一次刷新。这就是echos 没有显示任何内容的原因。他们显示NULL - 确认使用var_dump,您将看到输出。

      【讨论】:

        【解决方案3】:

        您将时间作为字符串传递。这是问题所以改变你的PHP代码如下

        setcookie("loggedemail",$email,time()+3600,"/");
        setcookie("loggedpassword",$password,time()+3600,"/");
        

        Cookie 不是会话的一部分,因此您不能使用 session_destroy()。

        如果要删除cookie,则必须将时间设置为过去时间,如下所示

        setcookie("loggedemail", "", time()-3600);
        

        【讨论】:

        • 抱歉,我将 name 属性设置为“remember”而不是 id。我的错。但是,我仍然不确定为什么没有创建 cookie。我按照您的代码建议通过时间来检查。还有什么想法吗?
        • 你在 var_dump($_POST) 中得到了什么??你得到 $email 和 $password 的价值了吗??
        【解决方案4】:

        session_destroy() 不会取消设置其中包含会话 ID 的 cookie,它只会丢弃会话数据。

        您说复选框具有“记住”的 id 属性 - 它是否具有名称属性?如果不是,这就是为什么所有内容都无法正常工作的原因,ID 不会发布到每个 HTML 定义的表单操作中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-11
          • 1970-01-01
          • 1970-01-01
          • 2015-12-22
          • 2019-07-25
          相关资源
          最近更新 更多