LoginSignup
18
15

More than 5 years have passed since last update.

PHP リクエストパラメータ $_REQUEST['リクエストパラメータ名']

Last updated at Posted at 2016-12-26

$_REQUEST

リクエストパラメータの取得
▪️$_REQUEST['リクエストパラメータ名']
ex)
リクエストパラメータ名が「user」

$_REQUEST['user']

$_REQUEST$_GET $_POST $_COOKIE などの内容をまとめた連想配列
$_REQUESTは連想配列
$_REQUESTはリクエスト変数
_GETの代わりに使うのはOK
_POSTの代わりに使うのはNG
・つまりなるべく使わない方がいい、postなら$_POST、getなら$_GETにした方がいい
$_REQUESTの値は、デフォルトでは cookie > POST > GETの順で優先されます

$_POSTと$_GETと$_REQUESTの違い

リクエストパラメータ名 って何?

コントロールのname属性の値がリクエストパラメータ名

  • POINT、_________________________________
    $_REQUEST
    $_REQUESTにはリクエストパラメータの値が格納される。
    _________________________________________________________
■user-input.php
<?php require 'header.php';?>
<p>お名前を入力してください。</p>
<form action="user-output.php" method="post">
    <input type="text" name="user"> <input type="submit" value="確定">
</form>
<?php require 'footer.php';?>
■user-output.php
<?php require 'header.php'; ?>
<?php
if (isset ( $_REQUEST ['user'] )) { //user-output.phpを直リンしたらエラーがでないように
    echo 'ようこそ、', $_REQUEST ['user'], 'さん。';
    echo '</br>';
    echo 'ようこそ、', $_POST ['user'], 'さん。';
}
?>
<p>
    <button onclick="history.back()">戻る</button>
</p>
<?php require 'footer.php';?>

■実行
user-input.png
確定ボタンを押したら↓
user-output1.png

$_GET

<a hrefでの$_GET

test57-input.php
<a href="test57-output.php?page=1&test=テスト&test2=あ">リンク</a>
test57-output.php
echo $_GET['page'];
echo "</br>";
echo $_GET['test'];
echo "</br>";
echo $_GET['test2'];

201706091426.png

htmlspecialchars関数

例えば、ユーザーがお名前を入力してください。というテキストボックスに<h1>テスト</h1>と入れると、htmlが反映されて表示されてしまう。これを防ぐのがhtmlspecialchars関数。
無題12263.png

user-output.php
<?php require 'header.php'; ?>
<?php
if (isset ( $_REQUEST ['user'] )) { //user-output.phpを直リンしたらエラーがでないように
    echo 'ようこそ、', htmlspecialchars($_REQUEST['user']), 'さん。';
}
?>
<p>
    <button onclick="history.back()">戻る</button>
</p>
<?php require 'footer.php';?>

対策されてないと↓
無題12262.png


htmlspecialcharsを使うと↓
無題12261.png

echo 'ようこそ、', htmlspecialchars($_REQUEST['user'], ENT_QUOTES,'UTF-8'), 'さん。';

or

    echo 'ようこそ、', nl2br(htmlspecialchars($_REQUEST['user'], ENT_QUOTES,'UTF-8'), false), 'さん。';

or

echo htmlspecialchars($_REQUEST['user'],ENT_QUOTES);
<?php
function h($str) {
    return htmlspecialchars ( $str );
}
if (isset ( $_REQUEST ['user'] )) { // user-output.phpを直リンしたらエラーがでないように
    echo 'ようこそ、', h ( $_REQUEST ['user'] ), 'さん。';
}
?>

or

<?php
function h($str) {
    return nl2br(htmlspecialchars($str,ENT_QUOTES,'UTF-8'), false);
}
if (isset ( $_REQUEST ['user'] )) { // user-output.phpを直リンしたらエラーがでないように
    echo 'ようこそ、', h ( $_REQUEST ['user'] ), 'さん。';
}
?>

でもいい

18
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
15