$_GET は以下の場合に使われます。
・フォームの method に get を指定した場合
・パラメータを含むリンクをクリックした場合
・パラメータを含むURLを直接入力した場合
今回の目的は、 post と get の使い方の違いをつかむことです。
【1】sample007 フォルダをコピーして sample008 フォルダを作成します。
【2】calc.html と calc.php を変更します。
*「\」はWindowsではエンマークのことです。
保存先 C:\phpdev\www\test\sample008
ファイル名 calc.html
<html>
<head>
<title>calc.html</title>
</head>
<body>
<form name="form1" action="calc.php" method="get">
<input type = "text" name = "txtA"> +
<input type = "text" name = "txtB"> = ?
<br>
<input type="submit" value="計算">
</form>
<br />
<br />
<a href="http://localhost/test/sample008/calc.php?txtA=30&txtB=40">URLで値を渡す</a><br />
</body>
</html>
保存先 C:\phpdev\www\test\sample008
ファイル名 calc.php
<html>
<head>
<title>calc.php</title>
</head>
<body>
<?php
$a = $_GET['txtA'];
$b = $_GET['txtB'];
$c = $a + $b;
print ($a." + ".$b." = ".$c."\n");
?>
</body>
</html>
*上記のプログラムはページの都合上、インデント(字下げ)が半角スペース2つになっていますが、実際には半角スペース4つにするのが好ましいです。インデントはプログラムの動作には影響しません。
【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。
準備ができたら作成したPHPプログラムを実行してみましょう。
【4】ブラウザのアドレスに http://localhost/test/sample008/calc.html と入力し、実行します。
【5】calc.html の画面が表示されました。フォームの下には文字リンクが表示されています。
まずは前回と同じようにフォームで入力した値を渡してみます。しかしmethod は get です。
【6】テキストボックスに半角数字を入力します。
【7】「計算」ボタンをクリックします。
【8】ブラウザのアドレスに注目してください。テキストボックスに入力した値が、URLのパラメータとして表示されています。計算結果が表示されるのは同じです。
前回と比べてみるとよくわかります。
【9】ブラウザの「戻る」ボタンをクリックします。
【10】calc.html に戻りました。
【11】テキストボックスの値を消してください。
【12】今度は文字リンクをクリックしてみます。この文字リンクのURLにはあらかじめパラメータを加えています。
【13】ブラウザのアドレスに注目してください。URLのパラメータとして値が表示されています。計算結果が表示されるのは同じです。
【14】ブラウザの「戻る」ボタンをクリックします。
【15】calc.html に戻りました。
【16】今度はURLを直接入力してみます。ブラウザのアドレスに以下のように入力してください。
http://localhost/test/sample008/calc.php?txtA=50&txtB=60
【17】入力したら、ブラウザの「移動」ボタンをクリックします。
【18】calc.php が動き、計算結果が表示されるのは同じです。
【19】値をいろいろ変えて、動作を確認してください。
【解説】
■calc.html側
(1)フォームの method を get に変更しました。
<form name="form1" action="calc.php" method="get">
(2)文字リンクのURLにはパラメータを指定しています。
URL?変数名=値&変数名=値
<a href="http://localhost/test/sample008/calc.php?txtA=30&txtB=40">URLで値を渡す</a>
■calc.php側
(1)フォームの method に合わせて、スーパーグローバル変数を $_GET に変更しました。リンクやURLを直接入力した場合も $_GET を使う必要があります。
$a = $_GET['txtA'];
$b = $_GET['txtB'];
*$_POST では値を受け取れませんので注意してください。
【ワンポイント】
*重要
get を使うと便利そうですが、値をURLに含めて渡しますので、パスワードなどの重要な情報が見えてしまいます。またURLにはあまり長い情報を含めることができません。そのような場合は post を使うようにしてください。