HTML文のFORMタグ(<form>~</form>)およびPOSTメソッド(method="POST")で作られたHTMLフォームから送信されたデータを、同じファイルのaction属性で指定されたPHPファイルで受け取る方法は3種類あります。送信元のHTMLフォームのname属性が「username」であるフォーム部品のデータを受け取りたい場合、以下のようにします。
①スーパーグローバル変数「$_POST」を使う(例:$_POST["username"])
②グローバル変数「$HTTP_POST_VARS」を使う(例:$HTTP_POST_VARS["username"])
③送信元の部品名をそのまま使う($username)
スーパーグローバル変数とグローバル変数は、ユーザ定数の変数ではない、PHPシステムが管理している変数のことです。
php.iniファイルの「register_global」の設定値が「On」になっている環境では③のように「$username」という名前の変数に自動的に入力内容が代入されています。この変数は、通常の変数と同様に扱うことができます。しかし、「register_globals = On」の設定はセキュリティ上の問題があるため、レンタルサーバーなどでは「Off」に設定されていることがほとんどです。
<!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 名前と住所を入力して「送信」ボタンをクリックしてください。 <form action="receive.php" method="POST"> 名前:<input type="text" size="40" name="username"><br> 住所:<input type="text" size="40" name="useraddress"><br> <input type="submit" value="送信"> </form> </body> </html>
<?php header("Content-type: text/html; charset=utf-8"); echo "POSTで送信されたデータは<br>"; echo "名前→" . $_POST["username"] . "<br>"; echo "住所→" . $HTTP_POST_VARS["useraddress"] . "<br>"; ?>