個人的には、パスワードを平文で送信するのは好きではありません。ただし、必要になる場合がある理由は理解できます。たとえば、管理者がユーザーのアカウントを作成します。
認証情報を含む最初の電子メールの送信
ユーザーがウェブサイトに登録されている場合。電子メール アドレスとランダムに生成されたパスワード (ハッシュ) をデータベースに保存します。INSERT が成功すると、元のランダムに生成されたパスワード (ハッシュ化されたものではない) を含む電子メールをユーザーに送信します。
メールがうまくいかない場合
電子メールが受信者に送信または到達しない場合、または受信者が削除した場合、パスワードを紛失したことになります。サイトには、ユーザーがパスワードのリセットを要求できる、パスワードを忘れたセクションが必要です。このアクションを実行すると、スクリプトはランダムに生成された別のパスワードを作成し、ハッシュされたバージョンをデータベースに保存し、ハッシュされていないバージョンをユーザーに送信します。
リセットしようとしたのが所有者ではない場合に備えて、リセット パスワードをメイン アカウントの詳細から分離することをお勧めします。そうしないと、ログイン時に既知のパスワードが機能しなくなります。これは、リセットされたパスワードによって上書きされてしまうためです。
ログイン時にパスワードを変更する
どちらのシナリオでも、ユーザーはログイン時にパスワードを変更する必要があります。
追加オプション
必要に応じて、初回のリセットまたはログインに必要な期間のタイムスタンプをアカウントの資格情報と共に保存できます。電子メールで送信された資格情報を使用したログイン要求がその時間内であれば、アクセスを許可します。そうでない場合は、申し訳ありませんが資格情報が期限切れになったと言い、再度リセットできるようにします。