2013-12-14 66 views
0

我正在嘗試爲用戶創建一個表並防止sql注入。bindParam不工作

$hash = sha1($password); 
$stmt = $conn->prepare("insert into users (username, password) values (':username','$hash');"); 
$stmt->bindParam(':username', $user); 
$stmt->execute(); 

出於某種原因,它存儲到表中,如:用戶名,而不是我想要使用的。有人看到反對錯誤?

+4

從查詢中的':username'中刪除引號。請參閱http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks引用命名參數導致它被誤解爲字符串文字。 –

+1

你爲什麼不想綁定$ hash? – user4035

回答

3

嘗試在聲明中結合:username沒有singlequotes:

$stmt = $conn->prepare("insert into users (username, password) values (:username,'$hash');"); 

SHA1是不夠的密碼哈希值,順便說一句。

+0

這工作,我想我需要單引號只是爲了避免sql錯誤。另外,我在學校使用的服務器沒有最新的php,所以我必須使用sha1。 –

+0

你想看看[this](http://www.openwall.com/phpass/)。快樂哈希! :) – DaSourcerer