ホームページ バックエンド開発 PHPチュートリアル (上級) PHP+Mysql+jQuery によるパスワードの取得

(上級) PHP+Mysql+jQuery によるパスワードの取得

Feb 07, 2017 am 09:14 AM

コードは次のとおりです:

パスワードは暗号化されて保存されているため、いわゆるパスワード取得機能では、実際には忘れたパスワードを取得することはできません。通常、開発者はユーザー情報を確認した後、プログラムを通じて新しいパスワードを生成するか、特定のパスワードを生成します。リンクを設定してユーザーのメールボックスに電子メールを送信すると、ユーザーは電子メール リンクから Web サイトのパスワード リセット モジュールに新しいパスワードをリセットします。

もちろん、現在、一部の Web サイトでは、パスワードを取得するために携帯電話のテキスト メッセージを使用しています。原則として、確認用の電子メールを送信するのと同じように、パスワードをリセットする必要があります。取得プロセス。

この記事では、PHP+Mysql+jQuery を使用してパスワード取得機能を実装します。一般的な手順は次のとおりです。

1. ユーザーのメール アドレスが正しいかどうかを確認します。ユーザーの電子メール アドレスが Web サイトのユーザー テーブルに存在しない場合は、ユーザーのメールボックスが登録されていないことを示すメッセージが表示されます。

3. ユーザーのメールボックスがユーザー テーブルに存在する場合は、文字列を結合します。ユーザー情報を確認し、ユーザーのメールボックスに送信する URL を作成するために使用されます

4. ユーザーはメールボックスにログインし、Web サイト検証プログラムへの URL リンクをクリックします。 Web サイト プログラムは、ユーザーが要求した文字列を介してローカル ユーザー テーブルをクエリし、ユーザー情報が正しいかどうかを比較します。

6. 正しい場合は、パスワード設定ページで新しいパスワードを設定します。検証が無効であることをユーザーに通知します。

パスワード取得ページに、登録に使用した電子メール アドレスを入力することをユーザーに要求するページを配置し、インタラクションを処理するフロントエンド JS を送信します。

<p><strong>输入您注册的电子邮箱,找回密码:</strong></p> 
<p><input type="text" class="input" name="email" id="email"><span id="chkmsg"></span></p> 
<p><input type="button" class="btn" id="sub_btn" value="提 交"></p>
ログイン後にコピー

ユーザーが電子メール アドレスを入力して送信をクリックすると、jQuery はまず電子メールの形式が正しいかどうかを確認し、正しい場合は、バックグラウンドの sendmail.php に Ajax リクエストを送信します。メールアドレスが存在し、メールを送信すると、対応するメールが返されます。 処理結果はフロントページに送信されます。jQuery コードを参照してください:

$(function(){ 
    $("#sub_btn").click(function(){ 
        var email = $("#email").val(); 
        var preg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //匹配Email 
        if(email==&#39;&#39; || !preg.test(email)){ 
            $("#chkmsg").html("请填写正确的邮箱!"); 
        }else{ 
            $("#sub_btn").attr("disabled","disabled").val(&#39;提交中..&#39;).css("cursor","default"); 
            $.post("sendmail.php",{mail:email},function(msg){ 
                if(msg=="noreg"){ 
                    $("#chkmsg").html("该邮箱尚未注册!"); 
                    $("#sub_btn").removeAttr("disabled").val(&#39;提 交&#39;).css("cursor","pointer"); 
                }else{ 
                    $(".demo").html("<h3>"+msg+"</h3>"); 
                } 
            }); 
        } 
    }); 
})
ログイン後にコピー

上記で使用した jQuery コードは、フロントエンドの対話型操作を完了するのに非常に便利で簡潔ですある程度の jQuery の基礎を持っている場合、上記のコードは一目瞭然で説明は不要です。

もちろん、ページに jQuery ライブラリ ファイルをロードすることを忘れないでください。一部の学生は、なぜ helloweba.com からダウンロードしたデモが使用できないのかをよく尋ねます。その理由は 80% の場合、jquery のロード パスです。または他のファイルが間違っており、必要なファイルが読み込まれていません。

sendmail.php は、電子メールがシステムのユーザー テーブルに存在するかどうかを確認する必要があります。存在する場合は、ユーザー情報を読み取り、md5 暗号化を使用してパスワードを取得するための確認コードとして特別な文字列を生成し、URL を構築します。同時に、URL リンクの適時性を制御するために、ユーザーがパスワード取得アクションを送信した操作時間を記録し、最後に電子メール送信クラスを呼び出してユーザーのメールボックスに電子メールを送信します。 email

include_once("connect.php");//连接数据库 
 
$email = stripslashes(trim($_POST[&#39;mail&#39;])); 
     
$sql = "select id,username,password from `t_user` where `email`=&#39;$email&#39;"; 
$query = mysql_query($sql); 
$num = mysql_num_rows($query); 
if($num==0){//该邮箱尚未注册! 
    echo &#39;noreg&#39;; 
    exit;     
}else{ 
    $row = mysql_fetch_array($query); 
    $getpasstime = time(); 
    $uid = $row[&#39;id&#39;]; 
    $token = md5($uid.$row[&#39;username&#39;].$row[&#39;password&#39;]);//组合验证码 
    $url = "http://www.helloweba.com/demo/resetpass/reset.php?email=".$email." 
&token=".$token;//构造URL 
    $time = date(&#39;Y-m-d H:i&#39;); 
    $result = sendmail($time,$email,$url); 
    if($result==1){//邮件发送成功 
        $msg = &#39;系统已向您的邮箱发送了一封邮件<br/>请登录到您的邮箱及时重置您的密码!&#39;; 
        //更新数据发送时间 
        mysql_query("update `t_user` set `getpasstime`=&#39;$getpasstime&#39; where id=&#39;$uid &#39;"); 
    }else{ 
        $msg = $result; 
    } 
    echo $msg; 
} 
 
//发送邮件 
function sendmail($time,$email,$url){ 
    include_once("smtp.class.php"); 
    $smtpserver = ""; //SMTP服务器,如smtp.163.com 
    $smtpserverport = 25; //SMTP服务器端口 
    $smtpusermail = ""; //SMTP服务器的用户邮箱 
    $smtpuser = ""; //SMTP服务器的用户帐号 
    $smtppass = ""; //SMTP服务器的用户密码 
    $smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);  
    //这里面的一个true是表示使用身份验证,否则不使用身份验证. 
    $emailtype = "HTML"; //信件类型,文本:text;网页:HTML 
    $smtpemailto = $email; 
    $smtpemailfrom = $smtpusermail; 
    $emailsubject = "Helloweba.com - 找回密码"; 
    $emailbody = "亲爱的".$email.":<br/>您在".$time."提交了找回密码请求。请点击下面的链接重置密码 
(按钮24小时内有效)。<br/><a href=&#39;".$url."&#39;target=&#39;_blank&#39;>".$url."</a>"; 
    $rs = $smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype); 
 
    return $rs; 
}
ログイン後にコピー

この時点で、helloweba からのパスワード取得メールが受信されます。メールの内容に URL リンクがあるので、helloweba.com のreset.php へのリンクをクリックしてください。

include_once("connect.php");//连接数据库 
 
$token = stripslashes(trim($_GET[&#39;token&#39;])); 
$email = stripslashes(trim($_GET[&#39;email&#39;])); 
$sql = "select * from `t_user` where email=&#39;$email&#39;"; 
 
$query = mysql_query($sql); 
$row = mysql_fetch_array($query); 
if($row){ 
    $mt = md5($row[&#39;id&#39;].$row[&#39;username&#39;].$row[&#39;password&#39;]); 
    if($mt==$token){ 
        if(time()-$row[&#39;getpasstime&#39;]>24*60*60){ 
            $msg = &#39;该链接已过期!&#39;; 
        }else{ 
            //重置密码... 
            $msg = &#39;请重新设置密码,显示重置密码表单,<br/>这里只是演示,略过。&#39;; 
        } 
    }else{ 
        $msg =  &#39;无效的链接&#39;; 
    } 
}else{ 
    $msg =  &#39;错误的链接!&#39;;     
} 
echo $msg;
ログイン後にコピー

reset.php は、まずパラメータ email と token を受け取り、次に email に基づいてデータテーブル t_user にメールが存在するかどうかをクエリし、存在する場合はユーザーの情報を取得し、と同じ方法でトークン値を構築します。 sendmail.php のトークンの組み合わせを URL で渡されたトークンと比較します。現在の時刻が電子メールの送信時刻と 24 時間以上異なる場合は、「リンクの有効期限が切れています!」というメッセージが表示されます。 、これはリンクが有効であり、パスワード リセット ページにリダイレクトされることを意味します。最後に、新しいパスワードを設定するかどうかはユーザー次第です。

要約: 登録メール認証とこの記事のメールによるパスワードの取得は、Web サイト開発におけるメール送信のアプリケーションとその重要性を理解しています。もちろん、SMS 認証アプリケーションも現在普及しており、これには関連する SMS インターフェースのドッキングが必要です。

最後に、データ テーブル t_user 構造が添付されます:

CREATE TABLE `t_user` ( 
  `id` int(11) NOT NULL auto_increment, 
  `username` varchar(30) NOT NULL, 
  `password` varchar(32) NOT NULL, 
  `email` varchar(50) NOT NULL, 
  `getpasstime` int(10) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
ログイン後にコピー

上記は、(高度な) PHP+Mysql+jQuery のパスワード取得コンテンツです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 )!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

PHPの継続的な使用:その持久力の理由 PHPの継続的な使用:その持久力の理由 Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

IISとPHPの互換性:ディープダイビング IISとPHPの互換性:ディープダイビング Apr 22, 2025 am 12:01 AM

IISとPHPは互換性があり、FastCGIを通じて実装されています。 1..phpファイル要求を構成ファイルを介してFastCGIモジュールに転送します。 2. FASTCGIモジュールは、PHPプロセスを開始して、パフォーマンスと安定性を改善するための要求を処理します。 3。実際のアプリケーションでは、構成の詳細、エラーデバッグ、パフォーマンスの最適化に注意する必要があります。

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? 関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? Apr 19, 2025 pm 11:09 PM

フロントエンド開発においてJSONで機能と正規表現を安全に処理することができますが、JavaScriptが必要です...

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

See all articles