gpt4 book ai didi

php - 多个复选框共享相同的名称

转载 作者:技术小花猫 更新时间:2023-10-29 12:41:52 26 4
gpt4 key购买 nike

根据 w3c,“表单中的多个复选框可以共享相同的控件名称。因此,例如,复选框允许用户为同一属性选择多个值。”但是,如果您这样做,PHP 将只取最后一个值。例如:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet" value="dog" />Dog<br />
<input type="checkbox" name="pet" value="Cat" />Cat<br />
<input type="checkbox" name="pet" value="bird" />bird<br />
<input type="checkbox" name="pet" value="iguana" />iguana<br />
<input type="submit" />
</form>

如果您提交该表单,您将看到只有最后出现的复选框被设置。浏览器将它们全部发送,但它们会相互覆盖。因此,为多个复选框设置相同的名称可能会导致问题。一直都是这样吗?我似乎记得实际上可以将所有值作为数组发送。

我知道您可以在名称末尾添加一个 [] 来创建一个值数组:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet[]" value="dog" />Dog<br />
<input type="checkbox" name="pet[]" value="Cat" />Cat<br />
<input type="checkbox" name="pet[]" value="bird" />bird<br />
<input type="checkbox" name="pet[]" value="iguana" />iguana<br />
<input type="submit" />
</form>

但是 w3c 没有具体说明。老实说,我不记得我是否总是在名称末尾使用 [],但出于某种原因,我想在某些时候我没有。过去有没有什么时候你可以在没有 [] 的情况下让它工作?

http://www.w3.org/TR/html401/interact/forms.html#checkbox

最佳答案

如果没有 [],那将永远无法工作,在 PHP 中不行。

W3C 没有具体说明服务器端如何处理查询字符串。 (忽略不相关的 obsolete corner of the CGI spec ,它只与 PHP 相关,因为直到最近它还是一个安全漏洞)。

由于您描述的原因,该模式看起来像是有效标记,但并不常用。

类似的模式用于单选按钮,一次只能选择一个。 (事实上​​ ,给 radio 输入相同的名称是浏览器知道将它们视为一个组的方式)。也许这就是您的想法。

关于php - 多个复选框共享相同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com