それではこれから、PHPを書いていきたいと思いますが、
PHPの基本を簡単に説明します。
PHPの概要
PHPのプログラムは、「php」という拡張子で
「<?php」 と 「?>」の間に記述します。
そして、変数(数字や文字を保管するところ)は
「$name」のように「$」で始め、
半角小文字自由に付けられます。
そして、「if」や「print」などの命令があり、
命令の後に「セミコロン(;)」を付けます。
命令文についてはC言語やPerlに使われている
ものと似ています。
ここではPHPの概要を知っていただきたいだけなので、
命令文を列記することはしません。
そして、PHPでデータベースを扱う言語はSQLです。
前回データベースを作成しましたが、
「phpMyAdmin」ではMySQLを使用しています。
入力送信されたデータを受け取る
会員登録のファイルでは、form と input とで
登録する入力内容を送信していました。
その送信されたデータを受け取らないと
チェックできません。
その、送信されたデータは、formタグの method 属性で
指定された、post か get かにより異なります。
今回は post なので、「$_POST」で受け取ります。
受け取る各項目別の内容は、
name属性で指定した名前を項目名として
「$_POST[‘項目名’]」に保存されています。
送信データ:<input type=”text” name=”username”>
受け取るデータ:$_POST[‘username’]
よって受け取るデータは、
ユーザー名:$_POST[‘username’]
メールアドレス:$_POST[‘email’]
パスワード:$_POST[‘password’]
になります。

入力データをチェック
それでは、入力データをチェックします。
ここでのチェックは、ユーザー名が重複していないか、
メールアドレスとパスワードは入力されたかどうかを
確認します。
重複チェックはデータベースにアクセスしなければ
いけないので、あとで変更します。
会員登録のファイル名を[register.html]にしたので、
チェックするファイル名を[register_check.php]に
しましょう。
ファイル名:register_check.php
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>タイトル</title>
</head>
<body>
<?php
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$username = htmlspecialchars($username);
$email = htmlspecialchars($email);
$password = htmlspecialchars($password);
if($username == '')
{
print 'ユーザー名が入力されていません。<br>';
}
else
{
print 'ユーザー名:'.$username.'<br>';
}
if($email == '')
{
print 'メールアドレスが入力されていません。<br>';
}
else
{
print 'メールアドレス:'.$email.'<br>';
}
if($password == '')
{
print 'パスワードが入力されていません。<br>';
}
if($username == '' or $email == '' or $password == '')
{
print '<form>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '</form>';
}
else
{
$password=md5($password);
print '<form method="post" action="register_end.php">';
print '<input type="hidden" name="username" value="'.$username.'">';
print '<input type="hidden" name="email" value="'.$email.'">';
print '<input type="hidden" name="password" value="'.$password.'">';
print '<br>';
print '<input type="button" onclick="history.back()" value="戻る">';
print '<input type="submit" value="OK">';
print '</form>';
}
?>
</body>
</html>
PHPで入力チェックを行う処理を記述しましたが
わからないことが多いと思いますので、
1つ1つ解説していきたいと思います。
受け取ったデータを変数に代入する
まず、送信データを受け取り変数に代入します。
代入する変数名は、ユーザー名が「$username」
メールアドレスは、「$email」、
パスワードは、「$password」にします。
変数に代入する方法は、右から左へ代入するので
$変数名 = $_POST[‘項目名’];
となります。
<記述例>(10行目~12行目)
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];欄
データをサニタイズ(無害化)する
フォームに無効な記号やプログラミングコードなど
を入力して送られることもあります。
いたずらなど意図したことではなくても
予期せぬ動作をし不具合を起こす可能性があります。
それを防止するために
サニタイズ(消毒・無害化)します。
サニタイズは htmlspecialchars関数を使います。
例:htmlspecialchars(対象文字列);
<記述例>(14行目~16行目)
$username = htmlspecialchars($username);
$email = htmlspecialchars($email);
$password = htmlspecialchars($password);
サニタイズ前後の変数名は同じでも構いませんので
今回は同じにしています。
IF命令を使う
「register_check.php」の18行目~56行目に
使用されているIF命令を説明します。
if命令は、
「もし○○だったらこうします、
違ったらこうします」
という条件分岐に使われます。
例:
if(条件式){
条件式が真(true)であれば実行
}else{
条件式が偽(false)であれば実行
}
つまり、else が
ifの条件式があっていたらifの処理、
あっていなかったら else の処理が実行されます。
ちなみに、複数の条件を分岐させるために(elseif)
を使うこともあります。
例:
if(条件1){
条件1が真(true)であれば実行
}elseif(条件2){
条件2が真(true)であれば実行
}else{
条件1が偽(false)であれば実行
}
条件式で使われる比較演算子
条件式で使われる比較演算子の
例として $a と $b とを比較してみます。
等しい場合:$a == $b
等しくない場合:$a != $b または $a <> $b
$a が大きい場合:$a > $b
$a が小さい場合:$a < $b
また、条件が複数指定する場合に使う論理演算子の
例として、条件1と条件2を使い説明します。
条件1と条件2が両方真である場合:AND または &&
条件1と条件2のどちらかが真である場合:OR または ||
記述例:
if(条件1 AND 条件2)
if(条件1 && 条件2)
if(条件1 OR 条件2)
if(条件1 || 条件2)
PHPで文字列を出力する命令
PHPで文字列を出力する命令は主に
「echo」と「print」があります。
例:echo $username;
例:print ‘文字列出力’;
また複数の文字列を続けて出力する場合
ピリオド(.)を使います。
例:echo ‘文字列出力’.$username;
例:print $email.’画面に表示する <br>’;
※ <br>(改行タグ)などHTMLタグも出力できます。
history.back()で前の画面に戻る
inputタグで onclick属性に history.back()を
指定することで、前の画面に戻ることができます。
「register_check.php」の42行目と53行目とに
記述されています。
パスワードを暗号化する
パスワードは画面でも「*****」となって見えない
ようにしています。
セキュリティの関係から、パスワードは暗号化します。
ここでは、パスワードをMD5という暗号規格に
則って、暗号化をしています。
例:$password=md5($password);
「register_check.php」の47行目に
記述されています。
hiddenでデータをこっそり送信
inputタグで type属性に hiddenを
指定することで、画面に表示することなく
送信することができます。
実際の動きを見てみよう
ちょっと長かったですが、一通り「register_check.php」の
説明をしていきました。
以前記述した「register.html」には、
form の送信先が書かれていませんでした。
送信先は action で指定するので、
「action=”register_check.php”」
を10行目に書き足します。
ファイル名:register.html
<記述例>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>会員登録画面</title>
</head>
<body>
<main>
<section>
<form method="post" style="background: lightcyan; margin:10px; padding:10px; border:6px solid royalblue; width:400px;" action="register_check.php">
<h3>会員登録画面</h3>
ユーザー名:<input type="text" name="username" size="30"style="margin:6px;"><br>
メールアドレス:<input type="email" name="email" size="30"style="margin:6px;"><br>
パスワード:<input type="password" name="password" size="30"style="margin:6px;"><br>
<input type="submit" value="登録する" style="margin:10px 0 10px 40%;">
</form>
</section>
</main>
</body>
</html>
もし、XAMPPをインストールしてあるなら、
ここに掲載した、「register.html」と
「register_check.php」とをファイルとして保存します。
エンコードをUTF-8にして保存しますが、
保存方法をメモ帳を例に説明すると
メモ帳を起動し[ファイル]をクリックします。

[名前を付けて保存]をクリックします。

ファイル名を入力し、文字コード[UTF-8]を選択し、
[保存]をクリックするとUTF-8で保存できます。

ドキュメントルート(DocumentRoot)以下のフォルダに
2つのファイルをコピーし、「register.html」を
実行してみてください。
ユーザー名やメールアドレス、パスワードを
適当に入力し、「register_check.php」での
表示を見ると実際の挙動がわかります。
何も入力しないとどのように表示するか、
入力した場合、どのように表示するのかを
確認することで理解できると思います。
終わりましたら、XAMPPのコントロールパネルで
[Apache]列の[Stop]をクリックし[Apache]を
終了させることをお忘れなくお願いします。
コメント