はじめに
スーパーグローバル変数について整理する。
$_POST
POST形式のHTMLフォームから渡された情報
ユーザーから入力された値や外部サービスから取得した値を表示する場合には、HTMLエスケープが必要となる。
エスケープ処理を正しく行わないとXSSの脆弱性の原因になる。
Encode.php
function e(string $str, string $charset = 'UTF-8'): string
{
return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, $charset, false);
}
post.php
<?php requier_once '../Encode.php'; ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ポストデータ</title>
</head>
<body>
こんにちは、<?=e($_POST['name']) ?> さん!
</body>
</html>
$_GET
クエリ情報(~?キー名=値)経由で渡された情報
get1.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>クエリ情報</title>
</head>
<body>
<form method="GET" action="get2.php">
<label for="name">名前:</label>
<input id="name" type="test" name="name" size="15" />
<input type="submit" name="送信" />
</form>
</body>
</html>
get2.php
<?php requier_once '../Encode.php'; ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>クエリ情報</title>
</head>
<body>
こんにちは、<?=e($_GET['name']) ?> さん!
</body>
</html>