新規アカウントを作成し、ログインするための準備として、ユーザーマスタに登録する処理をします。
機能概要
データベース準備
下記の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>
演習問題
- 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
- 管理画面のユーザー登録/更新でも同様にパスワードをハッシュ化させて登録できるようにしよう。