SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

プログラミング未経験から始めるPHP入門

ECサイトの会員登録画面・ログイン機能を作成しよう!
プログラミング未経験から始めるPHP入門~応用編(3)

第10回


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (5.6 KB)

会員登録(設計)

 次に、今回の作成範囲の機能(2)~機能(3)を作成します。まずは大まかな処理の流れを考えてみましょう。まずはご自身で考えてみてください。

 処理の流れが整理できましたか? 例として、次のような手順になります。

  • 手順(1):ログイン済であるかを判断。ログインできるということは既に会員登録済のため、テキストボックスに登録済の情報を表示する。
  • 手順(2-A):[更新]ボタンがクリックされたタイミングで、既にログイン済であればUPDATE文を実行し、m_customersテーブルの情報を更新する。
  • 手順(2-B):[更新]ボタンがクリックされたタイミングで、ログイン済でなければINSERT文を実行し、m_customersテーブルに新規で登録する。

 いかがでしょうか? 後は、上記の処理の手順をプログラムに落とせば完成です。

会員登録(実装)

 それでは、実装に入りましょう。member_ver1.phpを開いてください。既に、処理の大まかな流れは実装済の状態です。35行目付近に「ログイン済であれば、お客様の情報をデータベースより取得。」と記述されたif文がありますが、これは手順(1)に対応する処理で、$infoという変数にm_customersテーブルの情報を格納しています。71行以降の<input>タグで、次のようにvalue属性の中に$infoの中身を出力し、テキストボックスの入力値を設定しています。

value属性の中に$infoの中身を出力
value="<?php print( $info["customer_code"] ); ?>"

 次に、[更新]ボタンがクリックされた時の処理ですが、

if( $_REQUEST["cmd"] == "regist_member" )

 というif文の中で行っています。このif文の中に更にif~elseがあり、

if( $_SESSION["customer_code"] != "" )

 がログイン済の場合の処理、すなわち手順(2-A)の処理にあたります。これに対応するelse文が、ログイン未の場合の処理、すなわち手順(2-B)の処理にあたります。

 それでは、手順(2-A)および(2-B)の部分に処理を記述してみてください。member.phpに名前を変更し、動作確認をしてください。

 うまく動作しましたか?それでは、解答例です。手順(2-A)は、次のように記述します。

手順(2-A)
if( $_SESSION["customer_code"] != "" )
{
$sql  = " update m_customers set ";
$sql .= " customer_code = '" . $_REQUEST["customer_code"] . "',";
$sql .= " pass = '" . $_REQUEST["pass"] . "',";
$sql .= " name = '" . $_REQUEST["name"] . "',";
$sql .= " address = '" . $_REQUEST["address"] . "',";
$sql .= " tel = '" . $_REQUEST["tel"] . "',";
$sql .= " mail = '" . $_REQUEST["mail"] . "'";
$sql .= " where customer_code =  '" . $_SESSION["customer_code"] . "'";
$res = mysql_query( $sql );
}

 手順(2-B)は、次のように記述します。

手順(2-B)
else
{
	$sql = "insert into m_customers( customer_code, pass, name, address, tel, mail, del_flag, reg_date ) ";
	$sql .= "values( ";
	$sql .= " '".$_REQUEST["customer_code"]."', ";
	$sql .= " '".$_REQUEST["pass"]."', ";
	$sql .= " '".$_REQUEST["name"]."', ";
	$sql .= " '".$_REQUEST["address"]."', ";
	$sql .= " '".$_REQUEST["tel"]."', ";
	$sql .= " '".$_REQUEST["mail"]."', ";
	$sql .= " '0', ";
	$sql .= " now() ) ";
	$res = mysql_query( $sql );
}

 それぞれ、UPDATE文、INSERT文の中にテキストボックスの入力値を埋め込み、SQLを実行していることが分かるはずです。もしどのようなSQLが実行されているかが分かり辛い場合は、

print( $sql );

 の命令を上記のif~else文の外に記述し、$sqlの中身を表示してください。

$sqlの中身を表示
$sqlの中身を表示

まとめ

 今回は、ログイン処理および会員登録画面を実装しました。基礎編に比べるとプログラムの行数は多くなりましたが、そろそろ目も慣れてきはじめた頃かと思います。次回は、PEARというPHPで効率的にコードを書くのに便利な部品について紹介します。

今回のまとめ
  • 通常の変数は、画面遷移をすると変数の中身が消えてしまう。
  • 「セッション変数」と呼ばれる特殊な変数を使えば、同じサイト内であればどの画面に遷移しても変数の中身が消える事はない。
  • セッション変数は$_SESSIONという変数名で、プログラムの冒頭にsession_start命令を記述する事で使用可能となる。
修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
プログラミング未経験から始めるPHP入門連載記事一覧

もっと読む

この記事の著者

大家 正登(オオイエ マサト)

デジタルハリウッド『PHP 講座』講師。学生時代、スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。その後中堅 SIer に 3 年間所属し、現在はフリーエンジニア。仕事の傍らジャズを演奏し、コントラバス 2 台と同居中。(ITエンジニア・大家正登のWeb...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4044 2009/07/01 13:17

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング