我有一个我通过ajax提交的表单,我想返回一个空字段列表的消息。
我已经完成了所有这些工作并且已经粉碎了,但它似乎真的很长时间在PHP方面啰嗦。
如何以较少复杂的方式进行以下操作?
<?php
if(empty($_POST["emailaddress"])){
$error = 'true';
$validation_msg = 'Country missing.';
if(empty($error_msg)){
$error_msg .= $validation_msg;
} else{
$error_msg .= '\n' . $validation_msg;
}
}
if(empty($_POST["password"])){
$error = 'true';
$validation_msg = 'Country missing.';
if(empty($error_msg)){
$error_msg .= $validation_msg;
} else{
$error_msg .= '\n' . $validation_msg;
}
}
if(empty($_POST["firstname"])){
$error = 'true';
$validation_msg = 'First name missing.';
if(empty($error_msg)){
$error_msg .= $validation_msg;
} else{
$error_msg .= '\n' . $validation_msg;
}
}
if(empty($_POST["lastname"])){
$error = 'true';
$validation_msg = 'Last name missing.';
if(empty($error_msg)){
$error_msg .= $validation_msg;
} else{
$error_msg .= '\n' . $validation_msg;
}
}
if($error){
header('HTTP/1.1 500 Internal Server Error');
header('Content-Type: application/json');
die($error_msg);
}
?>
答案 0 :(得分:4)
循环遍历$_POST
数组
$error_msg = '';
foreach($_POST as $key => $val){
if(empty($val)){
$error = 'true';
$error_msg .= $key." missing.\n";
}
}
答案 1 :(得分:2)
我建议使用php Zebra Form库。它允许您以面向对象的方式构建验证规则,并自动生成javascript以进行客户端验证。
答案 2 :(得分:2)
尝试这样的事情:
$error_msg = array()
if(empty($_POST["lastname"])){
$error_msg[] = 'Last name missing.';
}
....
if($error_msg){
header('HTTP/1.1 500 Internal Server Error');
header('Content-Type: application/json');
die(implode("\n", $error_msg);
}
它会生成一系列错误消息。如果数组中有任何内容,请将其内嵌到字符串中并返回该字符串。
答案 3 :(得分:0)
我需要做一个很大的改进$error_msg
数组,这会删除if (empty($error_msg)) {}
部分。
$error_msg = array();
然后使用以下方法添加错误消息:
$error_msg[] = $validation_msg;
然后,您可以在每次发现错误时删除$error = 'true'
,最后验证$error_msg
数组的内容:
if(count($error_msg) > 0){
答案 4 :(得分:0)
怎么样
<?php
$array = new array{{"firstname","First Name"},{"lastname", "Last Name"}};
然后遍历数组
if(empty($_POST[$array[i][0])){ $error = 'true'; $validation_msg .= $array[i][1] ' missing.' . "\n";
我现在无法访问PHP,所以没有经过测试,但这个想法会起作用。代码可能需要调整
答案 5 :(得分:0)
由于您的代码非常重复,您应该考虑编写一个执行验证的函数:
$msgStack = array();
function validate($field, $msg, $msgStack) {
if(empty($field)) {
$error = 'true';
$msgStack[] = $msg;
}
}
并将其称为
validate($_POST['firstname'], 'Firstname is empty', $msgStack);
然后输出所有消息,如
echo implode(PHP_EOL, $msgStack);
答案 6 :(得分:0)
if(empty($_POST["emailaddress"]) || empty($_POST["password"]) ||
empty($_POST["firstname"]) || empty($_POST["lastname"]) ){
$error = TRUE;
if ( empty($_POST["emailaddress"]) )
$field = 'Email Address';
else if ( empty($_POST["password"]) )
$field = 'Password';
else if ( empty($_POST["firstname"]) )
$field = 'First Name';
else
$field = 'Last Name';
$validation_msg = $field . ' missing.';
if(empty($error_msg)){
$error_msg .= $validation_msg;
} else{
$error_msg .= '\n' . $validation_msg;
}
}