duanbei1903 2013-07-16 15:24
浏览 28
已采纳

cakephp 2.3 - 更改密码方法错误

i have this method for user password changing in the controller (UsersController.php):

public function changepass() {
    if($this->User->exists()) {         
        $new_pass = $this->request->data['User']['newpass'];
        $repeat_pass = $this->request->data['User']['newrepeat'];
            if($new_pass == $repeat_pass) {
                $this->User->saveField('password',$new_pass);
                $this->Session->flash(__('Updated successfully'));
                $this->redirect(array('controller' => 'users','action' => 'dashboard'));
            } else {
                $this->Session->flash(__('Passwords did not match'));
                $this->redirect(array('controller' => 'users','action' => 'changepass'));
            }

    }
}

and this view (changepass.ctp):

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

    echo $this->Form->input('newpass',array('type'=>'text','label'=>array('text'=>'Enter new password'))); 

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

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

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

But this does not seem to work,and i cannot actually understand why. Can you help me? Do you see what's wrong here?

Thank you in advance guys!

  • 写回答

1条回答 默认 最新

  • dongshuo2752 2013-07-16 15:38
    关注

    Try setting the user id before checking if the user exists

    Assuming you are trying to change the password of the currently logged in user and assuming your user id column is named user_id

    $this->User->id = $this->Auth->user('user_id');
    

    It would be easier if you could be a little specific on why it does not work (does it show the password did not match message etc.)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?