CGI講座 ≫ PHP ≫ 引数の受け取り方
引数受け取り
引数を渡す方法は「引数の渡し方」で説明しました。
では次にその値を受け取る方法について説明します。
まず、引数を渡す時に指定された方式、GETとPOSTでは受け取る時に違いがあります。
次のようなフォームを作ってみましょう。ファイル名はform.htmlで。
<form action="form.php" method="get">
名前 <input type="text" name="J_Name">
Name <input type="text" name="E_Name">
<input type="submit" value="送信">
<input type="reset" value="クリア">
</form>
GETとPOSTでそれぞれ受け取ってみます。
引数受け取り
GETでは環境変数_GETに値がそのまま入ります。
POSTでは環境変数_POSTに値がそのまま入ります。
どちらかわからない場合、環境変数_REQUESTで取ることもできます。
CGIプログラムを書く
GET,POSTに対応したCGIを作ってみます。CGIファイル名はform.phpで。呼び出し元のHTMLファイルも全部文字コードはUTFにしておいてください。
<html>
<head><meta charset="utf-8"></head>
<body>
<?php
foreach($_GET as $key => $value) {
echo $key . ':' . $value . "<br>";
}
?>
</body></html>
form.htmlのmethodをpostとgetで入れ替えてテストしてみてください。
受け取りは、getの場合は$_GET、postの場合は$_POSTになります。
$_REQUESTにするとどちらの場合でもあっても値は入りますが、場合によっては引数で渡していない値も入っていることがあります。
なんじゃこりゃ?と思いますが、
$_REQUESTは、$_GETと$_POSTとクッキーの値である$_COOKIEをすべて一緒にして入っている環境変数です。
便利なんですが、色々と問題もあるのでなるべく$_GETか$_POSTで区別してとりましょう。

結果は次のようになります。
J_Name:てすと
E_Name:test
環境変数PATH_INFOを使う
環境変数PATH_INFOを使った場合です。次のURLを実行してみます。
http://xxxx.aaa.com/cgi-bin/test.php/aaa
CGIでは、環境変数PATH_INFOで値をとってみます。
echo $_SERVER{'PATH_INFO'};
結果は次のようになります。
/aaa
今はあまり使いません。