我似乎在这里发生了奇怪的事情。 如果我检查表单上的复选框,那么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>
这里是变量的php,'publishok':
$IP = $_SERVER["REMOTE_ADDR"];
$publishok = $_POST['publishok'];
$test = $_POST['test'];
if ($test != 'park') die ("Wrong input. Sorry. Go back, try again");
我怀疑我的编辑器PSPad正在添加虚假(和不可见)字符代码或其他东西,所以我升级到了最新版本。没有区别。
想不到会导致这种情况的原因。
有人可以帮忙吗?
答案 0 :(得分:11)
复选框不会将数据发送到服务器。
您必须使用isset($_POST['publishok'])
检查它是否在服务器端进行了检查。
答案 1 :(得分:6)
这是因为如果未选中复选框的数据,则不会将其发送到服务器。 有点破解是在复选框之前使用具有相同名称的隐藏输入字段,因此如果取消选中该复选框,则会发送该值。
<input name="publishok" value="0" type="hidden">
<input name="publishok" value="NO" type="checkbox">
答案 2 :(得分:0)
我相信复选框和单选按钮如果没有选中/选中则不发送获取/发布数据(你可以通过在$ _GET / $ _ POST上执行var_dump / print_r来验证这一点)所以你应该做类似的事情:
if(isset($_POST['publishok'])){
$publishok = $_POST['publishok'];
}else{
$publishok = "";#default value
}
答案 3 :(得分: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";
} ?>>
答案 4 :(得分:0)
$_POST['wc_use_taxes'] = !isset($_POST['wc_use_taxes'])? "" : $_POST['wc_use_taxes'];
此代码将在未设置的发布变量中设置空值,如果设置了该变量,它将使其等于发布的值。所以我想这样做会是个好主意。