2013-05-02 32 views
-2

即時通訊嘗試從命令行進行身份驗證,但無法正常工作。 請檢查我的代碼,並讓我知道我錯了什麼地方。從命令行錯誤進行身份驗證

<?php 

echo "enter your username\n"; 

$username = fgets(STDIN); 

echo "your password\n"; 

$password = fgets(STDIN); 

echo "enter your new password\n"; 

$newpassword = fgets (STDIN); 

//connecting to database 

$db = mysql_connect("localhost","sqldata","sqldata") or die(mysql_error()); 

//selecting our database 

$db_select = mysql_select_db("accounts", $db) or die(mysql_error()); 

$sql = mysql_query ("select * from uptable where username ='$username'"); 

$result = mysql_fetch_assoc($sql); 

$oldpassword = $result['password']; 

if ($password != $oldpassword) 
{ 

echo "error"; 

} 

else 
{ 

mysql_query("update uptable set password = '$newpassword' where username ='$username'"); 

echo "Your Password has been successfully changed"; 

} 

?> 
+1

您的腳本似乎很容易受到SQL注入的影響。另外,您不應該以純文本格式存儲密碼。 – Gumbo 2013-05-02 03:29:56

+1

mysql_ *函數不再用於某些問題,如安全性,您可能想要了解** PDO **或MVC **,例如。 CodeIgniter,cakePHP ** – 2013-05-02 03:33:35

+1

你的意思是不工作?像是有錯誤嗎?如果是的話,它說明了什麼? – 2013-05-02 03:34:46

回答

0

改變所有的fgets()分配使用trim(),例如:

$username = trim(fgets(STDIN)); 

通過fgets()返回的字符串包含換行,但在數據庫中的名稱和密碼想必沒有。

+0

謝謝你,它工作得很好。 – user2341520 2013-05-02 03:50:54

+0

您是否嘗試在變量上使用'var_dump()'來查看它們包含的內容?你是如何在發佈前嘗試調試的? – Barmar 2013-05-02 03:58:42

+0

我輸入了正確的用戶名和密碼,它回聲; 「你的密碼已成功更改」;我做了同樣的,但錯誤的用戶名密碼它回聲錯誤;。我不知道var_dump()以及如何使用它。抱歉。 – user2341520 2013-05-03 18:24:10

相關問題