我的网站上有一个简单的注册表格。关于空字段,不正确的字符等,有各种验证规则。
我有一个名为$error
的变量,该变量最初设置为0,但是如果发生验证错误,则将其设置为1,另一个变量$error_message
将显示错误消息本身。下面是一个示例:
if (strlen($firstName) == 0) {
$error = 1;
$error_message = "<br/> First name is required";
}
if (!preg_match($expName, $firstName)) {
$error = 1;
$error_message = 'The First Name you entered does not appear to be valid.<br />';
}
if (strlen($lastName) == 0) {
$error = 1;
$error_message = "<br/>Last name is required";
}
if (!preg_match($expName, $lastName)) {
$error = 1;
$error_message = 'The Last Name you entered does not appear to be valid.<br />';
}
每当出现错误时,注册都会失败,并且会通知用户它是什么错误,没有姓氏,名字上的错误字符等。 我遇到的问题是,即使用户的表单中存在多个验证错误,也只会显示一条错误消息。
我的具体问题是:如果确实存在多个错误消息,如何显示多个错误消息?
我曾考虑过设置$error = ()array;
并使用while循环可能遍历并显示每个错误消息,但是我不确定是否可以保留0和1来进行错误标记,如果这样做是有意义的。
这可能吗?
我已经浏览了有关此主题的一些答案,但它们似乎与显示数据库中的多行有关,我在此特定页面上没有这样做。
下面是应该显示错误消息的容器/列(PHP生成)。
<div class='icon-center-check-circle'>
<i class='fas fa-times-circle'></i>
</div>
<div class='col-md-succ'>
<br>Error with registration:</br>
<br>$error_message</br>
<br><a href = 'register.php' <button type = 'Submit' name = 'Submit'>Try Again</button></a></br>
</div>
</div>
</div>
Thanks for your time and any advice you can share!
答案 0 :(得分:1)
将错误存储在$error_message
数组中,然后只需使用empty
来测试是否存在任何错误。无需设置单独的标志。
$error_message[] = 'Last name is required';
然后显示它们:
<?php
if (!empty($error_message)) {
echo '<br>Error with registration:</br>';
foreach ($error_message as $error) {
echo '<br>' . $error . '</br>';
}
}
?>
答案 1 :(得分:0)
只是一个小例子:
<?php
$errors = [];
$someVar = '';
if (empty($someVar)) {
$errors[] = 'need input';
}
if (!false) {
$errors[] = 'another error';
}
$errorsOccured = count($errors) > 0;
foreach ($errors as $error) {
echo $error . PHP_EOL;
}
如果使用数组,则可以在最后检查是否发生错误。 (如果没有错误,则数组将为空。) 运行代码可以在这里找到: