2017-04-15 134 views
0

我使用php和mysqli創建登錄頁面,但是,當我輸入錯誤的用戶名和密碼時,它不能顯示錯誤消息。If-else語句總是運行login.php中的else語句

<?php 

session_start(); 
$error=""; 
//connect database 
include("../task2/db_setting.php"); 

if($_SERVER["REQUEST_METHOD"]=="POST"){ 

    //email and password from form 
    $email = mysqli_real_escape_string($conn,$_POST['email']); 
    $password= md5(mysqli_real_escape_string($conn,$_POST['password'])); 

    //Retrive data from database 
    $sql = "SELECT * FROM user WHERE email='$email' and password = '$password'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
     $_SESSION["login_user"]=$row[email]; 
     $_SESSION["id"]=$row[id]; 
     } 
    } 
    else { 
     $error="Your Login name or password is invalid"; 
    } 

    if(isset($_SESSION["login_user"])) 
     header("location:account.php"); 
}?> 

如果我輸入一個錯誤的用戶名,其不僅無法登錄,但並未出現在$錯誤,我試圖改變它的回聲,但轉了,它總是會呼應了錯誤信息我登錄之前或輸入任何東西。我認爲這意味着代碼總是運行else語句。

任何人都知道我的代碼中出了什麼問題?

+0

混合OO和功能mysqli,okaaaay。 –

回答

0
<?php 
    if(isset($error)) 
    { 
    echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$error.'</div>'; 
    } 

?> 
+0

添加此行您想要的位置顯示錯誤信息 –

+0

Omg它正在工作,謝謝謝謝謝謝。 –

+0

我可以知道背後的理論是什麼嗎?爲什麼我的原始代碼無法工作? –

-1

如果(isset($ _ POST [ '提交']))

{

$電子郵件= mysql_real_escape_string($ _ POST [ '電子郵件']);

$ upass = mysql_real_escape_string($ _ POST ['pass']);

$ res = mysql_query(「SELECT * FROM users WHERE email ='$ email'」);

$ row = mysql_fetch_array($ res);

如果($行[ '密碼'] == MD5($ upass))

{

$_SESSION['user'] = $row['id']; 

header("Location: account.php"); 

}

其他

{

?>

<script>alert('You Entered Wrong Details');</script> 

    <?php 

}