如何解决php setcookie无法与ajax调用一起使用
如果您没有在中添加$path
值setcookie()
,则默认为“当前目录”。这意味着,如果您将cookie从/web/DEV/Classes/SetCookie.PHP
设置为/web/DEV/Classes/
,则cookie设置为,并且该路径上方的任何内容都不会看到该cookie。
要解决此问题,请将特定的$path添加到setcookie。如果您的应用程序在域根目录(example.com)上运行,请使用'/'
。如果位于子文件夹(example.com/myapp/)中,请使用'/myapp/'
setcookie("TestCookie", $var, time()+60*60*24*30, '/');
解决方法
我有一个页面test.php,其中包含以下代码:
<html>
<body>
<form>
<script type="text/javascript">
function SendCookies(){
if (window.XMLHttpRequest)/* code for IE7+,Firefox,Chrome,Opera,Safari */
{ xmlhttp=new XMLHttpRequest(); }
else /* code for IE6,IE5 */
{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status == 200)
{
alert('done');
}
}
xmlhttp.open("GET","/web/DEV/Classes/SetCookie.php?time=" + new Date());
xmlhttp.send();
}
</script>
<input type="text" id="txtInput" name="txtInput"/>
<input type="button" id="btnSubmit" name="btnSubmit" value="Submit" onclick="SendCookies()"/>
<div id="divTest">
<?php
if (isset($_COOKIE["TestCookie"])) {
echo $_COOKIE["TestCookie"];
} else {
echo "__Results__";
}
?>
</div>
</form>
</body>
</html>
我有一个页面,SetCookie.php,其中包含以下代码:
<?php
$var = "THIS IS A TEST";
setcookie("TestCookie",$var,time()+60*60*24*30);
?>
当单击test.php的按钮时,我使用XMLHttpRequest来调用我的SetCookie.php页面。该页面将执行,因为如果我向其添加回显,则会在xmlhttp响应中得到它。但是,TestCookie似乎没有设置。
如果在text.php中,我执行与SetCookie.php中相同的命令,则将为所有浏览器会话相应地设置cookie。
即使在我关闭/打开浏览器之后,从我在test.php页面中手动设置它以来,cookie仍然保持不变。
- - 编辑 - - -
我补充说:
if(!setcookie("TestCookie","A",time()+60*60*24*30,"/")) {
echo "FAIL";
}
到test.php的最上端,但是,当我重新加载页面时,它永远不会显示更新的cookie … 因为该cookie已设置为不带“”
/“参数,并且以后无法使用”“ /进行修改”参数。
清除缓存并使用建议的代码后,我从浏览器中清除了cookie,并使用set方法的添加参数,从而能够操作所有页面中的cookie !!!非常感谢!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。