2012-10-04 339 views
1

這段代碼有什麼問題?另一種選擇是什麼?
我沒有得到任何錯誤信息,但每一次我輸入用戶名和密碼的組合,兩者時間它引導我到登錄頁面,即使它是正確....PHP PDO和MYSQL登錄代碼失敗

$query = $conn->prepare("SELECT * FROM login WHERE username = :username AND password = :password"); 
$query->bindParam(":username" , $username); 
$query->bindParam(":password", $password); 
$query->execute(); 
$result = $query->rowCount(); 

if($result>0){ 
    header("location:admin.php");  
}else{ 

    header("location:login.php"); 
} 
+3

代碼看起來很好。它怎麼不起作用?在沒有解釋爲什麼它不起作用的情況下將代碼片段傾倒在我們身上只會讓你低調,並且問題關閉。你也可以解釋你所做的調試。你有沒有檢查你是否連接到mysql好嗎?你檢查查詢是否失敗?你有沒有檢查$ username和$ password是否設置正確?等等等等等等。 –

+0

什麼是錯誤信息?目前的行爲是什麼? – Jocelyn

+6

正如一個側面說明,將未加密的密碼保存在數據庫中被認爲是一個非常嚴重的安全漏洞。 –

回答

1

這可能是由於錯誤的字符集;請嘗試以下步驟:

  1. 將這兩個文件(sender.hml和logger.php)另存爲UTF-8。
  2. 在sender.html中添加<meta charset="utf-8" />
  3. $username = utf8_decode($username);

要測試,編寫代碼之前print

  1. print "SELECT * FROM login WHERE username = '$username' AND password = '$password'"
  2. 複製SQL並執行它變成phpMyAdmin的或其他SQL瀏覽器。

祝你好運!

+0

我以爲我已經超過了多年的HTML切換到它。我是盲目的代碼,花了三天的時間尋找這個,你能看到它嗎?嘆氣'

'我沒有辦法!!!!!讓我看起來像個傻瓜! – Wepex

+0

問題解決了?我不明白你的評論。我沒有說要寫一個方法。我很困惑...... – orafaelreis

+0

問題解決了,最終,這比挫折更有趣。對於html表單,'method'是'method =「$ _ POST」'或'$ _GET',哪個PHP無法處理數據 – Wepex