【问题标题】:Cookies not working on different pagesCookie 在不同的页面上不起作用
【发布时间】:2010-01-10 21:44:34
【问题描述】:

好的,我有一个 cookie 集,如果我在 Firefox 中访问私有数据,我可以清楚地看到它... dir),但在网站 (www.example.com) 的索引页面上,它不会回显,它表示未设置 cookie。是的,我启用了 cookie,是的,我尝试清除缓存等等。有任何想法吗? PHP顺便说一句

【问题讨论】:

标签: php cookies


【解决方案1】:

设置 cookie 时你在哪个目录?

来自PHP manual on setcookie(),强调我的:

路径

cookie 可用的服务器上的路径。如果设置为“/”,cookie 将在整个域中可用。如果设置为 '/foo/',则 cookie 将仅在 /foo/ 目录和 domain 的 /foo/bar/ 等所有子目录中可用。 默认值是设置 cookie 的当前目录。

【讨论】:

    【解决方案2】:

    Cookie 可以绑定到特定的域、子域、路径和协议 (http/https)。 PHP中设置cookie时需要指定路径:

    setcookie("TestCookie", "Value", time()+3600 , '/' );
    

    第四个参数将它绑定到站点的根目录,它将在主站点的任何子目录中可用。

    如果您希望它在主域和任何子域中可用,请提供第五个参数,如下所示:

    setcookie("TestCookie", "Value", time()+3600 , '/', '.example.com' );
    

    现在可以在以下位置阅读:

    www.example.com
    example.com/newdir
    awesome.example.com/newdir

    【讨论】:

    • 最后添加“/”、“.example.com”为我解决了这个问题
    • 最佳答案
    【解决方案3】:

    您需要检查设置 cookie 的路径。

    如果不是'/',那就是你的答案!

    【讨论】:

      【解决方案4】:

      是的,试试这个,我也遇到了这个问题,但通过下面的代码解决了。

      setcookie("TestCookie", "Value", time()+3600 , '/' );
      

      【讨论】:

        【解决方案5】:

        设置路径选项;默认值是设置 cookie 的当前目录。因为您在目录 /dir 中设置 cookie,所以它仅在该目录内或该目录下可用。

        你可以通过明确设置路径来解决这个问题,即。

        setcookie(name,value,expire,path,domain,secure) 
        

        将路径设置为“/”。

        【讨论】:

          【解决方案6】:

          你需要在setcookie()中将$path设置为/,如果你想在所有目录中访问它

          【讨论】:

            【解决方案7】:

            Cookies 必须在页面输出之前设置!!! 由于 cookie 是由脚本在 HTTP 标头中发送到浏览器的,因此在发送您的页面之前,必须设置它们在您发送单行 HTML 或任何其他页面输出之前。当您发送任何类型的输出时,您就是在发出 HTTP 标头结束的信号。发生这种情况时,您将无法再设置任何 cookie。如果你尝试,setcookie() 函数将返回 FALSE,并且不会发送 cookie。

            【讨论】:

              【解决方案8】:
              setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/"); // 86400 = 1 day,  '/' denotes cookie available in entire directory.
              

              在另一个页面中:

              $username = $_COOKIE['cookie_username'];
              

              还要确保浏览器没有阻止 cookie。

              如果您还想在子域中使用 cookie:

              setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/", ".subdomain.com"); // 86400 = 1 day,  '/' denotes cookie available in entire directory.
              

              【讨论】:

                【解决方案9】:
                setcookie("Cookie_name", "Cookie_Value", time()+3600 , '/' );
                

                第四个参数 ('/') 将使您的 cookie 可访问父目录中的页面。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-08-10
                  • 1970-01-01
                  • 2013-10-09
                  • 2011-10-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多