最新記事
(06/29)
(06/04)
(06/03)
(05/30)
(05/28)
|
ニュース
この欄には、このブログの内容に関連するニュースを掲載する予定です。
|
PHP+SQLite 会員登録システム(SQLite版)
PHP+SQLiteによる会員登録システムのサンプルを紹介します。
すでにテキストファイルベースやPHPファイルベースの会員情報ファイルについては「PHP 会員登録システム(テキストファイル版) 」、「会員登録システム(PHPファイル版)」で紹介しました。
前回の「PHP+SQLite 登録済チェック」で、PHP+SQLiteによる登録済みユーザーIDのチェック方法がわかりました。残っているのは、ユーザー情報をテーブルに入力する部分です。
SQLiteでのデータの入力は「INSERT INTO テーブル名 VALUES(値リスト)」です。これを用いて、データ登録の部分を次のように記述しました。
全体のソースを示す前に、表示画面のイメージを紹介しましょう。
[入力画面]
[確認・修正画面]
[登録画面]
以上のように画面が遷移していきます。入力したデータが実際にテーブルに入力されたか確認したのが、次の画像です。
[メンバー情報テーブルの内容]
なお、登録されたメールアドレス宛に次の内容のメールが送信されます。
------------------------------------------------------------
差出人:welcome@banayan.com
件 名:登録の確認について
ご登録ありがとうございます。
下記のURLにブラウザでアクセスすると会員登録が完了します。
http://banayan.com/member/confirm_mail.php?mailcode=ece926d8c0356205276a45266d361161
-------------------------------------------------------------
[ソース]会員登録システム(PHP+SQLite版)仮登録ページ
「確認メール」に記載されたURLにブラウザでアクセスすると、次のPHPファイルで本登録が完了します。
[ソース]会員登録システム(PHP+SQLite版)本登録ページ
UPDATEコマンドのクエリを実行して、データを変更しています。classフィールドの値が「2」になると、一般会員として扱うと想定しています。
以上で、PHP+SQLiteによる会員登録システムは、できあがりです。ただし、セキュリティについては、ほとんど考慮していません。実際に使用する前に自分でセキュリティの勉強をされて、修正されることをお奨めします。
なお、ログインページと会員用ページの記述については、後日触れる予定です。それまで待てないという方は、以前記事にした「ログイン管理1」や「パスワードの暗号化(md5)」などを参考に、ご自分で考えてみて下さい。
すでにテキストファイルベースやPHPファイルベースの会員情報ファイルについては「PHP 会員登録システム(テキストファイル版) 」、「会員登録システム(PHPファイル版)」で紹介しました。
前回の「PHP+SQLite 登録済チェック」で、PHP+SQLiteによる登録済みユーザーIDのチェック方法がわかりました。残っているのは、ユーザー情報をテーブルに入力する部分です。
SQLiteでのデータの入力は「INSERT INTO テーブル名 VALUES(値リスト)」です。これを用いて、データ登録の部分を次のように記述しました。
#### データ登録
$value_list="\'".$_POST['usrid']."\',\'".$pwd."\',\'".$_POST['mail']
."\',\'".$mailcode."\'";
$query = "INSERT INTO member VALUES (" .$value_list. ")";
$query = htmlspecialchars($query) ;
$query = str_replace("\\","",$query);
$result = sqlite_query($db,$query);
sqlite_close($db);
全体のソースを示す前に、表示画面のイメージを紹介しましょう。
[入力画面]
[確認・修正画面]
[登録画面]
以上のように画面が遷移していきます。入力したデータが実際にテーブルに入力されたか確認したのが、次の画像です。
[メンバー情報テーブルの内容]
なお、登録されたメールアドレス宛に次の内容のメールが送信されます。
------------------------------------------------------------
差出人:welcome@banayan.com
件 名:登録の確認について
ご登録ありがとうございます。
下記のURLにブラウザでアクセスすると会員登録が完了します。
http://banayan.com/member/confirm_mail.php?mailcode=ece926d8c0356205276a45266d361161
-------------------------------------------------------------
[ソース]会員登録システム(PHP+SQLite版)仮登録ページ
<?php
#########################メッセージ初期値&受信データチェック
if(ereg("^[a-z][a-z0-9_-]{2,15}$",$_POST["usrid"] )) {
#################受信データusrid重複チェック
###########メンバーデータ読込み・比較
$db = sqlite_open('memberdb');
if(!($db)){
die("データベースをオープンできません。");
}else{
$query = "SELECT usrid FROM member WHERE usrid = '".$_POST['usrid']."'";
$query = htmlspecialchars($query) ;
$query = str_replace("\\","",$query);
$result = sqlite_query($db,$query);
$rows = sqlite_num_rows($result);
if($rows==0){
$msg_usrid ="";
}else{
$msg_usrid ="同じ値のデータがあります。";
}
}
}else{
$msg_usrid = "半角小文字の英数字、アンダーバー「_」、ハイフン「-」で3文字以上16文字以内。";
}
if(ereg("^[a-z][a-z0-9_-]{2,15}$",$_POST["pwd"] )){
$msg_pwd = "";
}else{
$msg_pwd = "半角小文字の英数字、アンダーバー「_」、ハイフン「-」で3文字以上16文字以内。";
}
if(ereg("(^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+)@([a-zA-Z0-9_.-]+)$", $_POST["mail"])) {
$msg_mail = "";
}else{
$msg_mail = "間違いのないようメールアドレスを入力して下さい。";
}
$notice = $msg_usrid.$msg_pwd.$msg_mail;
#########################画面モード
if($notice == ""){
$mode="checked";
$title="データ確認・修正画面";
$msg="本当に間違いがないか確認して「登録」ボタンをクリックして下さい。
修正する場合は入力のうえ「チェック」ボタンを押して下さい。";
}else{
$mode="input";
$title ="データ入力画面";
$msg="入力ミスに気をつけて下さい。
間違いがなければ「チェック」ボタンを押して下さい。";
}
if($_POST['regist']){
$mode="regist";
$title ="データ登録画面";
$msg="下記内容で仮登録します。";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<title>メンバー登録データ・チェック</title>
</head>
<body>
<h1><?= $title ?></h1>
<p><?= $msg ?></p>
<form method='post' action="<?= $_SERVER[PHP_SELF] ?>">
<table style="border:#000 solid 1px;empty-cells:show;">
<tr><th>項目</th><th>登録する値</th><th>備考</th></tr>
<tr>
<th>ユーザーid</th>
<td><input type='text' name='usrid' value="<?= $_POST["usrid"] ?>"></td>
<td><?= $msg_usrid ?></td>
</tr>
<tr>
<th>パスワード</th>
<td><input type='text' name='pwd' value="<?= $_POST["pwd"] ?>"></td>
<td><?= $msg_pwd ?></td>
</tr>
<tr>
<th>メールアドレス</th>
<td><input type='text' name='mail' value="<?= $_POST["mail"] ?>"></td>
<td><?= $msg_mail?></td>
</tr>
<tr><td colspan="3" style="text-align:right;">
<?php
if($mode=="input"||$mode=="checked"){
echo "<input type='submit' name='check' value='check'>";
}
if($mode=="checked"){
echo "<input type='submit' name='regist' value='regist'>";
}
?>
</td>
</table>
</form>
<?php
if($mode=="regist"){
#### 暗号化
$mailcode = md5($_POST["usrid"]);
$pwd = md5($_POST["pwd"]);
#### データ登録
$value_list="\'".$_POST['usrid']
."\',\'".$pwd."\',\'".$_POST['mail']."\',\'".$mailcode."\'";
$query = "INSERT INTO member VALUES (" .$value_list. ")";
$query = htmlspecialchars($query) ;
$query = str_replace("\\","",$query);
$result = sqlite_query($db,$query);
sqlite_close($db);
#### 確認メール送信
mb_language("Japanese");
mb_internal_encoding ("SJIS");
$to = $_POST['mail'];
$subject = "登録の確認について";
$message ="
ご登録ありがとうございます。\n
下記のURLにブラウザでアクセスすると会員登録が完了します。\n
http://banayan.com/member/confirm_mail.php?mailcode=$mailcode\n
";//サンプルデータ
$header = "From: welcome@banayan.com";//サンプルデータ
$send_mail = mb_send_mail($to,$subject,$message,$header);
echo "データを仮登録し、「確認メール」を送信しました。
メールに記載されたURLにブラウザでアクセスして登録を完了させて下さい。";
}
?>
</body>
</html>
「確認メール」に記載されたURLにブラウザでアクセスすると、次のPHPファイルで本登録が完了します。
[ソース]会員登録システム(PHP+SQLite版)本登録ページ
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<title>メンバー登録データ・チェック</title>
</head>
<body>
<?php
if($_GET['mailcode'] ){
###########メンバーデータ読込み・比較
$db = sqlite_open('memberdb');
if(!($db)){
die("データベースをオープンできません。");
}else{
$query = "UPDATE member SET class = '2' WHERE class = '".$_POST['mailcode']."'";
$query = htmlspecialchars($query) ;
$query = str_replace("\\","",$query);
$result = sqlite_query($db,$query);
}
sqlite_close($db);
echo $usrid."様 登録が完了しました。";
}
?>
</body>
</html>
UPDATEコマンドのクエリを実行して、データを変更しています。classフィールドの値が「2」になると、一般会員として扱うと想定しています。
以上で、PHP+SQLiteによる会員登録システムは、できあがりです。ただし、セキュリティについては、ほとんど考慮していません。実際に使用する前に自分でセキュリティの勉強をされて、修正されることをお奨めします。
なお、ログインページと会員用ページの記述については、後日触れる予定です。それまで待てないという方は、以前記事にした「ログイン管理1」や「パスワードの暗号化(md5)」などを参考に、ご自分で考えてみて下さい。
PR