dourou9477 2015-06-23 20:56
浏览 59
已采纳

“if”陈述中的三个“elses”

Is it possible to have an if statement with three else parts?

My login script checks the username, password and captcha. If the user/pass or captcha is wrong, the site return with an error saying "username or password incorrect". But I also want it to give an error when there are blank fields (just one is sufficient to give the error). I thought I could just add a third else{ but Dreamweaver gives an error.

How can I achieve this?

<?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();
}
?>
  • 写回答

1条回答 默认 最新

  • duanchou6534 2015-06-23 20:58
    关注

    There can be only one else per if statement. If you are nesting if statement .. you can have more else .. but still one else block per if statement. As I see it , you have two if conditions and three else blocks. That will not work .. you will need to remove one last dangling else.

    Also it will improve your code readability if you indent it properly.

        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();
        }
    

    You may want to use else if ... just in case you have more conditions to check. It will help if you visually draw a flowchart to see what you really want to achieve and then code it.

    The code can be improved a lot .. but I guess that's not your primary concern here so I am leaving that .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?