2014-02-12 148 views
0

我試圖用PHP和mysqli創建簡單的登錄表單,但它不起作用。 到目前爲止,我創建了成功發送數據到數據庫的註冊表單,我還使用sha1加密了密碼。 當我嘗試訪問我以前使用下面附加的代碼存儲的用戶名和密碼時,問題就開始了。 無論我提交它顯示爲:錯誤的用戶名或密碼。 任何人都可以幫助我嗎?我已經花了3天時間,並且仍然無法弄清楚如何使它工作。簡單登錄表單的問題 - PHP

<?php 
include_once ('includes/connection.php'); 
?> 

<!DOCTYPE html> 

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Login Form</title> 
    </head> 
    <body> 
<?php 
if(isset($_POST['submit_login'])) { 

    $username = $mysqli->real_escape_string($_POST['username']); 
    $password = sha1($_POST['password']); 

    $login_query = $mysqli->query("SELECT user_username, user_password FROM sd_users WHERE user_username = '$username' AND user_password = '$password'"); 

    $count = $login_query->num_rows; 

    if ($count == 1) { 

      echo 'You are succesfully login!'; 

     } else { 

      echo 'Wrong username or password'; 

    } 

} 
?> 
     <div class="login-form"> 
      <h3>LOGIN</h3> 
      <form action="index.php" method="post"> 
       <p>Username: 
        <input type="text" name="username" value=""/> 
       </p> 
       <p>Psssword: 
        <input type="password" name="password" value=""/> 
       </p> 
       <input type="submit" name="submit_login" value="Login"/> 
      </form> 
     </div> 
    </body> 
</html> 
+0

確保您在註冊或登錄時正確獲取密碼值。一個空值的'sha1'仍然是sha1。嘗試調試實際查詢中使用的值並查看數據庫,查看爲什麼它們不匹配 – helion3

+0

'$ mysqli-> query(...)或die(mysqli_error($ mysqli));' –

+0

只需確認最初保存在數據庫中的密碼也被SHA1哈希,對不對? – Quixrick

回答

-2

確保您傳遞給MySQL查詢的變量格式正確。爲了把一個PHP變量到一個MySQL查詢,將其更改爲:我

$login_query = $mysqli->query("SELECT user_username, user_password FROM sd_users WHERE user_username = '".$username."' AND user_password = '".$password."'");

注意如何把這些$username$password變量。

我知道你來自哪裏,因爲我經歷了幾個月前用PHP和MySQL創建安全登錄系統的完全相同的過程。如果這不能完全回答這個問題,請告訴我。

+0

字符串連接與此問題無關。 http://www.php.net/manual/en/language.types.string.php –

+0

當你使用「,默認情況下PHP自動分析字符串的變量,所以不需要concat。你只是浪費資源在 – Zarathuztra

+0

我只是改變它,再次運行它,仍然沒有運氣。 – user3277558