htmlspecialchars()を使った際に日本語で入力した文字が反映されない
PHP 5.4 (CGI版)PHP 5.4.45 (cgi-fcgi) (built: Nov 10 2016 10:49:09)の環境下で以下のソースを実行してみたが、
半角英数はうまく動くのに、日本語入力をして送信を押すと真っ白になった。
<?php echo htmlspecialchars($_POST['message']); ?>
<html> <form action = "form2.php" method="post"> <input type ="text" name = "message"> <input type = "submit" value="送信します"> </form> </body> </html>
回避方法
<?php echo htmlspecialchars($_POST['message'],ENT_QUOTES,'SJIS'); ?>
htmlspecialcharsの第三引数まで記述する。
<html lang = "ja"> <head> <meta charset ="UFT-8"> </head> <body> <form action = "form2.php" method="post"> <input type ="text" name = "message"> <input type = "submit" value="送信しまっす"> </form> </body> </html>
UTF-8の文字セットをする。
実際のページはこちら
サンプルはこちら
PHP 5.4 以降の仕様変更
PHPのサンプルコードがバージョンが5.3など向けに書いてあったりするものを、PHP5.4以降の環境下で実行するとこのようになる。
まず、サーバーのPHPのバージョンを確認してみましょう。
また、このhtmlspecialchars()を使ったコードをPHP5.4の環境下で動かす場合は、この仕様変更を考慮して十分にテストして見る必要があります。
・PHPの仕様についてはこちら
http://php.net/manual/ja/function.htmlspecialchars.php