[Tep-j-general] Re: php4.4.0で日本語が化け

アーカイブの一覧に戻る

Hajime Yamamoto yamam****@ytw*****
2005年 11月 8日 (火) 10:38:33 JST


山本と申します。

[PHPの現行リリースに重大な脆弱性(PHP4.4.0以下、PHP5.0.5以下)]
で PHP を 4.4.1 にアップデートされるサイトが多くなってくると思います。

メール送信時のヘッダー情報の文字化け(mb_encode_mimeheaderの挙動)
対策として[ISO-2022-JPに変換してからmb_encode_mimeheaderを使用]を
紹介されていましたが、上記対策を、当方で確認したところ使用する文字に
よっては、文字化けは発生します。
(PHP 4.4.1 環境です)

で、Web をいろいろ探したところ、XOOPS Cube公式サイトに
以下のトピックを発見しました。

http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=758&forum=5
|
mb_convert_encoding で変換する文字列の先頭に改行をいれると文字化け
しないようです。(|PHP 4.4.1 環境で検証中)
ただ、[なぜ化けなくなったのか、また他の問題が発生する可能性なども不明で
す。]
らしいのでさらに検証は必要ですが…

catalog/includes/classes/email.php の以下の3箇所を修正。

if ($subject != '') {
// PHP 4.4.x 対応 : BOF
// $subject = mb_encode_mimeheader(mb_convert_kana($subject, "KV"),
"ISO-2022-JP", "B", $this->lf);
$subject = mb_encode_mimeheader(mb_convert_kana("\n".$subject, "KV"),
"ISO-2022-JP", "B", $this->lf);
// PHP 4.4.x 対応 : EOF
}

//$to = ($to_name != '')
// ? ('"' . mb_encode_mimeheader(mb_convert_kana($to_name, "KV"),
"ISO-2022-JP", "B", $this->lf) . '" <' . $to_addr . '>')
// : $to_addr;
$to = ($to_name != '')
? ('"' . mb_encode_mimeheader(mb_convert_kana("\n".$to_name, "KV"),
"ISO-2022-JP", "B", $this->lf) . '" <' . $to_addr . '>')
: $to_addr;

//$from = ($from_name != '')
// ? ('"' . mb_encode_mimeheader(mb_convert_kana($from_name, "KV"),
"ISO-2022-JP", "B", $this->lf) . '" <' . $from_addr. '>')
// : $from_addr;
$from = ($from_name != '')
? ('"' . mb_encode_mimeheader(mb_convert_kana("\n".$from_name, "KV"),
"ISO-2022-JP", "B", $this->lf) . '" <' . $from_addr. '>')
: $from_addr;

admin/includes/classes/email.php も同様。

-- 
----------------------------------------------
Yamamoto Tool Works Corp.
Hajime Yamamoto
E-mail: yamam****@ytw***** yamam****@ytw*****
Web: http://ytw.jp http://ytw.co.jp
Tel: 81-3-5377-1910
Fax: 81-3-5936-2230
----------------------------------------------





Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る