EC-CUBE3のバグ自己修正 -- HTML特殊文字のアンエスケープ(デコード)
ECサイトの構築もほほ完成し、動作確認をしていたところ、問題が見つかりました。
当店の名前は「T&Aシステムズ」で、半角の「&」が含まれています。
この記号はHTMLの特殊文字の中のひとつで、ユーザー入力フォームなどでこれらの文字が入力された時のセキュリティ対策のために、別のコードに変換する「エスケープ処理」が行われます。
「&」は「&」というコードに変換されます。
そしてフォーム入力内容を確認表示させるときに、「アンエスケープ(デコード)処理」をして元の文字に戻します。
ところが、このデコード処理がされず、「&」がコードのまま表示されている箇所が2ヶ所(実際には他にもあると思われる)見つかりました。
1ヶ所目は、前の記事で書きましたが、カード決済プラグインの決済画面で、当店名の&が化けていました。
決済会社に連絡しましたが、最初はEC-CUBEのせいにされ、受け付けてくれませんでした。
なので、いろいろと状況証拠を提示し、決済会社のシステム部門に上げてもらえることになりましたが、2週間以上回答がなく、ネットであれやこれやかなりの時間調べ、再度別の証拠を提出して催促したら、やっとプラグインのバグを認めました。
しかし、バグを修正するのは時間がかかるので、とりあえずEC-CUBEの中のプラグインが管理している当店名の情報を書き換えるコマンドを知らせてきたので、これを実行しました。
そうしたら、&がちゃんと表示されるようになりました。
2ヶ所目は、ECサイト訪問者が「お問い合わせページ」に質問を入力したときに、自動でユーザーに送られるメールの本文内でした。
これは明らかにEC-CUBE3.0.17のバグです。
ググったところ、HTML特殊文字をデコードする「htmlspecialchars_decode」関数が見つかりました。
src\Eccube\Service\MailService.phpが自動メール送信プログラムなので、その中の$body変数に上記デコード関数を適用しました。
この結果、メール本文の中の&がそのまま表示されるようになりました。
当店の名前は「T&Aシステムズ」で、半角の「&」が含まれています。
この記号はHTMLの特殊文字の中のひとつで、ユーザー入力フォームなどでこれらの文字が入力された時のセキュリティ対策のために、別のコードに変換する「エスケープ処理」が行われます。
「&」は「&」というコードに変換されます。
そしてフォーム入力内容を確認表示させるときに、「アンエスケープ(デコード)処理」をして元の文字に戻します。
ところが、このデコード処理がされず、「&」がコードのまま表示されている箇所が2ヶ所(実際には他にもあると思われる)見つかりました。
1ヶ所目は、前の記事で書きましたが、カード決済プラグインの決済画面で、当店名の&が化けていました。
決済会社に連絡しましたが、最初はEC-CUBEのせいにされ、受け付けてくれませんでした。
なので、いろいろと状況証拠を提示し、決済会社のシステム部門に上げてもらえることになりましたが、2週間以上回答がなく、ネットであれやこれやかなりの時間調べ、再度別の証拠を提出して催促したら、やっとプラグインのバグを認めました。
しかし、バグを修正するのは時間がかかるので、とりあえずEC-CUBEの中のプラグインが管理している当店名の情報を書き換えるコマンドを知らせてきたので、これを実行しました。
そうしたら、&がちゃんと表示されるようになりました。
2ヶ所目は、ECサイト訪問者が「お問い合わせページ」に質問を入力したときに、自動でユーザーに送られるメールの本文内でした。
これは明らかにEC-CUBE3.0.17のバグです。
ググったところ、HTML特殊文字をデコードする「htmlspecialchars_decode」関数が見つかりました。
src\Eccube\Service\MailService.phpが自動メール送信プログラムなので、その中の$body変数に上記デコード関数を適用しました。
この結果、メール本文の中の&がそのまま表示されるようになりました。
スポンサーサイト