Я звоню save()
на элемент базы данных после присвоения значения $item->password
.Проблема в том, что он странным образом обновляет поле базы данных.Строка, отличная от того, что я назначаю, сохраняется.Проверьте код:
if ($password == $passwordConfirm && $password != NULL) {
//Save the password in db
$settings = Engine_Api::_()->getApi('settings', 'core');
$staticSalt = $settings->getSetting('core.secret', 'staticSalt');
$user = Engine_Api::_()->getItemTable('user')->fetchRow(['phone_number=?' => $this->session->phone, 'account_recovery=?' => $this->session->recoveryCode]);
$userSalt = $user->salt;
$dbPassword = md5($staticSalt . $password . $userSalt);
$user->password = $dbPassword;
$user->save();
$this->view->form->addNotice(Zend_Registry::get('Zend_Translate')->_('Password updated'));
echo $this->session->recoveryCode . ', ' . $staticSalt . ' . ' . $password . ' . ' . $userSalt . ' dbpassword: ' . $dbPassword . ', ' . $user->password;
}
Вывод эха:
41d53c78ace54bef39a4d22749447a8f, 06eebbd766133fda10c526e9fad2da6c84df0597 . a@a.com . 4826122 dbpassword: c2cec82096e9b89a22961cf5f70be639, 06af9074fbd95452c2a01603ec54cb58
Вы видите, что рассчитанный пароль, который я считаю правильным, отличается от пароля, сохраненного в базе данных,Есть ли какие-то особые соображения, которые я должен иметь в виду перед вызовом save()
, например приведение значения или что-то еще?
Я только что узнал, что мне не нужно вызывать save()
для обновления таблицы базы данных.На самом деле, вызов save()
после присвоения значения столбцу сохраняет странное значение.Я попытался закомментировать save
и затем прочитать значение.На этот раз столбец пароля корректно обновляется с вычисленным паролем.Но, опять же, моя проблема в том, что пароль не может быть использован для входа в систему.Например, если пароль пользователя, который я использую для расчета пароля базы данных, равен abcdabcd
, я не могу войти в учетную запись с этим паролем.Возможно, я что-то упускаю из-за того, как выполняется аутентификация пользователя в SocialEngine.