Cookie无法在不同页面上运行

时间:2010-01-10 21:44:35

标签: php cookies

好的我有一个cookie设置,如果我在Firefox中访问私人数据,我可以清楚地看到它......好吧,当我在某个目录中的某个页面上回显它时,它可以工作,(www.example.com/ dir),但在网站的索引页面(www.example.com)上,它不会回显,它说没有设置cookie。是的我启用了cookie,是的,我尝试清除缓存等等。有任何想法吗? PHP btw

9 个答案:

答案 0 :(得分:22)

设置cookie时你在哪个目录?

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

  

<强>路径

     

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

答案 1 :(得分:18)

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

设置路径选项;默认值是设置cookie的当前目录。因为您在目录/ dir中设置了cookie,它只能在该目录中或在其下面。

通过明确设置路径,即

来解决这个问题
setcookie(name,value,expire,path,domain,secure) 

将路径设置为“/".

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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.

答案 8 :(得分:0)

setcookie("Cookie_name", "Cookie_Value", time()+3600 , '/' );

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