プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

画像のアップロードと同一フォームにテキスト入力項目があるのですが、submitするといくつかの文字が文字化けを起こします。(望とか)

色々調べて試してみたのですが対策が見つかりません。
FreeBSD
PHP 4.3.3
レンタルサーバ
です。

情報が足りないと思うのですが、どこまで書いていいのか分かりませんので補足が必要でしたら、補足要求いただければ幸いです。
何卒よろしくお願いいたします。

A 回答 (1件)

http://www.php.net/manual/ja/ref.mbstring.php#mb …
にも書いてありますが、PHP 4.3.3 より以前であれば
HTMLフォームの enctype が multipart/form-dataに
設定された場合、エンコードの変換を行ってくれません。

q-tip さんがお使いのサーバですと 4.3.3 との事ですので
変換してくれるはずなんですが、PHP-user でも話題が
あったように、configure の違いとか設定の違いで
変換してくれないことがあるようです。

いずれにせよ、文字化けが起きるとのことですので

$code = mb_convert_variables(mb_internal_encoding(),implode(",",mb_detect_order()),$_POST);
if(isset($_FILES) ) {
foreach( $_FILES as $key => $val ) {

mb_convert_variables(mb_internal_encoding(),$code,$_FILES[$key]);
}
}
のようなに mb_convert_variables() を使って
エンコード変換するとか、

$_POST['data1'] = mb_convert_encoding($_POST['data1'], 'EUC-JP');
単純に必要な POST データを逐一変換する必要が
あるかと思います。

参考URL:http://www.php.net/manual/ja/ref.mbstring.php#mb …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

下は前に試していましたので、上の方を試してみたのですが、やはりだめです。
submitすると入力されたデータが空になってしまいます。

この現象が起こるのはサーバ上の問題なのでしょうか?
今のところ発覚しているのは"望"がからむ時だけなのですが、他に対策がございましたら、よろしくお願いいたします。

お礼日時:2004/07/29 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!