【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 "確認コードが間違っています。";
}
}