2012-09-11 154 views
-1

我有這個問題與密碼加密,現在,我使用MD5 ..我知道這是不是最安全的,但反正。問題與加密密碼

我有這樣的代碼:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','md5($data[1]).','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')"; 

現在,在數據庫中該帖像它的價值是:我的意思即

MD5(A101)

哪有我解決這個問題?

+0

***你真的不應該使用[MD5密碼哈希值(http://security.stackexchange.com/questions/19906/is-md5-considered-insecure)***,你真的應該使用PHP的[內置函數(http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼的安全性。在散列之前,請確保你[不要越過密碼](http://stackoverflow.com/q/36628418/1011527)或使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –

+0

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can- I-防止-SQL注入式-PHP)***。瞭解[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi] [準備](http://en.wikipedia.org/wiki/Prepared_statement) (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)並考慮使用PDO,[這真的很簡單](http://jayblanchard.net/demystifying_php_pdo.html)。 –

回答

2

功能是不是一個變量,SOP不能雙引號解析:

$import=" 
    INSERT into users 
    (Username,Password,Email,first_name,last_name,phone,user_id) 
    values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')"; 

雖然PHP在雙引號內解析變量,但它不會查找每個可能的函數。您將需要打破字符串和使用. concat函數Concat的值。

+0

等等......我開始恨你++ :) –

+0

我該如何解決這個問題?這是因爲,我用它來插入一個csv文件.. – blerta

+0

哦,它的工作:)謝謝你... – blerta

2
$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) 
     values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')"; 

這應該工作。

你不能做這樣的事情$str = "$str1";與函數調用,所以你必須做這樣的事情:$str = "'" . md5($str1) . "'"

+0

THankyou非常多:) – blerta

1

你不能調用函數那樣:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('$data[0]','".md5($data[1])."','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]')"; 
+1

+1(非常遲到)如果正確答案Mihal :) – Fluffeh

1

在純PHP,你認爲echo "md5($data[1]).";會調用該函數?當然不是,它是字符串的一部分。

您需要連接的MD5電話:

"blah blah blah".md5($data[1])."more blah"; 
0

您的實際問題是,你放在一個函數調用成一個字符串,你可以簡單地拼接的md5的返回值到您的字符串是這樣的:

'" . md5($data[1]) . "' 

儘管如此,請不要寫這樣的刀片,這是危險的,如果$data包含用戶輸入。

你幾乎是總是使用預處理語句將數據插入到數據庫中更好。我強烈建議你拿起閱讀PDO/MySQLi的,或至少是如果你不使用它已經,mysql_real_escape_string

0

對於一個,使用一個字符串數組內將無法正常工作。您需要結束該字符串並對數組元素進行分析以使其具有它們的值。對於諸如md5()函數的函數也是如此。

嘗試:

$import="INSERT into users(Username,Password,Email,first_name,last_name,phone,user_id) values('".$data[0]."','".md5($data[1])."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."')"; 

我希望這有助於。