Php 使cookie不稳定时出现意外行为
我在php中取消设置cookie后遇到了一个问题。这是我的密码 controller.phpPhp 使cookie不稳定时出现意外行为,php,cookies,setcookie,Php,Cookies,Setcookie,我在php中取消设置cookie后遇到了一个问题。这是我的密码 controller.php setcookie("alert",'String',time()+3600,'/'); header("Location: ../home.php"); home.php if(!empty($_COOKIE['alert']) && $_COOKIE['alert'] != ''){ malert($_COOKIE['alert']); $_COOKIE['al
setcookie("alert",'String',time()+3600,'/');
header("Location: ../home.php");
home.php
if(!empty($_COOKIE['alert']) && $_COOKIE['alert'] != ''){
malert($_COOKIE['alert']);
$_COOKIE['alert'] = '';
setcookie('alert', '', time()-1000);
setcookie('alert', '', time()-1000, '/');
print_r($_COOKIE);
}
主页加载时,功能malert
起作用。但是我希望当页面再次刷新时,它会跳过if条件。。问题甚至是在再次刷新home.php后,进入if状态。我是否在页面刷新中遗漏了关于cookie的任何信息
打印输出为
Array ( [PHPSESSID] => xxx [alert] => String )
Array ( [PHPSESSID] => xxx [alert] => )
注意:当我在该文件夹中使用
.htpassword
时,我无法使用会话
只需尝试setcookie('alert','',1)代码>在print\u r()之后调用setcookie()。输出内容后不能调用setcookie(),因为标题已经发送。这行不是setcookie('alert','',time()-1000)代码>取消设置cookie?在这种情况下,if语句将不会在第二页输入。@andrewsi在刷新其输入ifIs malert()时输出任何内容?@JP yes jus-echo'alert(str);'代码>当您再次转到页面时,它是否按预期工作,没有刷新?因为您可以对输出进行c处理,所以它的值为null。。但在再次刷新页面后,如果输入if conditionNo,则该值将变为null,因为他直接写入$\u COOKIE($\u COOKIE['alert']='';)。PHP在加载页面时设置$\u COOKIE,但调用setcookie()不会改变同一脚本实例中的$\u COOKIE。在打印
中取消设置后,COOKIE为[alert]=>
为空
。那么我可以知道为什么刷新时它会进入if
状态。在您的评论中,您提到malert()
将内容输出到浏览器。使用发送到浏览器的标题设置cookie。但是,一旦输出内容,这些标题就无法发送。如果您调用malert()
并输出内容,则立即调用setcookie()
实际上不会设置cookie,因为已经发送了标题!解决方案是在设置cookie后调用malert()
。我不知道cookie是使用发送到浏览器的标题设置的,并且在发送标题后无法发送。。ThanX接受评论。