我很遗憾不断提出愚蠢的问题,但我试图研究这个并找不到它。
这次,我希望能够在决定设置cookie之前检查数组的_POST。这是我的片段。
<?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和标题的其他代码工作正常。任何想法??
答案 0 :(得分:1)
检查是否设置了post数组变量。
if(isset($_POST['arr']))
{
if(in_array("value", $bArray)
{
setcookie("choice1","true",time()+20);
}
}
答案 1 :(得分:1)
不确定你在这里问的是什么,但很清楚你提供的代码可能无法按预期运作。
您在调用setcookie()之前输出正文内容。因此,除非您启用了输出缓冲,否则它将失败。设置20秒的到期时间也是一个愚蠢的想法 - 客户端时钟不太可能同步。
还有一些浏览器在重定向后忽略所有后续标头。此外,根据处理的时间,某些浏览器会在重定向后丢弃连接 - 如果没有ignore_user_abort(),这可能会导致代码过早终止。
此外,大概是解析数据/设置cookie的原因 - 在浏览器的重定向请求进行之前,您如何确定已完成?
我希望能够在决定设置cookie之前检查数组的_POST
很明显,您提供的代码在设置Cookie之前没有检查任何内容 - 为什么要将其包含在您的问题中?