2015-10-07 129 views
2

所有提交的字段都在$ _POST数组中可用。因此,我们可以遍历这个数组,以检查是否必填字段的值存在或not.The代码如下:PHP表单验证 - foreach

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

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

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

} 
?> 

我想这个动作:

例如,当用户名字段为空消息打印输入1是必需的! 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> 
+2

我似乎不明白你问什么。你能更清楚一点吗? – NaijaProgrammer

+0

@NaijaProgrammer 例如,当用户名字段为空时,打印的消息是input1是必需的! input1与用户名字段的名称相同。 我想回声用户名是必需的,但不更改用户名字段的名称。 – Mohammad

+1

您必须使用'switch'语句或找到一种方法来映射要显示的实际名称,例如username到表单名称,例如input1 – NaijaProgrammer

回答

1

试试:

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

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

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

} 
?> 
5

如果理解正确的话......你需要另一个数组,你会保持一个“地图“的输入字段的名称和他们的实际”人“名称。喜欢的东西:

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

..then,当你想将消息输出到用户,那么你会做这样的事情:

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

那!那是美丽:) –

1

你必须使用一个switch陈述或找到一种方法将要显示的实际名称(例如用户名)映射到表单名称,例如input1。

这样的映射的例子介绍如下:

$map = array('input1'=>'username', 'input2'=>'surname', 'input3'=>'othernames'); 
$post = $_POST; 
if(count($post) > 0) { 

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

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