PC/NETのetcetra/2005-11-30 のソース
※※このサイトは2012年頃より更新を停止しています。※※
**PHP [#e883128a] -''php-4.1.1のmb_send_mail関数のバグ対処'' 去る11月15日に、利用しているレンタルサーバ業者さんの方でphpの脆弱性対策のためにphp-4.1.1へのバージョンアップがあった。 それ以降、pukiwikiおよび自分でちょろっと作ってたメール作成/送信スクリプトの両方で件名の文字化けが発生するようになった。 原因がphp-4.1.1のmb_send_mail関数にバグがあるためらしい。 http://ns1.php.gr.jp/pipermail/php-users/2005-November/027871.html ~暫定対処としてはmail関数で代用するとのことだったので、どうしたらいいのか上記のメーリングリストの記事のFollowUpとか見ていったところ、見つかった。 http://ns1.php.gr.jp/pipermail/php-users/2005-November/027881.html 上記から超抜粋。 mail( $to, mb_encode_mimeheader(mb_convert_encoding($subject, "JIS"), "ISO-2022-JP", "B"), mb_convert_encoding($body, "JIS"), $head, $opt ); mb_send_mail関数ってmail関数のラッパーだったのね↓ http://php.benscom.com/manual/ja/function.mb-send-mail.php ついでにmb_encode_mimeheader関数使うときの注意も↓ http://ns1.php.gr.jp/pipermail/php-users/2003-June/016403.html ~で、バグ文字化けは解決したが、Return-Pathを上記抜粋で言う$optで指定しようとすると「セーフモードだからだめよ」と言われた。 でも$headのところでReturn-Pathを記述してやったら書き換えられた。 ようわからんけど良しとしよう。 -''次なる問題 - PHS電話機からのメール作成/送信スクリプト利用'' 手製のメール作成/送信スクリプト、今日まで使ってたauのW21Kやその前の機種では問題なく利用できてた。 しかしWillcomのPHSに乗り換えを図り、端末AH-J3003Sでこれまで同様にアクセスしたところ、入力した文をPOSTメソッドで渡すときに、渡したデータだけが異なる文字コードとして扱われる問題が発生。 調べてみると、スクリプトの内部encodeも吐き出すHTMLのMETAタグで指定するcharsetもEUC-JPで統一してあるんだけど、AH-J3003SのブラウザがPOSTで渡すデータが無理やりSJISになっているためらしい。そんなことすんのー?(ノд`) 改行コードの違いとか気になるのでスクリプトをSJISに直したくはない。 しょーがないのでmb_detect_encodingとかmb_convert_encodingとか関数組み合わせてどうにか問題なく動くようにできた。 原因がわりと簡単で、自分で対処できる問題でよかった。 #pcomment