2011-07-09 18 views
0

CakePHPを使用して忘れたパスワードをリセットすることに関するいくつかのオンラインの例に従っています。このコードは、このデバッグ情報私のページが表示され実行されるとCakePHP:データベースを更新できません。

$temp = $this->User->findByEmail($this->data['User']['email']); 
     $user = $temp['User']['UID']; 
     $this->set('email', $this->data['User']['email']); 
     if($user) 
     { 
      $new_salt = UsersController::generateStr(); 
      $new_password = UsersController::generateStr(5); 
      $temp_password = Security::hash((Security::hash($new_password,'md5',false) . $new_salt), 'md5', false); 
      $data = array('User' => array('UID' => $user, 'Password' => $temp_password)); 
      $this->User->save($data, false, array('Password')); 
      $data = array('User' => array('UID' => $user, 'Salt' => $new_salt)); 
      $this->User->save($data, false, array('Salt')); 
      $to = $this->data['User']['email']; 
      $subject = "RideShare Password Reset"; 
      $message = "Your new RideShare password is " . $new_password; 
      $headers = ""; 
      mail($to, $subject, $message, $headers); 
      $this->Session->setFlash('Your new password has been sent to' . $this->data['User']['email']); 
     } 

:ここでは、コードです

Query: INSERT INTO `users` (`Password`, `modified`, `created`) VALUES ('81a5392c1d9687811cfeb7e66c887a4a', '2011-07-08 23:53:05', '2011-07-08 23:53:05') 
    Query: INSERT INTO `users` (`Salt`) VALUES ('HjP1miaias') 

しかし、私はphpMyAdminのに行くことによって、データベースを直接調べるとき、私は、値が実際にされていないことを確認します更新しました。

アドバイスありがとうございます。

答えて

0

INSERT INTOクエリはデータベースに新しい行を挿入します。データベースの最近のエントリを見ると、2つの新しいエントリが挿入されていることがわかります.1つはパスワード、もう1つはsaltです。 $this->User->id = $userで保存する前に更新するエントリをCakeが知るようにIDを設定する必要があります。

ケーキ標準idの代わりにUIDをIDフィールドの名前として使用していますが、それが問題の一部であるかどうかわかりません。 (理論的には、モデルが非標準のフィールド名を使うように正しく設定されているとは限りません)。

+0

$ this-> user-> id = $ userと$ this-> User-> uid結果はほぼ同じでした。特に、データベースは更新されていません。テーブルに新しい行がありません。 – Schemer

+0

実際に$ this-> User-> id = $ userは、未定義のUser.idについて新しい苦情を投げました。 $ this-> User-> uid =は以前と同じ結果を返しました。 – Schemer

+0

idの代わりにUIDを使用するようにモデルを構成しましたか? – JJJ

関連する問題