我是數據庫新手。我的問題是我想用他/她的安全代碼更新用戶密碼。這裏的安全代碼將由用戶在註冊時輸入(任何地點/城市/朋友/叔叔的名字等)。我已經創建了表名details
如何使用用戶唯一的安全代碼更新數據庫中的密碼
FNAME
LNAME
PASS
BDAY
EMAIL
CODES(//users security code)
我有一個PHP文件,檢查了這一點,但是,有些事情腳麻Secured.php:
<? $CODES = $_POST['CoDes'];
$PASS = $_POST['pass'];
mysql_connect('localhost','user','pass');
mysql_selectdb('userdb') or die(mysql_error());
$query = mysql_query(sprintf("UPDATE `details` SET PASS = '$PASS' WHERE CODES = '$CODES'"));
mysql_real_escape_string($CODES) or die(mysql_error()); while($row = mysql_fetch_assoc($query))
{$rows[1] = $row;}
if(empty($rows[1][CODES]))
{ header("Location: http://localhost/Error.html"); }
else{
echo "Welcome,";
echo " your password has changed successfully to $PASS";
}
?>
<b>You can login</b><a href="http://localhost/login.html><em> here.</em></a><br>
<img src="http://localhost/images/logo.gif">
本頁面並沒有給我任何PHP錯誤,而是去/錯誤。 html即使用戶的安全代碼存在於代碼中012ES任何幫助都會非常感謝。
您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http://php.net/manual/) EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin
除了SQL注入:永遠不要保存密碼而不散列它,永遠不會打印出密碼進行確認。另外,發佈代碼時永遠不要使用真實的URL,特別是與安全相關的東西。 – Mario
是啊,你是100%正確的關於真正的URL和安全風險,但我是學習者,一定會刪除郵政編碼和使用很安全option.Will肯定照顧下一個到來。謝謝馬里奧。 –