更新:我自己解決了這個問題,答案如下。繼續...
我有一個更新您的帳戶使用PHP和MySQL的表單。提交時,它將所有$ _POST變量分配給新的user()對象,然後在SQL中運行UPDATE查詢的用戶對象上執行update()方法。
表格顯然默認爲所有用戶的信息,除了密碼,我不預先填寫。除非他們想更改密碼,否則它是空白的。
如果我沒有采取任何措施解決此問題,則每個帳戶更新都會將該人的密碼重置爲「」,因爲該字段在提交時爲空。那會很糟糕。因此,要解決這個問題,我添加以下代碼:
if(empty($_POST['password']) || is_null($_POST['password']) || !isset($_POST['password']) || $_POST['password'] == "") {
$user->hashed_password = $edituser->hashed_password;
} else {
$password = $database->escape_value($_POST['password']);
$user->hashed_password = md5($password);
}
基本上,如果$ _POST密碼值爲空,將密碼設置爲當前用戶的密碼($ edituser是提前創建的對象保存當前用戶信息如果需要)。相信我,我首先試着用if(empty()),因爲空應該工作,但它沒有,所以我加了null,isset,甚至是!==「」只是爲了安全起見。
不管我做什麼,密碼都被重置爲空白。爲什麼?
empty()應該足夠了。打印'$ _POST ['password']'和'$ edituser-> hashed_password'的值來查看錯誤。 – Gleb 2009-09-23 23:04:13