我在jQuery中创建cookie。我可以在Firefox中验证它。但是当我尝试打印cookie或分配到另一个值时,我无法得到它。我也使用会话。我用PHP开始了会话。 我打印或分配cookie值的代码如下所示
echo $_COOKIE['a'];
用于分配值
$b=$_COOKIE['a'];
使用jQuery创建的cookie是
$.cookie("a",$(this).val());
我在哪里弄错了?我怎样才能获得cookie值?
答案 0 :(得分:3)
要在PHP中设置cookie的值,请使用setcookie
函数:
setcookie("a", "foobar");
但是,这样做需要在输出到客户端之前运行代码(并发送HTTP头。所以基本上,你不能做这样的事情:
<div>
<p>Here's my cookie!</p>
<?php
setcookie("foo", "bar");
?>
</div>
在您拥有任何HTML之前,您需要致电setcookie
。
此外,如果您在客户端上设置cookie值,则需要从该客户端发出请求以获取cookie值。如果您只是在服务器上运行任意代码,则客户端不会重新发送它的cookie。
最后,服务器正在处理的页面和JS所在的页面需要位于同一个域中。如果不是,浏览器就不会发送相应的cookie。
希望这有帮助!
答案 1 :(得分:2)
可以完全不使用jQuery在PHP中设置cookie。
..然而...
您似乎在this way.
中使用了jQuery可能导致问题的原因有以下几点:
a)$(this).val()
可能会返回NULL。
b)您没有在cookie上设置路径和到期日。如果您有子目录,通常最好设置一个主cookie ,即根路径'/'
。
要使用PHP读取您的Cookie,请尝试此操作...
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
...并在数组中搜索您的"a"
Cookie。
有关使用完全PHP设置和阅读Cookie的更多文档,请查看here.
在将任何其他代码回显到页面之前,您必须调用此函数。 (在标题之前)
答案 2 :(得分:1)