phpのお問い合わせフォームで入力文字が確認画面で消える時の対処法は「htmlspecialchars()をチェック!」
最近、あるサイトのデータでごっそりサーバー移動をして、phpのバージョンアップをしたところ、phpフォームにおいて、エラーが発生しました。
内容としては、「お問い合わせフォームのinputに入力した文字が確認画面で反映されない」というものでした。
この時、英文字は反映されるのに日本語だけが反映されないので、原因は文字コード関係かなと思ったんですが、詳しく調べてみたところ、原因は「htmlspecialchars」でした。
対処法
結論を先に書くと下記の感じです。
▼昔の記述法だったのでエラー(文字が消える)
$var = htmlspecialchars($var);
↓
▼最新の記述法にすると文字が反映されるようになった
$var = htmlspecialchars($var, ENT_QUOTES, 'SJIS');
要するに昔の書き方だったので、最新のphp7以上の環境で対応しなくなっていた、ということでした。
ですので、昔のphpフォームを利用しているサイトをサーバー移動させたり、php環境をバージョンアップさせる時は、htmlspecialcharsのチェックを忘れないようにしましょう!
もし、お問い合わせフォームの文字が消えた時は、ぜひ疑ってみてください!