CakePHP: не удается обновить базу данных - PullRequest
0 голосов
/ 09 июля 2011

Я следую некоторым онлайн-примерам, касающимся восстановления забытого пароля с помощью 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, я вижу, что значенияфактически не обновлялся.

Любой совет приветствуется.

1 Ответ

0 голосов
/ 09 июля 2011

INSERT INTO запросы вставляют новые строки в базу данных.Если вы посмотрите на последние записи в базе данных, вы, вероятно, увидите, что она вставила две новые записи: одну с паролем и одну с солью.Вам нужно установить идентификатор, чтобы Cake знал, какую запись обновлять перед сохранением с помощью $this->User->id = $user.

. Вы используете UID в качестве имени поля идентификатора вместо стандартного Cake id.не знаю, является ли это частью проблемы.(Теоретически этого не должно быть, если модели правильно настроены на использование нестандартного имени поля.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...