问答中心分类: PHP如何读取PHP中是否选中了复选框?
0
匿名用户 提问 6小时 前

如何读取PHP中是否选中了复选框?

18 Answers
0
regilero 回答 6小时 前

Zend Framework对复选框进行了很好的破解,您也可以自己动手:
生成的每个复选框都与一个同名的隐藏字段相关联,该字段位于复选框之前,值为“0”。然后,如果将复选框设置为值“1”,则在生成的get或POST中始终会得到“0”或“1”值

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
hpaknia 回复 6小时 前

我也注意到了这一点,但我觉得使用它很安全:Zend Framework也这么做!

rybo111 回复 6小时 前

这很有趣。但是,假设选中了复选框,那么用户代理提交第一个值而不是最后一个值的可能性是否很小?

regilero 回复 6小时 前

@rybo111,对于用户代理,我不这么认为,但对于自定义javascript表单解析器,您应该小心。

regilero 回复 6小时 前

当复选框未选中时,它不会在帖子中传输(因此只传输隐藏的内容)。选中后,它将被传输,并将覆盖隐藏值。

matasoy 回复 6小时 前

我真不敢相信这真的管用。真是糟糕的情况。复选框的设计是错误的。谢谢你的回答。

0
rybo111 回答 6小时 前

将复选框用作数组时:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

你应该使用in_array():

if(in_array('Orange', $_POST['food'])){
  echo 'Orange was checked!';
}

请记住先检查阵列是否已设置,例如:

if(isset($_POST['food']) && in_array(...
bcag2 回复 6小时 前

复选框作为数组和foreach ($_POST['food'] as $selected_food)做格子很好,谢谢

0
GautamD31 回答 6小时 前

让您的复选框的html如下

<input type="checkbox" name="check1">

然后在提交表格后,你需要检查一下

if (isset($_POST['check1'])) {

    // Checkbox is selected
} else {

   // Alternate code
}

假设check1应该是您的复选框名称。如果你的表格提交方式是GET那么你需要和$_GET变量,如

if (isset($_GET['check1'])) {

   // Checkbox is selected
}
0
Hammad Khan 回答 6小时 前
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Tarek Kalaji 回复 6小时 前

很快很聪明

Debbie Kurth 回复 6小时 前

我见过的最好的解决方案

0
ZEESHAN ARSHAD 回答 6小时 前

我已经使用这个技巧好几年了,当与PHP和数据库一起使用时,它对选中/未选中的复选框状态没有任何问题。
HTML代码:(用于添加页面)

<input name="status" type="checkbox" value="1" checked>

提示:删除checked如果您想在默认情况下将其显示为未选中
HTML代码:(用于编辑页面)

<input name="status" type="checkbox" value="1" 
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

PHP代码:(用于添加/编辑页面)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

提示:除非用户选中,否则将始终存在空值。因此,我们已经有PHP代码来捕捉它,否则将值保持为0。然后,只需为数据库使用$status变量。

Elvis Technologies 回复 6小时 前

这是在纯简单php中实现这一点的非常好的形式。但是需要注意的是,当复选框被激活时,其值是字符串,如果选中,则为不存在的值。