外部から来る変数

 もう既にご存知のように、ブラウザからの要求にはGETPOST等があります。では、PHPでのこれらの処理の仕方を見てみましょう。

GET

 直接ブラウザにURlを打ち込んだ場合はGET要求になります。明示的にメソッドを指定しない場合もGET要求になります。以下に、そのプログラム例test.php3を示します。

<?php
print ($hoge);
?>

これをサーバー上の適当なディレクトリにアップし、ブラウザから次のように入力します。

http://www.***.***.jp/~***/***/test.php3?hoge=Hello

すると、引数「Hello」を受け取ったtest.php3はブラウザに「Hello」と出力します。

 GETで直接Webサーバーに送信できる文字は、半角英数字だけです。日本語などのマルチバイト文字は、当然GETで直接送信する事は出来ません。GETで日本語を送信したい時は、HTTPエンコードする必要があります。PHPでは、urlencode ( )関数rawurlencode ( )関数で簡単にHTTPエンコードする事が出来ます。

*実際にどんな文字列になるのか試して見ましょう。以下のリンクからどうぞ_(._.)_

URLエンコードとデコード

POST

 GET要求以外によく使われるのが、POST要求です。POST要求はHTMLのFORM内で明示する必要があります。POSTでは、日本語フィールドも自動的にHTTPエンコードされて送信されます。具体的なプログラム例は、このホームページの「PHPプログラム陳列棚」の内容を参考にして下さい。

 受け取り側はtextフィールド等で指定したnameの値を変数名として受け取ります。PHPの場合、これらの値は$変数名で簡単に受け取る事が出来ます。Perlのように、一旦フォームデータを受け取った後、分割処理をするような必要はありません。

PHP4.2.0以降の変更点

 PHP4.2.0以降のバージョンでは、PHPの設定ファイルであるphp.iniの以下の設定の値が、これまでと違いデフォルトで「Off」になっています。

register_globals = Off

これは偏にセキュリティ強化の為の措置のようですが、このままでは以前のように「$変数名」と言う単純な形での外部データの取得が出来ません。もしお使いのサーバのPHPがこれに該当する場合は、POSTやGETで送られた値を取得する際の書式を以下のように変更して下さい。

POSTの場合…$_POST['変数名']

GETの場合…$_GET['変数名']

クラスとオブジェクト 前へ

HOME

次へ ファイルのアップロード