htmlspecialchars()関数を使うと、テキストボックスに入力されたデータに含まれるHTMLの特殊文字を実体参照に置き換えできます。この関数を使うことにより、HTMLタグはWebブラウザじょうでは単なるテキストとなるため、HTMLとしての機能を無効化できます。例えば、ユーザがテキストボックスに「<b>」という文字を入力した場合、htmlspecialchars()関数の返り値は「<b>」という文字列になります。これをWebブラウザで表示すると「<b>」という文字がそのまま表示され、"太字に表示する"という機能は効きません。
このほか、htmlspecialchars()関数は次のような実態参照の置換を行います。
< | < |
> | > |
& | & |
" | "(第2引数に定数「ENT_NOQUOTES」を指定した場合) |
' | '(第2引数に定数「ENT_QUOTES」を指定した場合) |
HTMLタグを含む文字列を入力して「送信」ボタンをクリックします。2番目のメッセージは特殊文字が実態参照に置換されて、HTMLタグが無効化されています。
<?php header("Content-type: text/html; charset=utf-8"); if(isset($_POST["btnExec"])){ //受け取ったデータをそのまま表示 echo $_POST["inputdata"] . "<br><br>\n\n"; //HTML特殊文字を置換 echo htmlspecialchars($_POST["inputdata"]) . "<br><br>\n\n"; } ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> テキストボックスに値を入力して「送信」ボタンをクリックしてください。 <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST"> <input size="90" type="text" name="inputdata"> <input type="submit" name="btnExec" value="送信"> </form> </body> </html>