MD5暗号化パスワードを更新するフォームがあります。プロセスのこの時点で、パスワードフィールドはランダムなトークンに更新され、リンクの一部として電子メールでユーザーに送信され、そのトークンを使用してアカウントを照合して更新します。
管理者とユーザーを別々のテーブルに分割したため、2つのテーブルをチェックする必要があります。次の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">