- ベストアンサー
ローカルでのフォーム処理
PHP初心者です。 IIS5.0+PHP4でフォーム処理のスクリプトを編集しています。 サーバー上では正しく機能しているのですが、ローカルでは フォームに記入した内容が「次へ」をクリックすると空欄に 戻ってしまいます。 サーバー上で正しく機能するということはローカルでのPHPの 設定に間違いがあるとしか考えられないのですが、どんな点を チェックすればいいでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下、PHPのマニュアルからの抜粋なのですが、 例 3SJISユーザ用のphp.iniの設定 ;; 出力のバッファリングを有効に output_buffering = On ;; 出力の変換を有効にするために mb_output_handler を設定 output_handler = mb_output_handler ;; HTTPヘッダ charset を設定 default_charset = Shift_JIS ;; デフォルトの言語を日本語に設定 mbstring.language = Japanese ;; HTTP 入力変換を有効にする mbstring.encoding_translation = On ;; HTTP入力エンコーディング変換をautoに設定 mbstring.http_input = auto ;; SJISに変換 mbstring.http_output = SJIS ;; 内部エンコーディングをEUC-JPに設定 mbstring.internal_encoding = EUC-JP ;; 無効な文字を出力しない mbstring.substitute_character = none シフトJISの表記は"shift_jis"でもOKなのでしょうか?
その他の回答 (3)
- maro
- ベストアンサー率47% (95/199)
>mbstring.encoding_translation = Off mbstring.encoding_translation = On では? あとソースをEUCで記述してはいかがでしょう? (出力は mbstring.http_output = SJIS が正しいのでは?) output_handler = mb_output_handler の記述はありますか?
補足
maro様 rasaki様 ご指示いただき誠にありがとうございました。 ご指摘の通り mbstring.encoding_translation = Onの設定と ソースをEUCで書き出したらうまくいきました。 ご参考のために改めてmbstringの設定を記します。 [mbstring] output_bufferring = Off default_charset = shift_jis output_handler = mb_output_handler mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = shift_jis mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; 以上の通りですがお気づきの点がありましたら、またご指摘いただけると幸いです。 スクリーンでしかお礼をお伝えできないのが歯がゆいところですが、感謝しています。
- rasaki
- ベストアンサー率53% (33/62)
とりあえず、[mbstring]の設定をすべてコメントアウトして無効にしてみてください。 それから、<meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> にしてテストしても文字化けするでしょうか? あと、スクリプト自体はShift_JISでかいてあるんですよね?
お礼
コメントありがとうございました。 上に補足しました通り、スクリプトはEUCで再出力しました。 基本的に「.php」のファイルはEUCで書くべきものなのでしょうか?
- rasaki
- ベストアンサー率53% (33/62)
register_globals のオプションが off になっているせいかも知れません。 PHP初心者なゆえそれくらいしか思いつきません。 間違っていたらごめんなさい。
補足
早速のご回答ありがとうございました。 ご指摘の通り、register_globalsをONに設定したところ、フォーム自体は 正しく処理されました。 ところが、文字化けが発生してしまうのです。文字コード、文字化けに関してはたびたびトピックになっているようですが、分からないのはサーバー上のファイルは <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> で正しく動作するのですが、ローカルでテストすると文字化けすることです。 そこで <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> でローカル上でテストすると、入力内容を確認するページに進んだときに「入力された内容だけ」文字化けしてしまいます。 ご参考までに設定内容は以下の通りです。 [mbstring] output_bufferring = Off default_charset = shift_jis output_handler = mb_output_handler mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = shift_jis mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; 解決のヒントをよろしくお願いします。
お礼
maro様 ご回答ありがとうございました。 参考URLにこのへんのことは詳しく出ていますね。 よく読んでみます。 シフトJISの表記は"SJIS"が正しいようです。