入力に対応させよう(1)
 
前回のプログラムでは、5つのメッセージをランダムに表示させていましたが、今回はユーザーの入力に
対応したメッセージを表示させたいと思います。
では、今回はユーザーに年齢を入力させ、それに対応したメッセージを表示させてみましょう。
 
・フォームを使う
ユーザーからの入力を受け付けるにはHTMLでフォームを作成します。例えばこんな感じです。
uranai.php
<html>
<title>占いフォーム</title>
<body>
<form action="uranai_result.php" method="get">
<input type="text" name="age">
<input type="submit" name="ok" value="占う">
</body>
</hrml>
※HTMLについては、細かい説明は省略します。

これで

このようなフォームができました。form action には、遷移させたいアドレス、methodはGET方式に設定してい
ます。GET方式とは、入力した値をパラメーターとしてURLに追加して渡すことができます。
このように入力した値がURLに表示されます。今回は年齢というセキュリティに気を遣わなくても良い値でした
が、パスワードなどの個人情報の場合GET方式は不適切です。注意しましょう。
セキュリティが重要な場合は、POST方式というものを使います。その場合、入力された値は表示されません。
 
今回も、POST方式にしておきましょう。
入力した値は$_POST["フォームのname"]という配列に格納され、遷移したページで受け取ることができます。
<html>
<title>占いフォーム</title>
<body>
<form action="uranai_result.php" method="post">
<input type="text" name="age">
<input type="submit" name="ok" value="占う">
</body>
</html>
$_GETや$_POSTは特別な変数で「スーパーグローバル変数」と呼ばれています。フォームから渡された値を
連想配列に格納します。
 
・プログラムを記述
今回は、このような流れで作ります。
<ユーザーが年齢を入力>

<結果表示ページへ遷移>

<POSTで受け取った値の十の位を配列のキーにしてメッセージを表示>
 

ではこれらを踏まえて、プログラムを記述していきましょう。

 
uranai_result.php
<?php
//$agenoにPOSTで送られた値を10で割って正数値にして代入
   $ageno = floor($_POST["age"]/10);

//$uranai配列に各メッセ―ジを格納
   $uranai[1] = "10代のあなたは青がラッキーカラーです。";
   $uranai[2] = "20代のあなたは赤がラッキーカラーです。";
   $uranai[3] = "30代のあなたは緑がラッキーカラーです。";
   $uranai[4] = "40代のあなたは黄色がラッキーカラーです。";
   $uranai[5] = "50代のあなたは白がラッキーカラーです。";

//配列を表示させる
   print $uranai[$ageno];

?>
uranai.phpにアクセスして年齢を入力してみてください。対応したメッセージが表示されますね。
 
・floor関数
また新しい関数が出てきました。floor関数は引数の数値を切り捨てて返します。
floor(数値または変数)
今回は年代でメッセージを分けています。ですから、年代を配列のキーに利用できますね。
十の位だけにするために、まず年齢を10で割ります。年齢は必ずしもキリのいい数字とは限りませんから
余りが出るので、floor関数で余りを切り捨てているのです。
 
他の処理は前回と似ているので、分かりますね。$agenoに$_POST["age"]としてuranai.phpから受け取った値
を格納していることにだけ注意してください。
 

このままでも最低限の機能はありますが、もし数字以外の値がフォームに入れられたらどうすればいいか、

10代〜50代以外だった場合の処理はどうすればいいのか…まだ問題はありますね。

次は、それらに対応させていきます。

 

 

 
 
(C)1999-2003 BE CORPORATION All rights reserved.Terms of Use. Privacy Policy.