Midari Create > webアプリケーション製品 > Wakarana > サンプルコード >

【Wakarana】既存ユーザーのパスワード変更

Wakaranaで、ログイン済みのユーザーに対して再度パスワードの照合を行い、正しければパスワードの変更を受け付けるサンプルコードです。

Wakaranaではパスワードを非可逆暗号化してデータベースに保存しているため、データベースからパスワードを取得することはできませんが、wakarana_user::check_passwordにより同一であるかを比較することが可能です。

なお、パスワードの再入力を求めることによってCSRFに対して一定の抑止効果があることから、このコードではワンタイムトークンの生成と照合を省略しています。

sample_1.php

<?php
include "wakarana/main.php";

$wakarana = new wakarana();

$user = $wakarana->check();
if (!is_object($user)) {
    // ログインしていないユーザーにはパスワードの変更フォームを表示しない
    exit();
}

print '<form action="sample_2.php" method="post">';
print '    現在のパスワード <input type="text" name="old_password"><br>';
print '    新しいパスワード<input type="text" name="new_password"><br>';
print '    <button type="submit">送信</button>';
print '</form>

sample_2.php

<?php
include "wakarana/main.php";

$wakarana = new wakarana();

$user = $wakarana->check();
if (!is_object($user)) {
    exit();
}

// パスワード照合処理
if (isset($_POST["old_password"], $_POST["new_password"]) && $user->check_password($_POST["old_password"])) {
    $user->set_password($_POST["new_password"]);
    print "パスワードを変更しました。";
} else {
     print "元のパスワードが一致しませんでした。";
}