htmlspecialcharsとは?
「HTMLコードをそのままブラウザに表示しようとすると、HTMLコードとして認識されますが、特殊な文字を別の文字列に変換することで、ブラウザにHTMLコードとしてではなく、ただの文字列として表示されるようになります。」
と記載しているので試してみる。
「index.html」送信フォームのファイル
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>ユーザー登録フォーム</h1>
<form action="confirm.php" method="post">
<p>名前:<input type="text" name="name"></p>
<p>ふりがな:<input type="text" name="kana"></p>
<p>都道府県:<input type="text" name="add1"></p>
<p>市町村:<input type="text" name="add2"></p>
<p>番地:<input type="text" name="add3"></p>
<p>最寄えき<input type="text" name="station"></p>
<input type="submit" value="確認">
</form>
<a href="list.php">一覧へ</a>
</body>
</html>
↑コンタクトフォームにhtmlコードを入れて確認ボタンを押し送信してみる。
「confirm.php」受信確認ファイル
print($_POST["name"]);
print($_POST["kana"]);
print($_POST["add1"]);
print($_POST["add2"]);
print($_POST["add3"]);
print($_POST["station"]);
↑フォーム内に入れたpタグが反映されて送られてきた["add3"]と["station"]が改行で表示されている。
htmlspecialcharsを使う
// var_dump($_POST);
$name = htmlspecialchars($_POST["name"],ENT_QUOTES);
$kana = htmlspecialchars($_POST["kana"],ENT_QUOTES);
$add1 = htmlspecialchars($_POST["add1"],ENT_QUOTES);
$add2 = htmlspecialchars($_POST["add2"],ENT_QUOTES);
$add3 = htmlspecialchars($_POST["add3"],ENT_QUOTES);
$station = htmlspecialchars($_POST["station"],ENT_QUOTES);
print($name);
print($kana);
print($add1);
print($add2);
print($add3);
print($station);