我正在尝试进行表单验证,但当我尝试在出现错误时打印出数组的内容时,它不会输出任何内容。
$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是有效的。
我只需要更正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个字符。
不应该是:吗
if (strlen($password) < 6) {
array_push($errors, ...);
顺便说一句,你应该至少使用常数而不是幻数,例如
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!");
}
这样,如果您所需的最小长度发生变化,您只需更改一次即可。
您的if
语句搞砸了。您正在检查错误,然后什么也不做,然后在其他地方显示错误。试试这个:
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
,如果太短,则不应大于或等于。