2011-04-16 150 views
1

這是我的創建帳戶的MySQL查詢。爲了方便起見,我省去了鹽分。用哈希密碼和用戶登錄新手php問題

$q = $dbc -> prepare("INSERT INTO accounts (username, email, password) 
         VALUES (?, ?, ?)"); 
$q -> execute(array($_POST['username'], $_POST['email'] 
         ,hash('sha256', $_POST['password']))); 

這是做我想做的,將散列密碼插入數據庫,現在我的登錄腳本;

if ($count == 1 && $info['password'] === hash('sha256', $_POST['password']) 
       && $info['logcount'] != -1) { // successful login 

此語句總是返回假的,我已經嘗試了不同的操作,即(=,= =),我相信這是一個簡單的解決方案。

另外,如果你有任何良好的醃製技術,請分享:)

謝謝。

+1

在旁註:[散列密碼的一點點閱讀](http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-到神祕約-s.html)。 – Czechnology 2011-04-16 14:31:22

+0

這已被收藏書籤了很好的鏈接謝謝。 – Basic 2011-04-16 14:34:53

+0

你'print_r($ info)'和'echo hash('sha256',$ _POST ['password'])''? – 2011-04-16 14:40:40

回答

-1

爲什麼用===進行類型檢查?也許只是

$info['password'] == hash('sha256', $_POST['password']) 

+0

閱讀它所說的問題:'我嘗試了不同的操作,即(=,==),' – Johan 2011-04-16 14:45:35

+0

對於PHP哈希鹽看到的問題: http://stackoverflow.com/questions/401656/secure-hash-and-鹽換PHP-密碼 – Johan 2011-04-16 21:39:51