gpt4 book ai didi

php - 在 CakePHP 2.1 中更改用户密码

转载 作者:可可西里 更新时间:2023-10-31 23:33:30 27 4
gpt4 key购买 nike

我正在构建一个用户可以更改密码的页面。他们必须填写两个字段,并且两者必须匹配才能更改,然后他们将在成功时被重定向到他们的个人资料页面。

到目前为止,我已经构建了以下方法:

public function changePassword()
{

$user = $this->User->find('first', array(
'conditions' => array(
'User.id' => $this->Auth->user('id'))
));

if ($this->request->is('post') || $this->request->is('put'))
{
if ($this->User->save($this->request->data))
{
$this->User->saveField('password', AuthComponent::password($this->request->data['User']['password2']));

$this->Session->setFlash(__('Your password has been changed!'));
$this->redirect(array('controller'=>'profiles','action'=>'view','userName'=>$user['User']['username']));
}
else
{
$this->Session->setFlash(__('Whoops! Something went wrong... try again?'));
}
}

}

这是表格:

<?php echo $this->Form->create(); ?>

<?php echo $this->Form->input('id',array('type'=>'hidden')); ?>

<?php echo $this->Form->input('password1',array('type'=>'text','label'=>array('text'=>'Enter your new password'))); ?>

<?php echo $this->Form->input('password2',array('type'=>'text','label'=>array('text'=>'Confirm your new password'))); ?>

<button type="submit">Save</button>

<?php echo $this->Form->end(); ?>

正如您所见,计划是采用密码 2 中的内容,并使用安全散列将其保存在数据库密码字段中。但是会发生什么情况是它创建了一个新用户而不是空白数据......我在这里做错了什么?以及如何比较两个密码字段...

最佳答案

最可能的问题是您以某种方式丢失了从表单返回到 Controller 操作的 id。如果数据数组中没有 id,蛋糕会假定它必须创建一个条目。

因此调试您发布的数据并确保它没有丢失或最好在保存之前手动分配 id。

$this->request->data['User']['id'] = $this->Session->read('Auth.User.id');

PS:从你的方法来看,你隐藏的“id”字段始终为空,因为 $user 数据不是从 Controller 传递下来的!

关于php - 在 CakePHP 2.1 中更改用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com