我有一个更新MD5加密密码的表单。在此过程中,密码字段已更新为随机令牌,然后通过电子邮件将该令牌发送给用户,作为链接的一部分,然后该令牌用于匹配要更新的帐户。CodeIgniter SQL更新和联合在一起?
我要检查两个表,因为我们爆发了管理员和用户分成不同的表。我收到以下SQL错误。 SQL和CodeIgniter对我来说都是非常新的。
SQL错误:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION UPDATE staff SET staff_password = '098f6bcd4621d373cade4e832627b4f6' WHERE' at line 1
UPDATE admin SET admin_password = '098f6bcd4621d373cade4e832627b4f6' WHERE admin_password = 'fd323219f98afd367fee9907173012db' UNION UPDATE staff SET staff_password = '098f6bcd4621d373cade4e832627b4f6' WHERE staff_password = 'fd323219f98afd367fee9907173012db'
型号代码:
public function update_password() {
$sql = "UPDATE admin SET admin_password = ? WHERE admin_password = ? UNION UPDATE staff SET staff_password = ? WHERE staff_password = ?";
$password = $this->input->post('password');
$token = $this->input->post('token');
$query = $this->db->query($sql, array($password, $token, $password, $token));
if($query->num_rows() == 1) {
return true;
} else {
return false;
}
}
令牌被设置为在视图中隐藏字段:
<input type="hidden" name="token" value="<?php echo $token;?>" id="token">
FYI:MD5是*不*对密码进行加密的安全方式。现在还没有很长时间:http://stackoverflow.com/a/770923/183254 http://en.wikipedia.org/wiki/MD5 – stormdrain
谢谢。我意识到这一点,我们将在移居前采取更安全的保护措施。现在这是建立网站框架的问题。 –