【PHP】んー?なんで?
今、授業の合間を縫って作っているシステムで、謎の現象に悩んでおりまして…いわゆる注文フォームなんですけど、入力されたメールアドレスに注文受領のメールを自動送信するように実装したんですね。ところが、こいつがワナ。個人情報が絡んでいるので、クロスサイトスクリプティング対策関数のhtmlspecialchars()と、SQLインジェクション対策関数のmysql_real_escape_string()などをかませています。ところが、フォームで入力されたメールアドレスをこれらのセキュリティ対策を通してから、送信先のメールアドレスに設定すると、なぜかメールが届かない…なぜだ…試しに、Toに自分のメールアドレスを生データで指定し、ccにセキュリティ対策を通したメールアドレスを渡して送信してみたところ、自分に届いたメールでは、しっかりCC欄にフォーム入力したはずのメールアドレスが記載されている。う?ん…ちなみに$_POSTで受け取ったメールアドレスをそのまま、Toに入れてみたら、しっかり届く。つまり、セキュリティ対策をしなければ、OKという結果に…う?ん。。。なぜだ。仕方がないので、$_POSTで受け取ったメールアドレスは、そのまま2つに分け、1つをセキュリティ対策を施した上でMySQLに登録するルートに。そして、もう1つは、生データのまま、メール送信のTo欄に入れるようにしてみた。一応、その前の段階で、メールアドレスの形式を正規表現などで精査しているので、たぶん、これで運用には問題ないと思うのだけれど…できれば、セキュリティに詳しい相棒が欲しいなぁ。。。