筆者は少し前にユーザー登録システムを組み込んだパスワード検索機能を使ったプロジェクトを行ったので、簡単に整理して感想を書いてみます。
まず、ユーザー登録システムがすでにあることを前提とします。ユーザーテーブルは次のようになります:
テーブルメンバーを作成(
id int unsigned not null auto_incremtnt,
ユーザー名………………
パスワード char(32) が null ではありません、
メール varchar(100) が null ではありません、
…………………………..
);
現在の議論の焦点はデータベース設計ではなく、主にパスワード検索について話します。
選択できるパスワード取得ソリューションには次のものが含まれます:
1. ユーザーはパスワード検索の質問を事前に設定し、パスワード検索の回答を提供します。
2. ユーザーはメールでパスワードを取得できます
......................
最初のオプションは良い解決策かもしれませんが、今回はこのオプションを選択しません。さまざまな理由はこの議論の範囲を超えています。今回は 2 番目のオプションを主な議論の対象として使用します。
それでは始めましょう。
2 番目のオプションの利点は次のとおりです:
1. 登録ユーザーは正しいメールアドレスを入力しなければ、システムが提供するパスワードリセット機能を利用することができません。
2. ユーザーは電子メールで確認する必要があります。
これは企業にとっては良いことかもしれません。企業は、ターゲットを絞ったメーリング リスト サービスを提供するために、ユーザーの実際の具体的な情報を取得するために常に最善を尽くしています。これは、この開発のユーザーがこれを要求した主な理由の 1 つでもあります。
ログイン インターフェース内、またはログイン失敗後にリンクが提供される場合があります。もちろん、リンク名を自分で定義することもできます。私が定義したのは、「パスワードを忘れましたか?」というものです。
ユーザーがパスワードを見つけるためにクリックすると、入力フォームが表示されます。ユーザーにユーザー名を入力させます (ログインが失敗した場合は、セッションを使用してフォームの内容を入力できます)。ユーザーが送信をクリックすると、パスワード リセット機能のプロセスが開始されます。
send_reset_pass_mail.php のようなファイルを作成するとします。このファイルは主に、GET メソッドを通じて渡される文字列を生成し、送信する役割を果たします。
コードは次のようになります:
PHPコード:
/**
※config.inc.phpファイルにSQL情報とメール情報が設定されているものとします
*/
require_once('config.inc.php');
/**
* メールを送信するには sendmail クラスが必要であり、メールを送信できるように設定されているものとします。*/
require_once('sendMail.inc.php');
/**
* まずクエリを実行して、このユーザーの関連情報を取得します
* $_POST['username'] がどのように取得されるのかわからないなんて言わないでください。もしそうなら、私はあなたを落ち込ませます。
* adodbクラスを使用し、設定ファイル内で宣言しました
*/
$ユーザー名 = トリム($_POST['ユーザー名']);
$sql = "ユーザー名 = '" のメンバーから電子メールとパスワードを選択します。trim($_POST['ユーザー名'])."'";
$userInfo = $db->FetchRow($sql);
$user_pass = $userInfo['パスワード'];
$user_email = $userInfo['email'];
/**
* OK、必要なものがいくつか揃ったので、次のステップに進む必要があるようです
* ここで、md5 で暗号化された文字列を生成しましょう。理由はまだ聞かないでください。後で説明します
*/
$x = md5($ユーザー名.' '.$パスワード);
// これでユーザーにメールを送信できるようになりました。もちろん、別のパスワードリセットプログラムresetUserPass.phpも必要です
$String =base64_encode($username.".".$x);