ヘルニアクソ野郎エンジニアblog

~ヘルニアでHell near~

PHPとMySQLでECサイトをフルスクラッチ開発!⑪ECサイトの会員登録画面作成

calendar

reload

PHPとMySQLでECサイトをフルスクラッチ開発!⑪ECサイトの会員登録画面作成

前回、ECサイト公開ページのトップ画面を作成しました。↓

 

今回は、ECサイトの会員登録ページを作成します。

会員登録画面作成

星マークが作成済のページになります。今回は雲マークのページを作成します。

このECサイトでは、会員登録者がログインすれば、商品を購入できるようにしています。

したがって、カートに入れる以降のページには会員登録、およびログイン済でなければ進めないようにします。

それではまず、会員情報を登録するテーブルをデータベースに作成します。

スポンサーリンク

テーブルの作成

shopのデータベース配下に、会員情報管理のテーブルを作成します。テーブル名は「menber」とします。

会員情報テーブル

カラムは6とし、下図のように「code」「name」「email」「address」「tel」「password」のカラム名、データ型、AI(AUTO_INCREMENT)を設定します。

カラム名データ型その他
codeintAI
namevarchar 値30
emailvarchar 値50
addressvarchar 値50
telvarchar 値20
passwordvarchar 値32

上から順に、会員番号、名前、email、住所、電話番号、パスワード、となります。

ECサイト利用者にはこれを登録してもらい、この情報を元にログインする仕組みを作成していきます。

phpファイルについては、htdocsディレクトリ内にmenber_loginディレクトリを作成し、その配下に会員登録ページの menber_login_db.php menber_login_db_check.php menber_login_db_done.php の3ファイルを作成していきます。

 

会員情報入力画面

menber_login_db.php

menber_loginディレクトリ配下にmenber_login_db.phpを作成します。

このページは会員情報の入力画面になります。

至ってシンプルで、formタグで入力した内容をpostするだけですね。もはや今更なにもいう事はありません。

会員情報入力画面

会員情報入力チェック画面

menber_login_db_check.php

menber_loginディレクトリ配下にmenber_login_db_check.phpを作成します。

このページは入力した内容が適正か判断するページになります。全て問題なければ次ページに値をpostします。

過去にあった入力チェック画面とほぼ同じすが、新たな正規表現がありますね。emailとtelの部分です。

emailならば@がないとか、telならば桁数がおかしいとか、全角はNGとかその辺りを全てチェックしてくれます。

記述の意味については深堀しませんが、とりあえずこういった記述になります。

emailの正規表現↓

preg_match(“/\A[\w-.]+\@[\w-.]+.([a-z]+)\z/”, $email)

これの返り値が0なら、問題なしとなります。1ならば、どこかおかしい入力となっている事になります。

※バックスラッシュは「¥」でも構いません。

telの正規表現↓

preg_match(“/\A\d{2,5}-?\d{2,5}-?\d{4,5}\z/”, $tel)

これも返り値が0なら、問題なしとなります。1ならば、どこかおかしい入力となっている事になります。

全て入力に問題がなければ、登録しますか?とコメントを表示させて、登録を押せば入力した値がpostされます。

会員登録チェック

会員情報データベース登録画面

menber_login_db_done.php

menber_loginディレクトリにmenber_login_db_done.phpを作成します。

このページでは、まずemailすでにデータベースに登録されていないかを確認しています。emailが登録されていなければ、会員情報として入力された内容をデータベースに登録しています。

emailがすでに使用されているかの確認は、「ログイン認証に利用する」からです。重複しては困りますよね、したがって唯一無二のものにしたいので、今回はemailを重複させないような仕組みを導入します。

データベースに接続後、menberテーブルのmailカラムの情報をすべて$mailに格納していきます。

後はその$mailの中に、in_array($email, $mail) で、すでに利用されているemailかどうかを確認しています。返り値がtrueなら有りなので、登録不可として会員登録初期画面へ誘導しています。

ちなみに、途中でmailカラムから取り出した値が空なのかどうかを確認していて、空の場合は仮の値として「a」を代入していますが、これは入力されたemailと比較する際に何故か空だとエラーが発生するためです。(他に方法がありそうですがとりあえずこうしています。)

つまり1回目の会員登録の際のエラー回避ですね。

それでは会員登録を実行してみて、データベースにちゃんと反映されているか確認してみましょう。

会員登録完了
会員情報データベース画面

次回はログイン画面の作成に入ります。