我正在寻找一种在提交表单后创建条件检查的方法。每个字段都不同(日期,名称,职业等),我想检查每个字段的一组条件。这样做最有效的方法是什么?我能想到的唯一方法是很多if / else语句或一个开关。我想知道是否有办法将所有检查放入数组中,例如。
[field_name conditional_check acceptable_values error_response]
然后循环遍历数组中的每一行并返回适用的错误响应?这样我就可以减少硬编码的东西。
由于
答案 0 :(得分:0)
是的,您可以运行多个if条件并将错误消息存储在数组中。让我举个例子:
$errors = array();
if(/*condition 1*/) {
$errors[] = "Message 1";
}
if (/*condition 2*/) {
$errors[] = "Message 2";
}
if (/*condition 3*/) {
$errors[] = "Message 2";
}
if (!empty($errors)) {
$strMsg = "<ul>Please fix the following errors:";
foreach($errors as $error) {
$strMsg .= "<li>$error</li>";
}
$strMsg .= "</ul>";
echo $strMsg;
}
希望这有帮助。
和平!的xD
答案 1 :(得分:0)
我相信您的POST
数据会是这样的:
$_POST => array(
"username" => "",
"password" => "",
"confpass" => "",
"emailadd" => "",
"phonenum" => "",
"acceptcn" => ""
);
您可以使用这样的复杂条件检查器。
<?php
$conditions = array(
"username" => array(
"required" => true,
"validate" => function () {
return (strlen($_POST["username"]) > 5);
}
),
"password" => array(
"required" => true,
"validate" => function () {
return (strlen($_POST["password"]) > 5);
}
),
"confpass" => array(
"required" => true,
"validate" => function () {
return ($_POST["password"] == $_POST["confpass"]);
}
),
"emailadd" => array(
"required" => true,
"validate" => function () {
return is_email($_POST["emailadd"]);
}
),
"phonenum" => array(
"required" => false,
"validate" => function () {
if ((!empty($_POST["phonenum"]) && $conditions["phonenum"]["required"]) || !$conditions["phonenum"]["required"])
return (strlen($_POST["phonenum"]) == 10 || empty($_POST["phonenum"]));
else
return false;
}
),
"acceptcn" => array(
"required" => true,
"validate" => function () {
return $_POST["acceptcn"];
}
)
);
?>
然后遍历$_POST
数组并调用validate
函数。