我目前正在使用PHP创建一个简单的登录脚本,并且成功登录时必须满足许多条件。据我所知,有两种方法可以格式化所需的if语句。
第一种方法是使用嵌套的if语句:
if ($condition1 == true) {
if ($condition2 == true) {
if ($condition3 == true) {
//Successful login
} else {
}
} else {
}
}
第二种方法是使用过程if语句:
if ($condition1 != true) {
die("error");
}
if ($condition2 != true) {
die("error");
}
if ($condition3 != true) {
die("error");
}
//successful login
处理许多条件的两种方法中哪一种更合乎逻辑?我还没有列出哪些更好,更合理的方法吗?
答案 0 :(得分:3)
在这种情况下,它并不重要,除非您想向用户显示您遇到的所有错误。
例如,您可以这样做:
if($condition1 != true) {
if($condition2 != true) {
if($condition3 != true) {
// Success! Login now...
} else {
die(error3);
}
} else {
die(error2);
}
} else {
die(error1);
}
在这种情况下,用户将被强制修复出现的错误。这可能需要更多时间,但更容易理解。
if ($condition1 != true) {
$error = 'Error 1';
}
if ($condition2 != true) {
$error .= 'Error 2';
}
if ($condition3 != true) {
$error .= 'Error 3';
}
if($error != '') {
die($error);
} else {
// Success! Login now...
}
在这种情况下,用户将同时看到所有错误,并且他或她将能够在再次提交表单之前修复所有错误,但更多信息总是难以理解。
更新
约翰说的是对的。
在下面的某个地方,靠近登录表单和输入,您可以制作如下的PHP代码:
<?php if($error != '') { ?><p style="color:red;"><?php echo $error; ?></p><?php } ?>
显然,您需要使用上面显示的代码来防止服务器在发现错误时尝试登录。
希望这会有所帮助......
答案 1 :(得分:1)
我会做这样的事情:
if(!(condition1)){
$ok = false;
}
if(!(condition2)){
$ok = false;
}
if(!(condition3)){
$ok = false;
}
if($ok){
//if they got here, they must have passed all the tests!
}
可缩短为:
if( !(condition3) || !(condition2) || !(condition3) ){
echo "Success!";
}
来自您的评论:
如果满足“$ condition3”,但“$ condition4”不符合?
您可以使用以下内容:
if( (condition1) && !(condition4) ) {
echo "Hurray! Condition 1 was satisified but condition 4 failed :(";
}
答案 2 :(得分:0)
这对我来说更符合逻辑。因为它在一个语句中表示“登录决策的逻辑”,如果逻辑将变得更加混乱,它仍然是最可读的
if (($condition1 == true)
&& ($condition2 == true)
&& ($condition3 == true)
&& ($condition4 == true)
&& ($condition5 == true)