TODAY: YESTERDAY:
TOTAL:

Lesson4-4 〜フォームを使ったパスワード認証〜
■Lessonを終えると以下のようなPHPプログラムが作れます。


Lessonサンプル

■サンプルプログラム1

テキストエディタに以下のように書き込んで、「lesson4」フォルダの中に「form.html」として保存しましょう。

<html>
<head>
<title>form</title>
</head>
<body>
パスワードを入力してください。
<form name="form" action="./sample04.php" method="POST">
<input name="pass" type="text">
<input type="submit" value="ログイン">
</form>
</body>
</html>

■解説1

このフォームの部分は問題ないと思います。methodとして、今回はPOSTを使っています。送信するデータが今回はパスワードなので、GETで送ってしまうとURLに「.php?pass=(パスワード)」という形(URLにデータを追加した状態)になり第三者から閲覧できてしまう可能性があります。
  POSTの場合は、データ部分だけを送信するのでセキュリティ面ではGETより優れています。また大量のデータを送信する場合はこちらを使用します。

■サンプルプログラム2

テキストエディタに以下のように書き込んで、「lesson4」フォルダの中に「sample04.php」として保存しましょう。

<?php
// パスワードを設定する。
$pass = 1234;
// form.htmlからのパスワードを受け取る
$form_pass = $_REQUEST["pass"];
?>
<html>
<head>
<title>Sample04</title>
</head>
<body>
<?php
// form.htmlからの値が$form_passと等しいか評価する
if($form_pass == $pass){

print "ログイン成功!!<br>\nここは、シークレットページです。";

}else{

echo "ログイン失敗<br>",
"<a href=\"./form.html\">戻る</a>";}

?>
</body>
</html>

できましたら、ブラウザのアドレスに
http://localhost/lesson4/form.html」にアクセス!
ロリポップ!
さくらのレンタルサーバ
などのレンタルサーバー使ってる方はlocalhostのところはドメイン名になります。
さて、如何でしょうか?ちゃんと表示されましたでしょうか?

■解説

form.htmlから受け取った値をこのプログラムで処理しています。コメントを適宜入れていますが、入れなくてもOKです。

$form_pass = $_REQUEST["pass"];

まず、これですが。Lesson3-1でやったものと同じです。form.htmlから送信されるデータをsample04.phpで変数として受け取っています。

次は、この受け取ったデータ($form_pass)が設定したパスワード($pass)と正しいかif文を使ってチェックします。

if($form_pass == $pass){

print "ログイン成功!!<br>\nここは、シークレットページです。";

}else{

echo "ログイン失敗<br>",
"<a href=\"./form.html\">戻る</a>";

}

$form_passと$passが等しければ{}を実行します。等しくなければelse{}を実行します。こうすることによって、秘密のページを作って友達だけが見れるページ管理者ページにログインできるようにするなんてことができます。また、今回はテキストボックスはそのままパスワードが表示されてしまいますが、type属性を「password」にすればセキュリティ面も向上します。

●予備知識(エスケープシーケンス)

"<a href=\"./form.html\">戻る</a>";

この部分を良く見ると、echoを使って<a>タグを出力しています。echoやprintを使う時はダブルクオーテーションを使用しますよね。ですが、その中に更にダブルクオーテーションがあるとプログラムはエラーを起こします。ソレを回避するためにダブルクオーテーション(")の前に\」をつけることによって打ち消すことができます。このようにして→「\"

さて、如何でしたでしょうか?このようなフォームを使った受け渡しと変数を利用すれば様々なことができると思います。10+35は?このように問題を表示してテキストボックスに入力させる。なんてこともできますね。さらに、else if()なんかを組み合わせると更にナイスなプログラムができると思います。この辺でLesson4は終りにしたいと思います。Lesson5はこれまた重要なループに関して説明していきたいと思います。Lesson5まで熟読された皆さんは、まだ80%ぐらいですが簡単な掲示板を作れるようになります。残りの20%はPHPにある関数を使用するだけです。もうちょっとです!!がんばりましょう!!

このLessonが役に立った方は、1クリックお願いします!PHPランキング

■スポンサードリンク