Php 更改旧密码
我有两个文件是 SiteController.php 另一个文件是 password.php 好的,这里有一个问题,我想让网页用新密码替换旧密码。我已经试了好几天了,但都没有找到解决办法。我希望数据库成功更改旧密码。我错过了什么 输入旧密码:11111 输入新密码:22222 确认新密码:22222Php 更改旧密码,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
现在新密码是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;
}