• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpについて質問です。)

phpメールフォームの文字化けとセキュリティについて

このQ&Aのポイント
  • メールフォームがbluemailで文字化けする問題についての解決方法
  • phpメールフォームのセキュリティの問題についての考察
  • セキュリティ対策が不十分なphpメールフォームの可能性

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6825/9705)
回答No.4

メール本文のエンコードは、 >mb_language("ja"); によって >mb_send_mail() で、ISO-2022JP/BASE64エンコードされているはずなのですけどね。 実際のメールヘッダ・エンコードがどうなっているか見てみてください。 本当にメールがUTF8で来てしまっている場合、mb_language指定を"Japanese"にしてみるとか、メール送信前に明示的に$contentをUTF8→ISO-2022-JP変換してやらないといけないかもしれません。 $content2 = mb_convert_encoding($content2, "JIS"); と入れるとどうなるでしょう?

dhtfyjh
質問者

お礼

皆様ご回答ありがとうございます。 うまく行かなかったので、またご質問させていただきます。 その時はよろしくお願いします。

その他の回答 (3)

  • t_ohta
  • ベストアンサー率38% (5253/13739)
回答No.3

メールが文字化けするのは文字コードがUTF-8だからでしょう。 日本語メールは昔7bitJISコード(ISO-2022-JP)を使う習わしだったので、文字コードをメールヘッダーで指定しないと7bitJISコードとして処理したりASCIIコードとして処理される場合があります。 メールヘッダーに Content-Type: text/plain; charset="UTF-8" を入れると解消されると思います。 セキュリティ的には入力値のチェックがありませんし、メール送信後のブラウザのリダイレクトにJavaScript使っているのも微妙な感じもしますね。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

メールのヘッダーが何も指定してないのが原因です。 メール本文の文字コードを明記すれば解決すると思います。

dhtfyjh
質問者

補足

hedderとは $header = 'From: '. mb_encode_mimeheader($name) . '<' .$email .'>'; これでしょうか?

  • asciiz
  • ベストアンサー率70% (6825/9705)
回答No.1

うーん、記述は特に問題ないように見えますね… あとは、このphpを含むHTML自身がきちんとUTF-8で保存されているかどうかぐらい? >また、このプログラムはセキュリティーてきに危ないですか? うーん、送信メールアドレスにユーザー入力そのまま使っているのが気になるところですが、まあ不正な物が入力されたら送れないだけなのでそれほど問題はありませんかね…。 次のように、正しいメールアドレス形式であるかどうか確認すると、「送信してみて、エラー」を出す前に「メールアドレスがおかしいので送れません」というエラーを出すことも出来るでしょう。 >PHPでメールアドレスをバリデーションする方法を現役エンジニアが解説【初心者向け】 >https://techacademy.jp/magazine/29451

関連するQ&A