我面临一个奇怪的问题。
我正在向一个设置$_COOKIE['cookieName']
的PHP文件发送一个AJAX
然后我在主文件中回应那个cookie。
问题:如果处理AJAX的PHP文件与视图文件位于同一文件夹中,$_COOKIE['cookieName']
将回显正常。但是,如果我将它移动到不同的目录,Ajax响应将成功通过,但'$ _COOKIE'将不会在视图文件中回显,就好像它从未设置过,或者没有'存在。
处理AJAX的文件:
$exp = time()+ 3600;
setcookie("cookieName", "tiger", $exp);
if(isset($_COOKIE['cookieName'])) {
echo "Ajax Response: " .$_COOKIE["cookieName"]. " cookie is set";
} else if(!isset($_COOKIE['cookieName'])) {
echo "Ajax Response: Session NOT SET";
}
视图文件:
<script>
$(document).ready(function(){
var boxText = "test";
$.ajax({
type: "POST",
url: "login.php",
//login.php is in the same directory, so $_COOKIE will echo below.
// If I moved the file to folder/login.php AJAX will come back successfully, but $_COOKIE won't echo...
data: {sendValue: boxText, ajaxSent: true},
success: function(response){
console.log(response);
}
});
});
</script>
<div >
Cookie name is.....<?php echo $_COOKIE['cookieName'];?>
</div>
答案 0 :(得分:7)
你必须设置cookie的$ path参数,否则它只为当前路径设置,如url中所示。
setcookie("cookieName", "tiger", $exp, '/');
答案 1 :(得分:1)
第四个参数是服务器上可以使用cookie的路径。如果设置为“/”,则cookie将在整个域中可用。如果设置为'/ foo /',则cookie只能在/ foo /目录和所有子目录中使用,例如/ foo / bar / of domain。
默认值是设置cookie的当前目录。
setcookie("cookiekey", "value", $exp, '/');
因此,如果您没有设置第4个参数,则会选择当前目录的默认值