我有一個更新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
謝謝。我意識到這一點,我們將在移居前採取更安全的保護措施。現在這是建立網站框架的問題。 –