機能概要

新規アカウントを作成し、ログインするための準備として、ユーザーマスタに登録する処理をします。

データベース準備

下記のSQL文を実行し、ユーザーマスタ(user_mst)を構築します。

/* ユーザーマスタ(クリエイト文) */
Create Table user_mst (
 user_no int not null auto_increment,
 user_kj varchar(255) not null,
 email varchar(255) not null,
 password varchar(100) not null,
 delete_ku char(1) not null,
 insert_at datetime not null,
 update_at datetime not null,

 Primary Key(
  user_no
 )
);

プログラミングコード

「user_signup.php」ユーザー登録ページファイル

データベースに登録されているユーザー情報を更新します。

  • 4行目:「config.php」を読み込み、その中の変数情報を使用することができるようになります。
  • 10行目:「POST」の場合のみ、処理を行うための分岐処理です。
    サインアップ処理を開始します。
  • 13行目~15行目:「POST」を利用し「ページ内のテキストボックス」からデータを受け取り、変数に代入しています。
  • 19行目~27行目:「ユーザー名」「メールアドレス」「パスワード」は、必須項目のため、入力されていないと変数「$err」に登録され、サインアップが行われないようにする。
  • 29行目:「$err」が空(必須項目が登録されている)の場合のみ、処理を行うための分岐処理です。
  • 30~44行目:SQL文を利用し、「user_mst」にデータを登録しています。
  • 50行目:「password_hash($txt_pass, PASSWORD_DEFAULT)」は、パスワードをハッシュ化(暗号化)します。
    今回は変数「$txt_pass」の中身をハッシュ化します。
    PASSWORD_DEFAULTとは、「bcrypt アルゴリズム」を使用します。
    詳細はこちら

    <?php
    
    //データベース接続情報を格納
    include("config.php");
    
    $txt_user = "";
    $txt_email = "";
    $txt_pass = "";
    
    if($_SERVER['REQUEST_METHOD'] === 'POST'){
    
        //POSTデータの取得
        $txt_user = $_POST['txt_user'];
        $txt_email = $_POST['txt_email'];
        $txt_pass = $_POST['txt_pass'];
    
        $err = "";
    
        if($txt_user == ""){
            $err .= "【ユーザー名】";
        }
        if($txt_email == ""){
            $err .= "【メールアドレス】";
        }
        if($txt_pass == ""){
            $err .= "【パスワード】";
        }
    
        if($err == ""){
            $sql = "insert into user_mst("
                    ."user_kj"
                    .",email"
                    .",password"
                    .",delete_ku"
                    .",insert_at"
                    .",update_at"
                    .") values ("
                    .":user_kj"
                    .",:email"
                    .",:password"
                    .",'0'"
                    .",now()"
                    .",now()"
                    .");";
            $dbh = new PDO($dsn, $user, $password);
            $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $dbh->prepare($sql);
            $stmt->bindValue(':user_kj', $txt_user, PDO::PARAM_STR);
            $stmt->bindValue(':email', $txt_email, PDO::PARAM_STR);
            $stmt->bindValue(':password', password_hash($txt_pass, PASSWORD_DEFAULT), PDO::PARAM_STR);
            if(!$stmt->execute()){
                return "データの書き込みに失敗しました。";
            }else{
                echo "登録完了しました";
            }
        }else{
            echo $err."を修正してください。";
        }
    }
    ?>
    
    <html>
    <head>
        <title>会員登録</title>
    </head>
    <body>
        <h1>会員登録</h1>
        <form action="" method="POST">
            <p>
                <label>ユーザー名:</label>
                <input type="text" name="txt_user">
            </p>
            <p>
                <label>メールアドレス:</label>
                <input type="text" name="txt_email">
            </p>
            <p>
                <label>パスワード:</label>
                <input type="password" name="txt_pass">
            </p>
            <input type="submit" name="submit" value="会員登録する">
        </form>
    </body>
    </html>
    
    

    演習問題

    1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
    2. 管理画面のユーザー登録/更新でも同様にパスワードをハッシュ化させて登録できるようにしよう。