所有提交的字段都在 $_POST 数组中可用。所以我们可以遍历这个数组来检查必填字段的值是否存在。 代码如下:

<?php
$post = $_POST;
if(count($post) > 0) {

    foreach($post as $key => $value) {

        if(empty($post[$key])) {
        $message =  $key . " is required!";
        break;
        }
    }

}
?>

我想要这个 Action :

例如,当用户名字段为空时,将打印消息 input1 是必需的!。 input1 与用户名字段的名称相同。

我想回显用户名是必需的,但不更改用户名字段的名称。

例如,像下面这样的代码,但不起作用,我不知道在哪里以及如何!
if($key == 'input1'){
    $key = 'username';
}
else
if($key == 'input2'){
    $key = 'password';
}

在以下代码中形成和输入元素:
<html>
<head>
<style>
.tableheader {
    background-color: #CCC;
    color:white;
    font-weight:bold;

}
.tablerow {
    background-color: #f9f9f9;
    color: #333;
}
.message {
    color: #FF0000;
    font-weight: bold;
    text-align: center;
    width: 100%;
    padding: 10;
}

</style>
</head>
<body dir="rtl">
<div align="center" class="message"><?php if(isset($message)) echo $message; ?></div>
<form name="registrationform" method="post" action="" style="direction: ltr">

<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td align="center" colspan="2">Registration Form</td>
</tr>
<tr class="tablerow">
<td align="right">Username</td>
<td><input type="text" name="input1" value="<?php if(isset($_POST['input1'])) echo $_POST['input1']; ?>"></td>
</tr>
<tr class="tablerow">
<td align="right">Password</td>
<td><input type="password" name="input2" value="<?php if(isset($_POST['input2'])) echo $_POST['input2']; ?>"></td>
</tr>


<tr class="tableheader">
<td align="center" colspan="2"><input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
</body></html>

最佳答案

如果理解正确……您需要另一个数组,您可以在其中保留输入字段名称及其实际“人类”名称的“映射”。就像是:

$fields_map = array(
  'input1' => 'Username',
  'input2' => 'Password',
  'whatever' => 'something'
)

..然后,当您想将消息输出给用户时,您可以执行以下操作:
if(empty($post[$key])) {
   $message =  $fields_map[$key] . " is required!";
}

关于PHP 表单验证 - foreach,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32987654/

10-11 05:15