我明白在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>