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

【Wakarana】既存ユーザーにメールアドレスを確認してから追加

Wakaranaで、メールアドレスの確認を行ってから既存ユーザーに追加する場合のサンプルコードです。

Wakaranaでは、既存ユーザーに対して発行されたメールアドレス確認コードを確認する場合でも、新規ユーザーの場合同様にwakarana::email_address_verify関数を使用します。

sample_1.php

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

$wakarana = new wakarana();

// アクセスしているユーザーのwakarana_userクラスを取得
$user = $wakarana->check();
if (!is_object($user)) {
    print "ログインしていません";
    exit();
}

// CSRF対策としてワンタイムトークンを使用する
$token = $user->create_one_time_token();

print '<form action="sample_2.php" method="post">';
print '    <input type="hidden" name="token" value="'.$token.'">';
print '    新しいメールアドレス <input type="hidden" name="email_addr">';
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)){
   print "ログインしていません";
    exit();
}

if (empty($wakarana->search_users_with_email_address($POST["email_addr"])){
    $verification_code = $user->create_email_address_verification_token($POST["email_addr"]);
    
    mail($_POST["email_addr"], "確認メール", "確認コード: ".$verification_code);
print "確認メールを送信しました。";
} else {
print "エラー 既に使用されているメールアドレスです。";
}

print 'メールを確認してコードを入力してください。';
print '<form action="sample_3.php" method="post">';
print '    <input type="hidden" name="email_addr" value="'.addslashes($_POST["email_addr"]).'">';
print '    確認コード<input type="text" name="verification_code"><br>';
print '    <button type="submit">送信</button>';
print '</form>';

sample_3.php

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

$wakarana = new wakarana();

$user = $wakarana->check();
if (!is_object($user)){
    print "ログインしていません";
    exit();
}

if (isset($_POST["email_addr"], $_POST["verification_code"])) {
    if ($user->email_address_verify($_POST["email_addr"], $_POST["verification_code"])) {
        print "メールアドレスの変更が完了しました。";
    } else {
        print "確認コードが間違っています。";    
    }