是否可以拥有包含三个if
部分的else
声明?
我的登录脚本会检查用户名,密码和验证码。如果用户/密码或验证码错误,网站将返回错误,说明"用户名或密码不正确"。但是我还希望它在有空白字段时给出错误(只有一个足以给出错误)。我想我可以添加第三个else{
,但Dreamweaver会出错。
我怎样才能做到这一点?
<?php
$username=$_POST["username"];
$password=$_POST["password"];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($con, $username);
$password = mysqli_real_escape_string($con, $password);
$query = mysqli_query($con, "SELECT * FROM $tbl_name WHERE username='$username' and password='$password'");
$result = mysqli_num_rows($query);
if($result===1){
session_start();
$_SESSION["username"] = $username;
if(isset($_POST["captcha"])&&$_POST["captcha"]!=""&&$_SESSION["code"]==$_POST["captcha"])
{
header('location:admin.php');
exit();
}
else{
session_destroy();
die(header("location:lgin.php?codeFailed=true&reason=code&user=$username"));
exit();
}
}
else{
session_destroy();
die(header("location:lgin.php?loginFailed=true&reason=login"));
exit();
}
else{ //dreamweaver gives an error here
session_destroy();
die(header("location:lgin.php?blank=true&reason=blank"));
exit();
}
?>
答案 0 :(得分:0)
每个if语句只能有一个。如果你正在嵌套if
语句..你可以有更多其他..但是每个if语句仍然有一个阻塞。在我看来,你有两个if条件和三个else块。那将无法运作..你需要删除最后一个悬挂的其他东西。
如果你正确地缩进它,它也会提高你的代码可读性。
if ($result === 1) {
session_start();
$_SESSION["username"] = $username;
if (isset($_POST["captcha"]) && $_POST["captcha"] != "" && $_SESSION["code"] == $_POST["captcha"]) {
header('location:admin.php');
exit();
} else {
session_destroy();
header("location:lgin.php?codeFailed=true&reason=code&user=$username")
exit();
}
} else {
session_destroy();
header("location:lgin.php?loginFailed=true&reason=login")
exit();
}
如果你有更多的条件可以检查,你可能想要使用else。如果您直观地绘制流程图以查看您真正想要实现的内容然后对其进行编码,将会有所帮助。
代码可以改进很多..但我想这不是你主要担心的问题,所以我要离开了。