未定义的索引如果我不检查复选框

use*_*111 8 html php checkbox undefined

我似乎在这里发生了奇怪的事情.如果我检查表单上的复选框,那么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>
Run Code Online (Sandbox Code Playgroud)

这里是变量的php,'publishok':

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

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

想不出什么可能导致这种情况.

有人可以帮忙吗?

xda*_*azz 13

如果没有检查,复选框将不会将数据发送到服务器.

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


tot*_*dli 7

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

<input name="publishok" value="0" type="hidden">
<input name="publishok" value="NO" type="checkbox">
Run Code Online (Sandbox Code Playgroud)

  • 呵呵,这就是我正在努力的答案;但我不知道您可以重复这个名字。我以为你必须使用onSubmit函数或类似的东西来设置隐藏值... (2认同)

Cla*_*ass 5

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

if(isset($_POST['publishok'])){
    $publishok = $_POST['publishok'];
}else{
    $publishok = "";#default value
}
Run Code Online (Sandbox Code Playgroud)