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

#**$_REQUEST**
リクエストパラメータの取得
<font color ="ff####">▪️$_REQUEST['リクエストパラメータ名']</font>
ex)
リクエストパラメータ名が「user」

```php
$_REQUEST['user']
```

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

[$_POSTと$_GETと$_REQUESTの違い](http://qiita.com/mpyw/items/2f9955db1c02eeef43ea#_request)
### **`リクエストパラメータ名` って何？**
コントロールのname属性の値がリクエストパラメータ名

- [x] POINT、_________________________________              
**$_REQUEST**              
・``$_REQUEST``にはリクエストパラメータの値が格納される。              
_________________________________________________________

```php:■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';?>
```



```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](https://qiita-image-store.s3.amazonaws.com/0/95187/d854546d-00b3-739b-e1d8-e42f1998ce1f.png)
確定ボタンを押したら↓
![user-output1.png](https://qiita-image-store.s3.amazonaws.com/0/95187/180ce5a1-e787-8084-a055-000342cdeccb.png)

#**$_GET**
##**<a hrefでの$_GET**

```php:test57-input.php
<a href="test57-output.php?page=1&test=テスト&test2=あ">リンク</a>
```

```php:test57-output.php
echo $_GET['page'];
echo "</br>";
echo $_GET['test'];
echo "</br>";
echo $_GET['test2'];
```

![201706091426.png](https://qiita-image-store.s3.amazonaws.com/0/95187/432243e8-6d8a-af7d-95b5-688afb0f69b3.png)




#**htmlspecialchars関数**
例えば、ユーザーがお名前を入力してください。というテキストボックスに``<h1>テスト</h1>``と入れると、htmlが反映されて表示されてしまう。これを防ぐのがhtmlspecialchars関数。
![無題12263.png](https://qiita-image-store.s3.amazonaws.com/0/95187/6bc564d9-8a22-f792-c68a-e91bfe7e92ae.png)

```php: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](https://qiita-image-store.s3.amazonaws.com/0/95187/b11cb4e6-732a-72f4-f60c-466cda9c6bfb.png)

----------

htmlspecialcharsを使うと↓
![無題12261.png](https://qiita-image-store.s3.amazonaws.com/0/95187/801ce632-34e4-3300-8f28-85a48f522be0.png)
↑

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

or

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

or

```php
echo htmlspecialchars($_REQUEST['user'],ENT_QUOTES);
```

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

or

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

でもいい