PHP POST と GET を同時に使う方法。

PHPで作るシステムは多くの「.html」と「.php」ファイルが使われます。ページ間のデータの受け渡しには、 POST と GET どちらか一方しか使えないわけではなく、両方を組み合わせて使う場合もあります。

またよく使われる方法として hidden という部品を使い、ユーザーには見えないように値を渡すこともあります。

今回は復習も兼ねて、前回までに作った計算プログラムを、POST、GET、hiddenを使い改良してみます。


【1】sample007 フォルダをコピーして sample009 フォルダを作成します。

php-65.gif


【2】calc.html と calc.php を変更します。

php-66.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample009
ファイル名 calc.html

<html>
  <head>
    <title>calc.html</title>
  </head>
  <body>
    <form name="form1" action="calc.php?d=40" method="post">
      <input type = "text" name = "txtA"> + 
      <input type = "text" name = "txtB"> + C + D = ? 
      <input type = "hidden" name = "hidC" value = "30">
      <br>
      <input type="submit" value="計算">
    </form>
  </body>
</html>


保存先 C:\phpdev\www\test\sample009
ファイル名 calc.php

<html>
  <head>
    <title>calc.php</title>
  </head>
  <body>
    <?php
      $a = $_POST['txtA'];
      $b = $_POST['txtB'];
      $c = $_POST['hidC'];
      $d = $_GET['d'];
      $answer = $a + $b + $c + $d;
      print ($a." + ".$b." + ".$c." + ".$d." = ".$answer."\n");
    ?>
  </body>
</html>



*上記のプログラムはページの都合上、インデント(字下げ)が半角スペース2つになっていますが、実際には半角スペース4つにするのが好ましいです。インデントはプログラムの動作には影響しません。


【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample009/calc.html と入力し、実行します。


【5】calc.html の画面が表示されました。

php-67.gif


【6】テキストボックスに半角数字を入力します。

php-68.gif


【7】「計算」ボタンをクリックします。

php-69.gif


【8】まずブラウザのアドレスに注目してください。フォームの action で加えたURLのパラメータが表示されています。

php-70.gif


【9】計算結果には hidden で指定した値 30 も反映されています。

php-71.gif


【10】値をいろいろ変えて、動作を確認してください。


【解説】

■calc.html側

(1)action でパラメータを加えています。
<form name="form1" action="calc.php?d=40" method="post">


(2)hidden は画面上には表示されない部品です。ユーザが気が付かないように値を保持したい時に使います。 value は初期値を指定します。
<input type = "hidden" name = "hidC" value = "30">


■calc.php側

(1)フォームから post メソッドで送られてきた値は $_POST で、URLのパラメータは $_GET で取得しています。

$a = $_POST['txtA'];
$b = $_POST['txtB'];
$c = $_POST['hidC'];
$d = $_GET['d'];


(2)変数を使って計算し、画面に表示しています。
$answer = $a + $b + $c + $d;
print ($a." + ".$b." + ".$c." + ".$d." = ".$answer."\n");


Webのページ間は基本的につながりがないため、データの受け渡しは上記のようにいろいろ工夫が必要なわけです。

他にもセッションやクッキーを使う方法もあります。例えばユーザーのログイン情報は多くのページで使われますが、いちいちPOSTやGETで渡していたら大変です。そんな場合はセッションのほうが便利です。


スポンサードリンク

スポンサードリンク






PHP初心者入門講座TOPへ