$_REQUESTに入る値と、その優先順位

PHPの$_REQUESTは、POSTやGETを区別せず使えるので便利ですが、意外と認識のないのが、これら以外にもcookieの値も取れます。

そしてPHPのREQUESTの値は、デフォルトでは cookie > POST > GETの順で優先されます。

php.iniのrequest_order stringディレクティブで優先順位が設定できます。
request_order stringの設定がなければ、variables_orderディレクティブが使用されます。

variables_order = "EGPCS"

request_order string = "GPC"

このEGPCSをまとめると次のようになります。

E$_ENV
G$_GET
P$_POST
C$_COOKIE
S$_SERVER

検証コード

<?php

setcookie("test", "cookie");

echo "<pre>";
echo "REQUEST";
echo "\n";
print_r($_REQUEST);
echo "COOKIE";
echo "\n";
print_r($_COOKIE);
echo "GET";
echo "\n";
print_r($_GET);
echo "POST";
echo "\n";
print_r($_POST);
echo "</pre>";

?>
<p><a href="index2.php?test=get">GET送信</a></p>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="hidden" name="test" value="post" />
<p><input type="submit" value="POST送信" /></p>
</form>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>?test=get">
<input type="hidden" name="test" value="post" />
<p><input type="submit" value="GET/POST送信" /></p>
</form>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>?test2=get">
<input type="hidden" name="test2" value="post" />
<p><input type="submit" value="GET/POST送信" /></p>
</form>

<form method="get" action="<?php echo $_SERVER['PHP_SELF']?>?test=get">
<input type="hidden" name="test" value="post" />
<p><input type="submit" value="GET/POST送信" /></p>
</form>

関連記事

スポンサーリンク

マルチバイト文字列(日本語文字)を一文字づつ取り出す

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る