2015-06-23 67 views
0

是否有可能有if語句和三個else部分?「if」語句中的三個「elses」

我的登錄腳本檢查用戶名,密碼和驗證碼。如果用戶/通行證或驗證碼錯誤,站點會返回一個錯誤,提示「用戶名或密碼不正確」。但是我也希望它在有空白字段時給出一個錯誤(只有一個足以給出錯誤)。我以爲我可以只添加第三個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(); 
} 
?> 
+2

一個'else'每個'if',多少'elseif'只要你想 –

+0

你可能想看'switch()'語句。你可以有一個'else' /'if' –

+1

這個代碼還有幾個問題 - 原始密碼是一個袋子不允許的,而'die'將不起作用,只需發出標題然後退出' –

回答

0

每條if語句只能有一個。如果你嵌套if聲明..你可以有更多的其他..但仍然有一個其他塊每if語句。就我所見,你有兩個條件和三個塊。這不會工作..你將需要刪除最後一個懸掛其他。

如果您正確縮進它,它也會提高您的代碼可讀性。

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

你可能想要使用其他的...如果你有更多的條件來檢查。如果您直觀地繪製流程圖以查看您真正想要實現的內容並對其進行編碼,將會有所幫助。

代碼可以改進很多..但我想這不是你最關心的問題,所以我要離開它。

+0

老實說我不知道如何使用elseif,我只是閱讀它,但我不知道如何將它放入我的代碼中...... Dagon,別擔心,一旦我通過這個混亂,我將加密密碼。 – dcf007

+1

如果不是虛假的,那是真的。如果不是這樣,這是錯誤的。它是一個或另一個,因此如果是其他的話。 PHP沒有elseif,只是「else if」 - if(cond1)do_action1()else if(cond2)do_action2()else if ... etc until ... else do_default_action()。如果有幾個簡單的條件,請考慮switch語句。 – Mike