PC/NETのetcetra/2005-11-30

Last-modified: 2005-11-30 (水) 21:39:44 (6721d)
※※このサイトは2012年頃より更新を停止しています。※※

PHP

  • 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とか関数組み合わせてどうにか問題なく動くようにできた。
    原因がわりと簡単で、自分で対処できる問題でよかった。

コメントはありません。 コメント/PC/NETのetcetra/2005-11-30

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS