【发布时间】:2010-11-30 22:26:57
【问题描述】:
更新:我自己解决了这个问题,答案如下。继续……
我有一个使用 PHP 和 mySQL 更新您的帐户的表单。提交时,它会将所有 $_POST 变量分配给新的 user() 对象,然后对用户对象执行 update() 方法,该方法在 SQL 中运行 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()) 尝试了它,因为 empty 应该可以工作,但它没有,所以为了安全起见,我添加了 null、isset 甚至 !== ""。
无论我做什么,密码都会重置为空白。为什么?
【问题讨论】:
-
empty() 应该足够了。打印
$_POST['password']和$edituser->hashed_password的值,看看有什么问题。