【Wakarana】パスワードのリセット
Wakaranaで、パスワードを忘れたユーザーに対してパスワードのリセットを実行するサンプルコードです。このコードでは、パスワードリセットコードを記載したメールを登録されているメールアドレスに送信し、そのコードを確認してからパスワードをランダムなものに変更します。
sample_1.html
<form action="sample_2.php" method="post">
ユーザーID <input type="text" name="user_id"><br>
メールアドレス<input type="text" name="email_addr"><br>
<button type="submit">送信</button>
</form>
sample_2.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
if (isset($POST["user_id"], $POST["email_addr"])){
$user = $wakarana->get_user($POST["user_id"]);
if (is_object($user) && in_array($POST["email_addr"], $user->get_email_addresses())) {
// ユーザーにパスワードリセットコードを発行
$token = $user->create_password_reset_token();
mail($POST["email_addr"], "パスワードリセットコード", "https://example.jp/sample_3.php?token=".$token." にアクセスしてください。");
print "確認メールを送信しました。";
} else {
print "エラー ユーザーIDまたはメールアドレスが間違っています。";
}
} else {
print "エラー データが送信されていません。";
}
sample_3.php
<?php
include "wakarana/main.php";
$wakarana = new wakarana();
if (isset($_GET["token"])) {
// 新しいパスワードとなるランダムな文字列を生成
$new_password = wakarana::create_random_password();
// パスワードリセットコードを照合してパスワードを再設定
$user = $wakarana->reset_password($_GET["token"], $new_password);
if (is_object($user)) {
print $user->get_name()."さんのパスワードを「".$new_password."」に変更しました。";
} else {
print "エラー パスワードのリセットに失敗しました。";
}
}