更多的cookie问题,php

问题描述:

我很抱歉不断询问愚蠢的问题,但我试图研究这个,并找不到它。更多的cookie问题,php

这次,我想能够检查一个数组的_POST,然后决定可以设置cookie。这是我的片段。

<?php 
header('Location: http://www.site.com/ler.php') ; 
?> 
<?php 
setcookie("choice1","true",time()+20); 
?> 


<?php 

$match_id = strtoupper($_POST["arr"]); 


//var_dump(implode($_POST)); 


$bArray = array(
"A"=>"1", 
"B"=>"2", 
"C"=>"3", 
"D"=>"4", 
"ETC"=>"5"); 

我需要在cookie之前设置数组和变量,因为我想使用array_key_exists条件。我尝试切换订单,但没有做任何事情。我知道这不是标题,因为其他代码与cookie和标题工作正常。有任何想法吗??

+2

你的问题可能不是愚蠢的,但它绝对是不可理解的。你想达到什么目的? – Gumbo

+0

我想设置一个cookie,但只有当所有的条件($ _POST值在数组中作为键之一)是真的)我的问题是它看起来不像是在设置cookie之前设置数组或允许的,所以我不知道如何去比较它与允许的值。所有这些cookie都会告诉页面重定向到提交值成功。 – user1159454

+0

[Headers already sent](http://*.com/questions/8028957/headers-already-sent-by-php)可能有重复,如果您的实际问题确实是声明顺序。 – mario

不确定你在这里问什么,但它清楚地表明,你提出的代码可能不会像你期望的那样工作。

您在调用setcookie()之前输出主体内容。所以除非你启用了输出缓冲,否则它会失败。设置20秒的失效时间也是一个愚蠢的想法 - 客户端时钟不太可能被同步。

还有几个浏览器在重定向后忽略所有后续标题。此外,取决于处理的时间,一些浏览器会在重定向后丢弃连接 - 如果没有ignore_user_abort(),可能会导致代码过早终止。

此外,大概是有解析数据/设置cookie的原因 - 在浏览器发出重定向请求之前,您如何确定这已完成?

我希望能够检查_POST对数组,决定它的确定设置Cookie

前的明显,您所提供的代码不设置cookie前检查什么 - 为什么你把它包含在你的问题中?

检查post数组变量是否设置。

if(isset($_POST['arr'])) 
{ 
if(in_array("value", $bArray) 
{ 
setcookie("choice1","true",time()+20); 
} 
} 
+0

嘿纳文,谢谢,但我想要做的不只是接受它,如果它被设置,但如果它匹配的数组值之一。 – user1159454

+0

我已经更新了答案 –