2010-11-13 45 views
0

我試圖從我的數據庫中讀取數據以找出我是否正確插入它。但是,下面的代碼有一些錯誤。從PHP中的MySQL數據庫讀取線

$pwdcrypt = SHA1($pwd); 
$userregisterquery='INSERT INTO user (email, password) VALUES ('.$email.', '.$pwdcrypt.')'; 
echo $userregisterquery; 
mysqli_query($link, $userregisterquery); 

// echo "Kantaan vietiin sähköposti: ".$email. " ja salasana: ".$pwdcrypt; 

$usergetdataquery='select email, password FROM user WHERE email=\''.$email.'\''; 
//echo $usergetdataquery; 
$result = mysqli_query($link, $usergetdataquery); 
$row = mysqli_fetch_row($result); 
echo "the result is:".print_r($row); 

它輸出

INSERT INTO user (email, password) VALUES ([email protected], fcf007079136b14ee9632ea2e3b1e85a061f5006)select email, password FROM user WHERE email='[email protected]'SELECT user.id FROM user WHERE email = '[email protected]'the result is:1 

在另一方面,正如我在終端檢查表,它輸出只有我通過終端誰擁有不同的e-mail地址插在那裏的用戶ID。爲什麼我看不到通過WWW形式插入的用戶?

回答

0

在行

$userregisterquery= ...

你忘了引號。它必須閱讀:

$userregisterquery='INSERT INTO user (email, password) VALUES ("'.mysql_real_escape_string($email).'", "'.mysql_real_escape_string($pwdcrypt).'")'; 

在行

$usergetdataquery= ...

你有報價,但是你沒有mysql_real_escape_string(),所以它會工作,但它是一個安全問題,如果$email來從外面。

+0

我想你的意思是mysql_real_escape_string() - addslashes()不夠安全。 – JJJ 2010-11-13 22:55:08

+0

我編輯了答案。但是,只要連接字符集是UTF-8或ISO-8859-15,我就不會知道對addslashes()的任何攻擊,因爲它可能位於芬蘭語應用程序中。 – AndreKR 2010-11-13 23:04:46

+0

我對安全問題有以下功能:function clean_input($ s){s} = strip_tags($ s); $ s = stripcslashes($ s); $ s = htmlspecialchars($ s); return trim($ s); } – 2010-11-13 23:55:36