为什么 PHP 的 $_POST 变量从 HTML 的 name 属性而不是 id 属性中获取值?



我明白在PHP中访问HTML表单元素的值时,我们必须在$_POST变量中使用name属性。然而,我不确定我理解为什么就是这样。在我看来,$_POST使用id属性并利用投保的唯一性可能会更好,而不是潜在地发现多个值,如果超过1个表单元素共享相同的name。我确信为什么使用name属性而不是id有一个很好的理由,但我还没有能够挖掘出来,并好奇地了解为什么。

简单的例子:

index . html

<html>
<form action="./some_script.php" method="post">
<input type='text' id='text_input_id' name ='text_input_name'>
<input type='submit'>
</form>
</html>

some_script.php

<?php
$value_from_id = $_POST["text_input_id"]; // will be null
$value_from_name = $_POST["text_input_name"]; // will contain text input from form
?>

主要原因是表单在id出现之前被添加到HTML中。

但是,在HTML文档中,ID必须是唯一的,而名称则不是。您可以有多个具有相同名称的表单控件。

有时这是必需的,例如为了创建一个无线电组:

<form>
<input type="radio" name="availability" value="yes" id="availability_yes">
<label for="availability_yes">Yes</label>
<input type="radio" name="availability" value="no" id="availability_no">
<label for="availability_no">No</label>
<input type="radio" name="availability" value="if need be" id="availability_inb">
<label for="availability_inb">If Need Be</label>
</form>

,有时它只是有用的(例如,当从一个列表中挑选东西时)。

<form>
<fieldset>
<legend>Acceptable Colours</legend>
<input type="checkbox" name="colours[]" value="red" id="colours_red">
<label for="colours_red">Red</label>
<input type="checkbox" name="colours[]" value="green" id="colours_green">
<label for="colours_green">Green</label>
<input type="checkbox" name="colours[]" value="blue" id="colours_blue">
<label for="colours_blue">Blue</label>
</fieldset>
</form>

相关内容

  • 没有找到相关文章

最新更新