YII框架下实现密码修改,yii框架密码修改
php
YII框架下实现密码修改,yii框架密码修改
<span><strong>YII2 实现修改密码功能</strong></span><br /><br /><strong><span>主要难点:</span></strong><br /><br /><span>1、密码加密</span><br /><span> YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。</span><br /><span> 加密 $hash = Yii::$app->getSecurity()->generatePasswordHash('123456']);</span><br /><span> 验证 Yii::$app->getSecurity()->validatePassword('123456', $hash),返回true或false</span><br />2、返回信息处理<br /> Yii::$app->session->setFlash('contact','旧密码错误');//设置 flash<br /> return $this->goBack(); //页面转跳 <br /> Yii::$app->session->getFlash('contact'); //获取 flash
ログイン後にコピー
<span>public</span> <span>function</span><span> actionPassword(){ </span><span>$model</span>=<span>new</span><span> PasswordForm; </span><span>$request</span> = YII::<span>$app</span>-><span>request; </span><span>if</span>(<span>$request</span>-><span>isPost){ </span><span>$p</span> = <span>$request</span>->post('PasswordForm'<span>); </span><span>$id</span> = YII::<span>$app</span>->user-><span>id; </span><span>$admin</span>= Admin::findIdentity(<span>$id</span><span>); </span><span>$password</span> = <span>$admin</span>-><span>password; </span><span>if</span>(Yii::<span>$app</span>->getSecurity()->validatePassword(<span>$p</span>['password'], <span>$password</span><span>)){ </span><span>if</span>(<span>$p</span>['pass1'] == <span>$p</span>['pass2'<span>]){ </span><span>$newPass</span> = Yii::<span>$app</span>->getSecurity()->generatePasswordHash(<span>$p</span>['pass1'<span>]); </span><span>$connection</span> = \Yii::<span>$app</span>-><span>db; </span><span>$r</span> = <span>$connection</span>->createCommand()->update('admin', ['password' => <span>$newPass</span>], 'id='.<span>$id</span>)-><span>execute(); </span><span>if</span>(<span>$r</span><span>){ Yii</span>::<span>$app</span>->user-><span>logout(); </span><span>return</span> <span>$this</span>-><span>goHome(); }</span><span>else</span><span>{ </span><span>return</span> <span>$this</span>-><span>goBack(); } } }</span><span>else</span><span>{ Yii</span>::<span>$app</span>->session->setFlash('contact','旧密码错误'<span>); </span><span>return</span> <span>$this</span>->redirect(<span>array</span>('site/password'<span>)); } }</span><span>else</span><span>{ </span><span>return</span> <span>$this</span>->render('password',['model'=><span>$model</span><span>]); } }</span>
ログイン後にコピー
代码优化:主要优化细节如下
1、将控制器中的主要逻辑代码移入模型中
2、优化数据库操作
控制器中:
<span>public</span> <span>function</span><span> actionPassword(){ </span><span>$model</span>=<span>new</span><span> PasswordForm; </span><span>$request</span> = YII::<span>$app</span>-><span>request; </span><span>if</span>(<span>$request</span>->isPost && <span>$model</span>->load(Yii::<span>$app</span>->request->post()) && <span>$model</span>-><span>changePassword()){ Yii</span>::<span>$app</span>->user-><span>logout(); </span><span>return</span> <span>$this</span>-><span>goHome(); }</span><span>else</span><span>{ </span><span>return</span> <span>$this</span>->render('password',['model'=><span>$model</span><span>]); } }</span>
ログイン後にコピー
模型中:
<span>public</span> <span>function</span><span> changePassword(){ </span><span>$id</span> = YII::<span>$app</span>->user-><span>id; </span><span>$admin</span>= Admin::findIdentity(<span>$id</span><span>); </span><span>$password</span> = <span>$admin</span>-><span>password; </span><span>if</span>(Yii::<span>$app</span>->getSecurity()->validatePassword(<span>$this</span>->password, <span>$password</span><span>)){ </span><span>if</span>(<span>$this</span>->pass1 == <span>$this</span>-><span>pass2){ </span><span>$newPass</span> = Yii::<span>$app</span>->getSecurity()->generatePasswordHash(<span>$this</span>-><span>pass1); </span><span>$admin</span>->password = <span>$newPass</span><span>; </span><span>if</span>(<span>$admin</span>-><span>save()){ </span><span>return</span> <span>true</span><span>; }</span><span>else</span><span>{ </span><span>return</span> <span>false</span><span>; } }</span><span>else</span><span>{ Yii</span>::<span>$app</span>->session->setFlash('contact','两次新密码不相等'<span>); </span><span>return</span> <span>false</span><span>; } }</span><span>else</span><span>{ Yii</span>::<span>$app</span>->session->setFlash('contact','旧密码错误'<span>); </span><span>return</span> <span>false</span><span>; } }</span>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.ファイルの保存場所:それはどこにあり、それを保護する方法は?
3週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7319
9


Java チュートリアル
1625
14


CakePHP チュートリアル
1349
46


Laravel チュートリアル
1261
25


PHP チュートリアル
1209
29



PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
