2013-10-22 37 views
-2

我有一個簡單的登錄腳本,這導致了一些麻煩。這一段代碼,一旦用戶輸入已被驗證運行:將Mysqli_query轉換爲用於散列的字符串

$salt = mysqli_query($dbc, "SELECT salt FROM members WHERE Email='$email'"); 
$salt1 = $salt;//I'm not sure of the need for this line. 
$hash = sha1($salt1 , $pass); 

此代碼需要從數據庫中的鹽,然後用它散列在輸入的密碼,以檢查對數據庫的密碼。我遇到的問題是這樣的:

Warning: sha1() expects parameter 1 to be string, object given... 

如何將查詢轉換爲字符串。我知道我在使用sha1,但那只是暫時的。我做的事很愚蠢嗎?我只是最近纔回到PHP,所以有人不知道該怎麼辦?

非常感謝!

回答

1

您需要從查詢中獲取結果,以便將其用作數組。

$query= mysqli_query($dbc, "SELECT salt FROM members WHERE Email='$email'"); 
$row= mysqli_fetch_array($query); 

$salt = $row['salt']; 
2

請記住,由mysqli_query執行的SQL查詢可能會在結果中返回多個行。您可以通過調用mysqli_fetch_row或類似方法檢索這些行的內容。

另外,請注意SQL注入。您當前正在執行的查詢是易受攻擊的。

+0

謝謝你的快速反應。請問如何實現這一點,就像我做'$ salt1 = mysqli_stmt_fetch($ salt);'時,我得到錯誤Warning:mysqli_stmt_fetch()期望參數1爲mysqli_stmt,object given'。 –

0

你可以做這樣的事情,simplt替換此

$row= mysqli_fetch_array($salt); // fetch the array 

$salt1 = $row['salt']; 

$hash = sha1($salt1 , $pass); // encrypt 
相關問題