PHP如果存在数组值,则回显文本



我有以下PHP脚本,以及一个将POST值发送到PHP页面的HTML表单。我的问题是,当我选择";超控调度消息";并提交表单时,它会显示正确的消息。然而,当我直接转到url.php时,无论表单上提交了什么,它每次都会显示相同的消息。

缩进行为是当表单被提交时;超控调度消息";则url.php将显示">Override处于启用状态,并且将显示rss提要">

如果";显示时间表消息";则选择"否">overide未打开,将显示基于时间的消息数组([0]=>("应显示。

Php代码:

<?php

if ($_POST['override'] == 'value2' ) {
$myArray=array("");
array_push($myArray,"override");
}
else{
$myArray=array("");
}
?>
<?php

if (in_array("override", $myArray)) {
echo "Override is on, and would display rss feed";
echo "<br>";
print_r($myArray);
}
else{
echo "overide is not on, and would display time based message";
echo "<br>";
print_r($myArray);
}

?>

HTML表单

<form style="margin: auto; width: 95%; padding:10px;" action="https://example.com/url.php" method="post" >
<div class="radio">
<input type="radio" name="override" value="value1">
<label class="radio-label">Display message for schedule</label>
</div>
<div class="radio">
<input type="radio" name="override" value="value2">
<label class="radio-label">Override schedule message</label>
</div>
<input class="ppw_submit_btn" type="submit" value="Submit"> 
</form>

这就是HTTP协议的工作方式。该协议是无状态的,这意味着如果两个请求具有相同的内容,服务器应该返回相同的响应。让我们看看你的要求。

提交表单时,您正在向服务器发送POSTHTTP请求。请求参数取自提交的表格。

类似地,当您直接转到URL时,您发送的是一个不带参数的GETHTTP请求。HTTP的无状态性质不允许服务器";记住";提交的表单,因为它是在另一个请求中提交的。

如果你想让服务器记住正在发送的表单,你基本上有两个选项。其中之一是使用cookie,这意味着服务器告诉客户端记住一些东西,并将其与所有以下请求一起发送给服务器。Cookie基本上是对无状态协议的状态的实现。

第二种选择是在服务器上实现某种持久性。这通常意味着数据库或文件存储,具体取决于您要实现的目标。

服务器不会记得上一次请求期间$myArray变量中的内容,但如果将其保存到磁盘或数据库中,则可以在下一次请求中检索上一个值。

查看您的代码,我不明白为什么它没有达到您的目的。我把它复制到LAMP盒子上,它完全按照你的意图工作。您复制并粘贴了错误的文件,或者操作码缓存被配置为不检查文件时间戳。

也许我误解了你今天的努力。

但是,当我直接转到url.php时,每次都会显示相同的消息

我想你的意思是不通过表单访问页面?同一条信息?CCD_ 4将不是"0";值2";因此,如果您不是POSTing override=value2;overide未打开,并且将显示基于时间的消息";。

$_POST和$_GET中的值只会持续php执行和生成页面所需的时间。

最新更新