PHP: 检查 $_POST-Array 是否包含 empty/not 设置值?
PHP: Check if $_POST-Array contains empty/not set values?
想象一个 $_POST-Array
与 input-types/elements 不同的形式。我想遍历数组并检查用户是否填写了所有字段或从所有 select-下拉列表中选择了一个非默认选项。
在下面的代码中,我尝试使用函数 postContainsEmptyValues()
,但这不适用于 select 字段(编辑:它适用于文本输入)。
我必须如何更改代码?
(编辑:根据 brombeers 提示更新代码(删除禁用))
<?php
if (isset($_POST["btSubmit"])) {
if (postContainsEmptyValues()) {
echo "empty form element detected";
} else {
echo "all form-fields have been filled";
}
}
function postContainsEmptyValues()
{
$emptyElementDetected = false;
foreach ($_POST as $element) {
if ($element == "" || !isset($element)) {
$emptyElementDetected = true;
}
return $emptyElementDetected;
}
}
?>
<form action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
你的函数 returns true
如果缺少元素,但你回显 empty element found
如果函数 return false
禁用表单 elements/options 提交表单时不会发送。从您的 <option>
中删除 disabled
属性:
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
来自 https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled:“Boolean disabled 属性,当存在时,使元素不可变、不可聚焦,甚至不随表单提交。”
编辑:您将返回 内部 foreach
循环,因此只会检查第一项。将 return
移出循环。完整的工作代码:
<?php
if(isset($_POST['btSubmit'])) {
if (postContainsEmptyValues()) {
echo "empty form element detected";
}
}
function postContainsEmptyValues()
{
$emptyElementDetected = false;
foreach ($_POST as $element) {
if ($element == "" || !isset($element)) {
$emptyElementDetected = true;
}
}
return $emptyElementDetected;
}
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
稍微shorter/more你的函数的性能版本(这个returns当一个空元素被发现时,不需要检查所有元素):
function postContainsEmptyValues()
{
foreach ($_POST as $element) {
if (empty($element)) {
return true;
}
}
return false;
}
想象一个 $_POST-Array
与 input-types/elements 不同的形式。我想遍历数组并检查用户是否填写了所有字段或从所有 select-下拉列表中选择了一个非默认选项。
在下面的代码中,我尝试使用函数 postContainsEmptyValues()
,但这不适用于 select 字段(编辑:它适用于文本输入)。
我必须如何更改代码?
(编辑:根据 brombeers 提示更新代码(删除禁用))
<?php
if (isset($_POST["btSubmit"])) {
if (postContainsEmptyValues()) {
echo "empty form element detected";
} else {
echo "all form-fields have been filled";
}
}
function postContainsEmptyValues()
{
$emptyElementDetected = false;
foreach ($_POST as $element) {
if ($element == "" || !isset($element)) {
$emptyElementDetected = true;
}
return $emptyElementDetected;
}
}
?>
<form action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
你的函数 returns true
如果缺少元素,但你回显 empty element found
如果函数 return false
禁用表单 elements/options 提交表单时不会发送。从您的 <option>
中删除 disabled
属性:
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
来自 https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled:“Boolean disabled 属性,当存在时,使元素不可变、不可聚焦,甚至不随表单提交。”
编辑:您将返回 内部 foreach
循环,因此只会检查第一项。将 return
移出循环。完整的工作代码:
<?php
if(isset($_POST['btSubmit'])) {
if (postContainsEmptyValues()) {
echo "empty form element detected";
}
}
function postContainsEmptyValues()
{
$emptyElementDetected = false;
foreach ($_POST as $element) {
if ($element == "" || !isset($element)) {
$emptyElementDetected = true;
}
}
return $emptyElementDetected;
}
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="POST">
<select name="selectBox1">
<option value="" selected>-- choose one --</option>
<option value="a">choose a</option>
<option value="b">choose b</option>
</select>
<select name="selectBox2">
<option value="" selected>-- choose one --</option>
<option value="x">choose x</option>
<option value="y">choose y</option>
</select>
<input type="text" name="tfText" value="">
<input type="submit" name="btSubmit">
</form>
稍微shorter/more你的函数的性能版本(这个returns当一个空元素被发现时,不需要检查所有元素):
function postContainsEmptyValues()
{
foreach ($_POST as $element) {
if (empty($element)) {
return true;
}
}
return false;
}