YII框架下实现密码修改,yii框架密码修改_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了YII框架下实现密码修改,yii框架密码修改_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2574字,纯文字阅读大概需要4分钟。
内容图文
![YII框架下实现密码修改,yii框架密码修改_PHP教程](/upload/InfoBanner/zyjiaocheng/189/75d8d4d1827d4ea09d51f01f7eae87a6.jpg)
YII框架下实现密码修改,yii框架密码修改
YII2 实现修改密码功能
主要难点:
1、密码加密
YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。
加密 $hash = Yii::$app->getSecurity()->generatePasswordHash('123456']);
验证 Yii::$app->getSecurity()->validatePassword('123456', $hash),返回true或false
2、返回信息处理
Yii::$app->session->setFlash('contact','旧密码错误');//设置 flash
return $this->goBack(); //页面转跳
Yii::$app->session->getFlash('contact'); //获取 flash
public function actionPassword(){ $model=new PasswordForm; $request = YII::$app->request; if($request->isPost){ $p = $request->post('PasswordForm'); $id = YII::$app->user->id; $admin= Admin::findIdentity($id); $password = $admin->password; if(Yii::$app->getSecurity()->validatePassword($p['password'], $password)){ if($p['pass1'] == $p['pass2']){ $newPass = Yii::$app->getSecurity()->generatePasswordHash($p['pass1']); $connection = \Yii::$app->db; $r = $connection->createCommand()->update('admin', ['password' => $newPass], 'id='.$id)->execute(); if($r){ Yii::$app->user->logout(); return $this->goHome(); }else{ return $this->goBack(); } } }else{ Yii::$app->session->setFlash('contact','旧密码错误'); return $this->redirect(array('site/password')); } }else{ return $this->render('password',['model'=>$model]); } }
代码优化:主要优化细节如下
1、将控制器中的主要逻辑代码移入模型中
2、优化数据库操作
控制器中:
public function actionPassword(){ $model=new PasswordForm; $request = YII::$app->request; if($request->isPost && $model->load(Yii::$app->request->post()) && $model->changePassword()){ Yii::$app->user->logout(); return $this->goHome(); }else{ return $this->render('password',['model'=>$model]); } }
模型中:
public function changePassword(){ $id = YII::$app->user->id; $admin= Admin::findIdentity($id); $password = $admin->password; if(Yii::$app->getSecurity()->validatePassword($this->password, $password)){ if($this->pass1 == $this->pass2){ $newPass = Yii::$app->getSecurity()->generatePasswordHash($this->pass1); $admin->password = $newPass; if($admin->save()){ return true; }else{ return false; } }else{ Yii::$app->session->setFlash('contact','两次新密码不相等'); return false; } }else{ Yii::$app->session->setFlash('contact','旧密码错误'); return false; } }
http://www.bkjia.com/PHPjc/1033242.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1033242.htmlTechArticleYII框架下实现密码修改,yii框架密码修改 YII2 实现修改密码功能 主要难点: 1、密码加密 YII2对密码加密生成的结果是不同的,即用相同的...
内容总结
以上是互联网集市为您收集整理的YII框架下实现密码修改,yii框架密码修改_PHP教程全部内容,希望文章能够帮你解决YII框架下实现密码修改,yii框架密码修改_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。