【问题标题】:How to change user's password in joomla?joomla如何修改用户密码?
【发布时间】:2012-10-22 13:52:19
【问题描述】:

我正在为 joomla 编写自定义注册/授权模块,我想知道如何使用默认的 joomla 方法更改用户密码?目前我有:

private function UpdateUser(){
    $user = JFactory::getUser($this->user_data['username']);
    $user->set('password', $this->user_data['password']);
    $user->set('password2', $this->user_data['password']);
    // $user->bind();
    $user->save();
}

但密码没有更新。

附: $this->user_data 包括其他有关用户的工作人员,但我只需要更新密码。

【问题讨论】:

    标签: joomla joomla2.5


    【解决方案1】:

    解决了。

    private function UpdateUser($username, $password){
    
        $user = JFactory::getUser($this->GetIdByUserName($username));
        $password = array('password' => $password, 'password2' => $password);
        if(!$user->bind($password)){
            die('Could not bind data. Error: '.$user->getError());
        }
        if(!$user->save()){
            die('Could not save user. Error: '.$user->getError());
        }
    }
    
    
    private function GetIdByUserName($username){
        $query = $this->db->getQuery(true);
    
        $query->select('id');
        $query->from('#__users');
        $query->where('username=' . $this->db->Quote($username));
    
        $this->db->setQuery($query);
        if(isset($this->db->loadObject()->id) && !empty($this->db->loadObject()->id))
            return $this->db->loadObject()->id;
        else
            die('No id');
    }
    

    【讨论】:

    • 注意一下,现在可以把用户名直接放到JFactory::getUser中:JFactory::getUser($username);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多