为什么在选择 none 个单选按钮时,代表单选按钮的键从 HTTP POST 方法的 $_POST 超全局数组中丢失?
Why the key representing radio buttons goes missing from the HTTP POST method's $_POST superglobal array when none of them are selected?
我编写了以下 PHP 代码:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "<pre>";
print_r($_POST);
echo "</pre>";
die;
}
?>
<h2>PHP Form Validation Example</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<br><br>
E-mail: <input type="text" name="email">
<br><br>
Website: <input type="text" name="website">
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
当我提交表单时没有在任何表单中输入数据或 selecting HTML 表单上存在的两个单选按钮中的任何一个,我得到以下结果:
Array
(
[name] =>
[email] =>
[website] =>
[comment] =>
[submit] => Submit
)
在上面的结果中,我可以看到所有输入表单控件的名称,甚至代表文本区域的键也存在于 $_POST
数组中。上面 $_POST
数组输出中唯一缺少的预期内容是代表单选按钮的键 'gender'
这是我的疑惑。为什么它会从 $_POST
数组的输出中丢失?
当我填写表单控件时,select任何单选按钮都工作正常,没有任何问题。
是否有任何其他类似的 HTML 表单控件,其行为类似于我编写的上述代码中的单选按钮?
请有人消除我的疑问并向我解释这种行为背后的原因。
谢谢。
因为当您不select无线电输入时,不会向服务器发送任何数据。
如MDN所示:
Note: If no radio button is selected when the form is submitted, there
is no value submitted to the server to represent the unselected state
(e.g., value=unselected); the value is not submitted to the server at
all.
我编写了以下 PHP 代码:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "<pre>";
print_r($_POST);
echo "</pre>";
die;
}
?>
<h2>PHP Form Validation Example</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<br><br>
E-mail: <input type="text" name="email">
<br><br>
Website: <input type="text" name="website">
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
当我提交表单时没有在任何表单中输入数据或 selecting HTML 表单上存在的两个单选按钮中的任何一个,我得到以下结果:
Array
(
[name] =>
[email] =>
[website] =>
[comment] =>
[submit] => Submit
)
在上面的结果中,我可以看到所有输入表单控件的名称,甚至代表文本区域的键也存在于 $_POST
数组中。上面 $_POST
数组输出中唯一缺少的预期内容是代表单选按钮的键 'gender'
这是我的疑惑。为什么它会从 $_POST
数组的输出中丢失?
当我填写表单控件时,select任何单选按钮都工作正常,没有任何问题。
是否有任何其他类似的 HTML 表单控件,其行为类似于我编写的上述代码中的单选按钮?
请有人消除我的疑问并向我解释这种行为背后的原因。
谢谢。
因为当您不select无线电输入时,不会向服务器发送任何数据。 如MDN所示:
Note: If no radio button is selected when the form is submitted, there is no value submitted to the server to represent the unselected state (e.g., value=unselected); the value is not submitted to the server at all.