Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改旧密码_Php_Yii_Json_Change Password - Fatal编程技术网

Php 更改旧密码

Php 更改旧密码,php,yii,json,change-password,Php,Yii,Json,Change Password,我有两个文件是 SiteController.php 另一个文件是 password.php 好的,这里有一个问题,我想让网页用新密码替换旧密码。我已经试了好几天了,但都没有找到解决办法。我希望数据库成功更改旧密码。我错过了什么 输入旧密码:11111 输入新密码:22222 确认新密码:22222 现在新密码是22222。如果有人能帮我,我会很高兴,因为我是PHP新手。我重写了一点你的代码 public function actionPassword(){ if(empty($_PO

我有两个文件是

SiteController.php

另一个文件是

password.php

好的,这里有一个问题,我想让网页用新密码替换旧密码。我已经试了好几天了,但都没有找到解决办法。我希望数据库成功更改旧密码。我错过了什么

输入旧密码:11111 输入新密码:22222 确认新密码:22222


现在新密码是22222。如果有人能帮我,我会很高兴,因为我是PHP新手。

我重写了一点你的代码

public function actionPassword(){

    if(empty($_POST['pass']) || empty($_POST['newpass']) || empty($_POST['confirmpass']) ){
        $result['msg'] = "Empty password!";
        $this->returnResult($result);
        return;
    }
    $pass = $_POST['pass'];
    $newPass = $_POST['newpass'];  
    $confirmPass = $_POST['confirmpass'];      
    $result = Yii::app()->params['result'];

    $dbUser = Users::model()->find('username = :user', array(':user' => $user));
    if(empty($dbUser)){
        $result['msg'] = "User not found!";
        $this->returnResult($result);
        return;
    }
    $verify = CPasswordHelper::verifyPassword($pass, $dbUser->password);

    if(!$verify){
        $result['msg'] = "Wrong password!";
        $this->returnResult($result);
        return;
    }

    //This means nothing, verifyPassword return true or false, not an object
    if($verify->status_id == 0 || $verify->status_id == '-1'){
       $result['msg'] = "This password does not exist";
       $this->returnResult($result);
       return;
    }
    if($verify->status_id == 1 && $newPass == $confirmPass){
        if($dbUser->save()){
            $result['code'] = 1000;
            $result['error'] = 1;
            $result['msg'] = 'Password successfuly changed';
            $this->returnResult($result);
            return;
        }
        $result['code'] = 1005;
        $result['error'] = 0;
        $result['msg'] = $dbUser->error;
        $this->returnResult($result);
    }  
}

protected function returnResult($result)
{
    $json = json_encode($result);
    echo $json;
}
现在有几个问题:

您调用$verify->status\u id,但$verify是verifyPassword的结果,它返回true或false,但不是对象! 在代码中没有任何地方可以将新密码分配给对象$dbUser
编辑您的问题并添加Yii标签。这将帮助其他人更容易发现你的问题。什么不起作用?有错误吗?另外,是否发送了ajax请求?网络控制台的响应是什么?我不知道Yii,但看起来您忘记处理更新查询了。类似于$password=CPasswordHelper::hash$newPass$dbUsers->update'SET password=:newpass,其中username=:user',[':newpass'=>$newpass',':user'=>$user];谢谢你的帮助,我会注意到这一点,但是如果不是在$verify->status\u id上,你会推荐使用什么
<div class="view_container">
            <div class="pagetitle">Change Password</div>

            <div class="label_row">
                <div class="label">Old Password: </div>
                <div class="input_label"><input type="text" value="" placeholder="Old Password" id="pass" /></div>
            </div>
            <div class="label_row">
                <div class="label">New Password: </div>
                <div class="input_label"><input type="text" id="newpass" value="" placeholder="New Password" /></div>
            </div>
            <div class="label_row">
                <div class="label">Confirm New Password: </div>
                <div class="input_label"><input type="text" id="confirmpass" value="" placeholder="Confirm New Password" /></div>
            </div>
            <div class="label_row">
                <div class="label"></div>
                <div class="input_label"><input type="submit" id="btnSubmit" value="Confirm" /></div>
            </div>
        </div>

        <script>

        $(document).ready(function(){
            var userurl = '<?php echo Yii::app()->createAbsoluteUrl('user/password'); ?>';
            $('#btnSubmit').click(function(){           
                var JoldPass = $('#pass').val();
                var JnewPass = $('#newpass').val();
                var JconfirmPass = $('#confirmpass').val();
                loading(true);  
                $.ajax({
                    type: "POST",
                    url: userurl,
                    data: { 
                        pass: JoldPass,
                        newpass: JnewPass, 
                        confirmpass: JconfirmPass
                    },
                    dataType: "json",
                }).done(function(e) {
                    alert(e.msg);
                }).fail(function(e){
                    alert(e.error);
                });
            });
        });
        </script>
public function actionPassword(){

    if(empty($_POST['pass']) || empty($_POST['newpass']) || empty($_POST['confirmpass']) ){
        $result['msg'] = "Empty password!";
        $this->returnResult($result);
        return;
    }
    $pass = $_POST['pass'];
    $newPass = $_POST['newpass'];  
    $confirmPass = $_POST['confirmpass'];      
    $result = Yii::app()->params['result'];

    $dbUser = Users::model()->find('username = :user', array(':user' => $user));
    if(empty($dbUser)){
        $result['msg'] = "User not found!";
        $this->returnResult($result);
        return;
    }
    $verify = CPasswordHelper::verifyPassword($pass, $dbUser->password);

    if(!$verify){
        $result['msg'] = "Wrong password!";
        $this->returnResult($result);
        return;
    }

    //This means nothing, verifyPassword return true or false, not an object
    if($verify->status_id == 0 || $verify->status_id == '-1'){
       $result['msg'] = "This password does not exist";
       $this->returnResult($result);
       return;
    }
    if($verify->status_id == 1 && $newPass == $confirmPass){
        if($dbUser->save()){
            $result['code'] = 1000;
            $result['error'] = 1;
            $result['msg'] = 'Password successfuly changed';
            $this->returnResult($result);
            return;
        }
        $result['code'] = 1005;
        $result['error'] = 0;
        $result['msg'] = $dbUser->error;
        $this->returnResult($result);
    }  
}

protected function returnResult($result)
{
    $json = json_encode($result);
    echo $json;
}