PHPでウェブの世界と繋がろう!
menu
ホーム > PHPの文法 > 5 変数 > 5-6 $_POST ( スーパーグローバル変数のポスト変数 )

5-6 $_POST ( スーパーグローバル変数のポスト変数 )

Pocket

5-6 PHP5 PHP7
[ $_POSTを利用したフォームアプリケーションはこちら ]

$_POST(ポスト変数)

- 1 分ノート ! -

  • $_POST
    PHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_POST
    HTTP POST メソッド で送信された値を取得する変数
  • $_POST連想配列として使用する
  • $_POST は、関数やメソッドの内部で使用する場合、
    global $_GET; とする必要がない
$_POSTの送受信
  • $_POST
    HTTP POST で渡された値を取得する変数
  • クライアントからサーバーにデータを送信するHTTPメソッドには、
    GETPOST の両方がある
  • HTTP POST メソッドでデータを送信する方法は
    HTML の <form>タグmethod属性POST にする
  • $_POST連想配列として使用する
  • クライアントから HTTP GET で送信されたリクエスト結果の値は
    変化しません
    。従ってブックマークに登録しても同じ結果を得れる。
    HTTP POST で送信されたリクエスト結果の値は変化する場合がある

$_POST(POST変数)とは
POINT

  • $_POST
    PHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_POST
    HTTP POST メソッド で送信された値を取得する変数
  • $_POST連想配列として使用する
  • $_POST は、関数やメソッドの内部で使用する場合、
    global $_GET; とする必要がない

$_POSTは、PHPの定義済み変数のポスト変数です。この変数は、HTTP POST メソッドで送信された値を取得する変数です。

$_POSTは、連想配列で使用します。

$_POSTは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_POST; とする必要はありません。

$_POSTはPHPの定義済み変数
$_POSTは、PHPの定義済み変数の内の1つの変数です。PHPには定義済み変数が複数あります。其の中の1つが$_POSTです。
PHPの定義済み変数はスーパーグローバル変数とも言います。
$_POST = PHPの定義済み変数 = スーパーグローバル変数
また、$_POSTは自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)

PHPの定義済み変数(=スーパーグローバル変数)

$GLOBALS
(グローバル変数)
・グローバルスコープで使用可能なすべての変数への参照
・連想配列として使用
$_SERVER
(サーバー変数)
・サーバ情報および実行時の環境情報
・連想配列として使用
$_GET
(ゲット変数)
・HTTP GET 変数
・連想配列として使用
$_POST
(ポスト変数)
・HTTP POST 変数
・連想配列として使用
$_FILES
(ファイル変数)
・HTTP ファイルアップロード変数
・連想配列として使用
$_REQUEST
(リクエスト変数)
・HTTP リクエスト変数
・連想配列として使用
$_SESSION
(セッション変数)
・セッション変数
・連想配列として使用
$_ENV
(環境変数)
・環境変数
・連想配列として使用
$_COOKIE
(クッキー変数)
・HTTP クッキー
・連想配列として使用

これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。

※注意2:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。

可変変数についてはこちらを参照下さい。

$_POSTの送受信について
POINT

  • $_POST
    HTTP POST で渡された値を取得する変数
  • クライアントからサーバーにデータを送信するHTTPメソッドには、
    GETPOST の両方がある
  • HTTP POST メソッドでデータを送信する方法は
    HTML の <form>タグmethod属性POST にする
  • $_POST連想配列として使用する
  • クライアントから HTTP GET で送信されたリクエスト結果の値は
    変化しません
    。従ってブックマークに登録しても同じ結果を得れる。
    HTTP POST で送信されたリクエスト結果の値は変化する場合がある

送受信について

$_POSTは、HTTP POST メソッドで渡された値を取得する変数です。

クライアントからサーバーにデータを送信するHTTPメソッドには、GET と POST の両方があります。

HTTPとは、ウェブブラウザとウェブサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコル(通信方法、通信規約というようなものです)のことです。

HTTP POST メソッドでデータを送信する方法は HTMLの <form>タグ を利用します。<form>タグ のmethod属性 に POST を指定することで、フォームのパラメーターをサーバーへ送信することが出来ます。

$_POSTは、連想配列として使用します。
form の <input>タグ や <checkbox>タグ 、 <select>タグ などで指定する name属性 の値は、$_POSTの連想配列の「key名」となります。value属性の値が値そのものになります。

以下のフォームの inputタグ の値を$_POSTで受け取る場合

<form action="<?php $_SERVER&#91;'PHP_SELF'&#93;; ?>" method="POST">
yourname:<input type="text" name="yourname" value="山田">
</form>
<?php echo $_POST&#91;'yourname'&#93;; ?>

結果は

山田

となります。

クライアントから HTTP GET で送信されたリクエスト結果の値は変化しません。従ってブックマークに登録しても同じ結果を得れます。ですが、HTTP POST で送信されたリクエスト結果の値は変化する場合があります。HTTP POSTの場合、ページを再読み込みする際に「フォームのデータを再送信しますか?」などのメッセージが表示されますが、これは値が変化する場合があるためです。

<form>タグ を利用して HTTP POST メソッド で送信

post_reg1.php と post_reg2.php の2つのファイルを作成し、<form>タグ の method属性 を POST にして値を送信し、$_POST で値を取得し出力します。

– サンプル Click Here ! –

post_reg1.php

HTMLの <form>タグ で method属性 を POST にして送信します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>post_reg1</title>
</head>
<body>

<h1>POST送信</h1>
<form method="post" action="post_reg2.php">
<input type="text" name="sitename" size="15" value="TRYPHP">
<input type="submit" value="送信">
</form>

</body>
</html>

post_reg2.php

$_POSTを連想配列として使用します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>post_reg2</title>
</head>
<body>

<h1>POST受信</h1>
<?php echo $_POST&#91;'sitename'&#93;; ?>

</body>
</html>

結果は

POST送信

POST受信
TRYPHP

となります。

HTTP POST メソッドでフォームの複数の値(チェックボックスなど)を送信

post_checkbox_reg1.php と post_checkbox_reg2.php の2つのファイルを作成し、formタグ のmethod属性をPOSTにして複数の値(チェックボックスなど)を送信し、 $_POST で値を取得し出力します。

– サンプル Click Here ! –

post_checkbox_reg1.php

HTMLのformタグでmethod属性をPOSTにして送信します。
inputタグののname属性に「hoby[]」と指定することで、チェックボックスなどの複数の値を送信できます。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>post_checkbox_reg1</title>
</head>
<body>

<h1>POST送信</h1>
<form method="post" action="post_checkbox_reg2.php">
趣味:<br/>
<input type="checkbox" name="hoby&#91;&#93;" value="musicappreciation">音楽鑑賞<br/>
<input type="checkbox" name="hoby&#91;&#93;" value="moviegoing">映画鑑賞<br/>
<input type="checkbox" name="hoby&#91;&#93;" value="reading">読書<br/>
<input type="checkbox" name="hoby&#91;&#93;" value="fishing">釣り<br/>
<input type="submit" value="送信">
</form>

</body>
</html>

post_checkbox_reg2.php

$_POSTを連想配列として利用します。チェックボックス等で送信された複数の値を取得する方法は幾つかあります。以下の例では、foreach構文やfor文を利用して$_POSTを展開しています。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>post_checkbox_reg2</title>
</head>
<body>

<h1>POST受信</h1>
<?php if(!isset($_POST&#91;'hoby'&#93;)){ ?>

	選択されていません。<br/>

<?php }else{ ?>

	<strong>$_POST['hoby']をforeach構文で表示</strong><br/>
	<?php foreach($_POST&#91;'hoby'&#93; as $value){ ?>
		<?php echo "$value<br/>\n"; ?>
	<?php } ?>

	<br/>

	<strong>$_POST['hoby']を連想配列のキー名を指定して表示</strong><br/>
	<?php $max = count($_POST&#91;'hoby'&#93;); ?>
	<?php for($i=0; $i<$max; $i++){ ?>
		<?php echo "{$_POST&#91;'hoby'&#93;&#91;$i&#93;}<br/>\n";?>
	<?php } ?>

	<br/>

	<strong>$_POST['hoby']の構造を確認</strong><br/>
	

		



<?php } ?>

</body>
</html>

サンプルコード

[ $_POSTを利用したフォームアプリケーションはこちら ]

– サンプル Click Here ! –

<h3>$_POST変数の送信と取得</h3>

このページに 「time」という名前で「値」は現在時刻の POST変数 を送信します。<br/>
<form action="http://www.tryphp.net/code-example/php/3-5-6.php" method="post">
<input type="text" name="time" value="<?php echo '現在時刻は:'.date('Y/m/d H:i:s'); ?>" size="60">
<input type="submit" value="送信">
</form>

<div style="background-color:#ffffff;margin:10px; padding:10px; border:solid #efefef 1px;">
<?php
//$_POST&#91;'time'&#93;が存在していれば
if(isset($_POST&#91;'time'&#93;)){
    echo '<strong>$_POST[\'time\']が送信されました。値は[ '.$_POST['time'].' ]です。'."</strong><br/>\n";
    ?>
    <form action="http://www.tryphp.net/code-example/php/3-5-6.php" method="post">
    <input type="submit" value="クリア">
    </form>
<?php
}else{
    echo '<strong>$_POST[\'time\']はまだ送信されていません。'."</strong><br/>\n";
}
?>
</div>
実行結果
$_POST変数の送信と取得

このページに 「time」という名前で「値」は現在時刻の POST変数 を送信します。



$_POST[‘time’]が送信されました。値は[ 現在時刻は:2013/10/26 18:38:14 ]です。


– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2011年10月20日
最終更新日:2016年12月26日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpref-post/trackback/