だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

phpのお問い合わせフォームで入力文字が確認画面で消える時の対処法は「htmlspecialchars()をチェック!」

最近、あるサイトのデータでごっそりサーバー移動をして、phpのバージョンアップをしたところ、phpフォームにおいて、エラーが発生しました。

内容としては、「お問い合わせフォームのinputに入力した文字が確認画面で反映されない」というものでした。

この時、英文字は反映されるのに日本語だけが反映されないので、原因は文字コード関係かなと思ったんですが、詳しく調べてみたところ、原因は「htmlspecialchars」でした。

対処法

結論を先に書くと下記の感じです。

▼昔の記述法だったのでエラー(文字が消える)

$var = htmlspecialchars($var);

▼最新の記述法にすると文字が反映されるようになった

$var = htmlspecialchars($var, ENT_QUOTES, 'SJIS');

要するに昔の書き方だったので、最新のphp7以上の環境で対応しなくなっていた、ということでした。

ですので、昔のphpフォームを利用しているサイトをサーバー移動させたり、php環境をバージョンアップさせる時は、htmlspecialcharsのチェックを忘れないようにしましょう!

もし、お問い合わせフォームの文字が消えた時は、ぜひ疑ってみてください!

ページ上部に戻る