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