在cakephp中未更新哈希密码后
我试图通过使用ajax来更改密码选项。在这里,我在控制器中尝试了以下代码在cakephp中未更新哈希密码后,cakephp,cakephp-2.6,Cakephp,Cakephp 2.6,我试图通过使用ajax来更改密码选项。在这里,我在控制器中尝试了以下代码 if ($this->request->is(array('post', 'put'))){ $id=$this->Auth->user('id'); $changePass=$_POST['cpass']; $cpasss=AuthComponent::password($changePass);
if ($this->request->is(array('post', 'put'))){
$id=$this->Auth->user('id');
$changePass=$_POST['cpass'];
$cpasss=AuthComponent::password($changePass);
echo $cpasss;
$up=$this->User->updateAll(
array('User.password'=>"$cpasss"),
array('User.id'=>"$id")
);
}
这里的散列运行良好,我已经看到了firebug,但问题是这里的密码没有在数据库中更新。如果我删除
$cpasss=AuthComponent::password($changePass);
密码正在更新,但没有散列。有人能帮我解决这个问题吗?将您的代码更新到:
if ($this->request->is(array('post', 'put'))){
$id=$this->Auth->user('id');
$changePass= $this->request->data['cpass'];
$cpasss=AuthComponent::password($changePass);
$up=$this->User->updateAll(
array('User.password'=> $cpasss),
array('User.id'=> $id)
);
}
变化:
$\u POST[]不是cakephp中获取表单数据的正确方法。
不需要在双引号中包含变量。
这里不需要使用updateAll。相反,只需使用save保存数据,并记住将主键与保存数据一起传递:-
if ($this->request->is(array('post', 'put'))) {
$id = $this->Auth->user('id');
$changePass = $this->request->data['User']['cpass'];
$data = array(
'id' => $id,
'password' => AuthComponent::password($changePass)
);
$this->User->save($data);
}
如果确实使用updateAll,则需要谨慎使用,因为它不会转义传递的字段。发件人:-
$fields数组接受SQL表达式。文字值应为
使用DboSource::value手动引用