13

我似乎在这里发生了一件奇怪的事情。如果我选中表单上的复选框,则 php 脚本运行完美。如果我不选中该框 php 报告另一个变量的未定义索引。

那是使用 IIS localhost,检查事情。

在网络上,发布的相同脚本无论如何都有效。嗯,几乎一模一样。我在本地添加了一个变量'test' POST-ed 到 php 并与硬编码值进行比较。就这样。

这是复选框的html:

<tr>
<td>Publish Comment?</td>
<td><input name="publishok" value="NO" type="checkbox"> Check Box For Do spanstyle="font-weight: bold;">Not</span> Publish</td>
</tr>
<tr>

这是变量 'publishok' 的 php:

$IP = $_SERVER["REMOTE_ADDR"];
$publishok = $_POST['publishok'];
$test = $_POST['test'];
if ($test != 'park') die ("Wrong input. Sorry. Go back, try again"); 

我怀疑我的编辑器 PSPad 添加了虚假(和不可见)的字符代码或其他东西,所以我升级到了最新版本。没有不同。

想不出是什么原因造成的。

任何人都可以帮忙吗?

4

5 回答 5

18

当您没有选中复选框时,复选框不会将数据发送到服务器。

您必须使用isset($_POST['publishok'])它来检查它是否在服务器端进行了检查。

于 2013-09-04T01:12:05.353 回答
8

发生这种情况是因为如果未选中复选框的数据不会发送到服务器。对此的一个小技巧是在复选框之前使用具有相同名称的隐藏输入字段,因此如果未选中复选框,则将发送该值。

<input name="publishok" value="0" type="hidden">
<input name="publishok" value="NO" type="checkbox">
于 2013-09-04T01:20:24.797 回答
5

我相信如果未选中/选中复选框和单选按钮,则不会发送获取/发布数据(您可以通过在 $_GET/$_POST 上执行 var_dump/print_r 来验证这一点),因此您应该执行以下操作:

if(isset($_POST['publishok'])){
    $publishok = $_POST['publishok'];
}else{
    $publishok = "";#default value
}
于 2013-09-04T01:12:47.410 回答
0
$_POST['wc_use_taxes'] = !isset($_POST['wc_use_taxes'])? "" : $_POST['wc_use_taxes'];

此代码将在未设置的已发布变量中设置空值,如果已设置,这将使其等于发布的内容。所以我想这样做是个好主意。

于 2020-05-19T06:47:01.783 回答
0
<input class="form-check-input" type="hidden" id="" name="check_box" value="0"> 

<input class="form-check-input" type="checkbox" id="gridCheck" name="check_box" value="1" 
<?php if ($_POST['check_box'] == "1") {
  print "checked";
 } ?>>
于 2020-01-08T07:21:22.920 回答