ユーザーが入力したデータを加工して、ブラウザに結果を表示する方法を学んでいきましょう。
例として、ユーザーに名前を入力してもらい、あいさつ文を付け加えた上で、ブラウザに表示するスクリプトを作ってみます。
入力用のテキストボックスを表示する
ショッピングサイトなどでは、ユーザーに「ようこそ、〇〇さん」といったあいさつを表示することがあります。
その際に表示するユーザー名は、あらかじめ登録されている会員情報などから取得することが多いのですが、今回は簡単なプログラムとするためにユーザーにその場で名前を入力してもらうことにします。
最初にユーザーが名前を入力するためのページを表示するスクリプトを作成してみます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP_Sample_Program</title>
</head>
<body>
<p>お名前を入力してください。</p>
<form action="user-output.php" method="post">
<input type="text" name="user">
<input type="submit" value="送信">
</form>
</body>
</html>
こんな感じでしょうか。 ブラウザでスクリプト実行してみます。
実行結果は以下のようになります。
入力フォームの表示
ユーザーからの入力を受け取り、加工して出力する流れになります。
入力用フォームで入力されたデータを出力用スクリプトに送って、結果を出力ページに表示します。
入力を受け付けるフォーム画面は以下の部分になります。
<form action="user-output.php" method="post">
<input type="text" name="user">
<input type="submit" value="送信">
</form>
<form> タグで、入力フォームの記述が始めることを示します。
</form> タグが、入力フォームの終わりを示します。
<form>から</form>までの間に、このフォームで使用するコントロールを記述します。
コントロールとは、ユーザーの入力を受け付けるための部品です。
テキストボックス
<input> タグを用いて、テキストを入力するためのコントロールであるテキストボックスを設置します。
<input type="text" name="user">
type 属性の値をtextにすると、テキストボックスになります。属性の値は ” で囲って、"text" のように記述します。
ボタン
同様に<input> タグを用いて、送信用のボタンを設置します。
<input type="submit" value="送信">
type 属性をsumbit にすると、Webサーバーにフォームの内容を送信するボタンになります。
value 属性に設定した値は、ボタンに表示されます。
ここでは、ユーザーにボタンの働きを伝えるため、「送信」とボタンに表示することにしました。
テキストボックスからデータを取得する
テキストボックスに入力された文字列を取得して、ブラウザ上にメッセージを表示するスクリプトを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP_Sample_Program</title>
</head>
<body>
<?php
echo 'ようこそ、',$_REQUEST['user'], 'さん。';
?>
</body>
</html>
ファイル名は、user-output.php とします。
スクリプトを実行してみます。
localhost / user-input.php
テキストボックスに名前(テスト)を入力して、「送信」ボタンを選択します。
フォーム送信時の動作
フォーム上のボタンを選択すると、コントロールの値が出力用のスクリプトに送信されます。
出力用のスクリプトは、<form>タグのaction 属性に指定します。
ここに指定されたスクリプトがフォームの状態に応じて実行されます。
<form action="user-output.php" method="post">
スクリプトに記述された<form>タグを確認します。
action 属性に「user-output.php」が指定されています。
「送信」ボタンを選択して、フォームを送信すると、「user-output.php」が実行されます。
method 属性のpost というのは、HTTPにおいてフォームの内容をサーバに送信するための方式です。
一方、method 属性にget(GET)を指定することもできます。
get は本来、サーバからファイルなどを取得するために用いるのですが、フォームの内容をサーバに送信する際には、post を使用することがおすすめです。送信できるデータ容量が大きいことや送信するデータの内容がユーザーに見えにくいことが、get に対するpost の利点です。
リクエストパラメータ
input タグを確認します。
<input type="text" name="user">
name 属性に user が指定されています。一方のスクリプト(user-output.php)において、同じ「user」が指定されている箇所があります。
echo 'ようこそ、',$_REQUEST['user'], 'さん。';
フォームで入力した内容は、リクエストパラメータとしてWebサーバに送信されます。
リクエストパラメータとは、Webサーバに対してリクエストを行う際に、同時に送信する付加的な情報のことを指します。
Webサーバはスクリプトを実行する際に、リクエストパラメータを渡します。
スクリプトは受け取ったリクエストパラメータの値に応じた処理を行います。
1回のリクエストにおいて、複数のリクエストパラメータを送信することがあります。そこで個々のリクエストパラメータを区別するために名前を付与します。(リクエストパラメータ名と呼びます)
テキストボックスのname 属性で指定した「user」が、今回のリクエストパラメータ名です。
出力用のスクリプトからは、同じ「user」というリクエストパラメータ名を指定することによって、テキストボックスの入力内容を取得することができます。
リクエストパラメータの取得と表示
スクリプトでリクエストパラメータを取得するためには、以下の記法を使います。
$_REQUEST['リクエストパラメータ名']
指定した名前のリクエストパラメータを取得します。
例えば、今回のようにリクエストパラメータ名が「user」であれば、以下のようになります。
$_REQUEST['user']
テキストボックスに「テスト」と入力した場合、「テスト」という文字列が取得できます。
取得した文字列は、echo を使って表示できます。
echo $_REQUEST['user'];
echo の後に複数の値を(カンマ)で区切って並べることで、値を連結して表示することができます。
値とは、数値や文字列などのデータを示します。
$_REQUEST
$_REQUEST は、リクエストパラメータを取得するための仕組みです。
PHPの文法上では、変数の一種となります。
変数は値を格納するための仕組みです。
$_REQUEST には、リクエストパラメータの値を格納することができます。
こちらの記事、併せて読んでいただければ幸いです。