我正在尝试进行表单验证,但是当我尝试在出现错误时打印出数组的内容时,它不会输出任何内容。
$errors = array();
if (strlen($password) >= 6) {
array_push($errors, "Your password is not long enough! Must be over 6 characters!");
}
if(count($errors) !== 0) {
...
} else {
echo "There is errors<br/>";
foreach($errors as $er){
echo $er . "<br/>";
}
}
我得到的是“有错误”,所以我知道if else正在运作。
答案 0 :(得分:2)
我只需纠正if
:
if(count($errors) === 0) {
// everything is okay
} else {
echo "There are errors<br/>";
foreach($errors as $er){
echo $er . "<br/>";
}
}
这样,当您的错误计数 0时,将执行if
的内容。如果不为0,则执行else
的内容并打印错误。这与你所做的恰恰相反。
(我还纠正了这句话:'有错误',而不是'有错误':P)
此外,另一个if
也是错误的,它应该是相反的:
if (strlen($password) <= 6) {
因为您需要检查密码少于的时间是否超过6个字符。
答案 1 :(得分:1)
不应该是:
if (strlen($password) < 6) {
array_push($errors, ...);
顺便说一句,你应该至少使用常量而不是magic numbers,例如
define('MIN_PASSWORD_LENGTH', 6);
// ...
if (strlen($password) < MIN_PASSWORD_LENGTH) {
array_push($errors, "Your password is not long enough!"
. " Must be over ".MIN_PASSWORD_LENGTH." characters!");
}
这样,如果您所需的最小长度发生变化,您只需更改一次。
答案 2 :(得分:0)
您的if
声明搞砸了。您正在检查错误,然后什么都不做,然后else就是显示错误的地方。试试这个:
if(count($errors) >0) { //there are errors
echo "There is errors<br/>";
foreach($errors as $er){
echo $er . "<br/>";
}
}else{
//there are no errors
}
此外,如果密码太长,密码长度应不大于或等于<=6
。