Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使cookie不稳定时出现意外行为_Php_Cookies_Setcookie - Fatal编程技术网

Php 使cookie不稳定时出现意外行为

Php 使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

我在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['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接受评论。