同じレンタルサーバ会社でいくつかレンタルサーバを借りています。
あるお客様で既に使っているのと同じお問い合せフォームを、
別の新しいお客様のサイトでも使おうとしたら、Outlookで受信するときに文字化けしてしまうことが
判明しました!
レンタルサーバに問い合わせたところ、新しいサーバからPHPの仕様が変わったとのこと。
ウェブデザイナーの私にはPHPの知識レベルはかなり低い。
しかし、仲の良かったプログラマが辞めてしまい、会社には絶対頼りたくないIさんしか居ない。
悔しかったので少ない知識を振り絞ってがんばってみた。
まず、最初に知ったことは最近のサーバはregister_globalsとやらが、はセキュリティ上、offの設定になっているというコト。
正しい解釈かは分からんが、「ただし、フォーム送信などで変数を受け取る必要がある場合、この値をonにする必要のある、PHPアプリケーションも存在している。」ということ。
安く上げるために、昔作ったフォームなんかは、おそらくそのうち使えなくなることを知った。
ただ、今回の私のケースでは入力画面→確認画面では、文字をきちんと受け取っていることから
これは問題ではなさそう。
セキュリティ上問題はあるものの、
動作させたいPHPが存在するディレクトリに.htaccessファイルを設置し、
php_flag register_globals on
と記述し、設置する事でonにする事が可能と書いてあったので、やってみたが
問題は解決しなかった。
対応してくれないかもしれないとは思いつつ、ダメもとでレンタルサーバ会社に問い合わせをしてみたら、(御社のあるドメインのサーバでは動いているPHPを新しい別のサーバに入れたら動きません~ってかんじのメールを送ってみた)
やさしく対応してくれました☆彡
そのメールには
「mbstring の設定値について
.htaccess ファイルで設定を上書きして頂ければ解消できるかと存じます。」
と書いてあった。
mbstringって何??
という知識量だったがこれ以上、サーバ会社に頼るのも悪いと思い、自分でネットで検索しつつがんばってみた。
どうやら、mbstringはPHPで文字コードをいろいろしてくれるモノらしい。
http://jp2.php.net/manual/ja/ref.mbstring.php
確かに私の使っているお問い合せフォームはSJISになったり、EUC-JPになったりしていたなあ。
確認画面から、メールでのフォーマットへはEUC-JP→SJISだったような・・・。
でも、どうしたらいいの~!!!
結局、この問題を解決してくれたのが以下のサイト。
http://xoops.hypweb.net/wiki/2457.html
////////////////////////////////////////////////////////////////////
# Charactor Encoding
AddDefaultCharset EUC-JP
# PHP Settings
php_value output_buffering off
php_value output_handler null
php_value default_charset EUC-JP
php_value mbstring.language Japanese
php_value mbstring.encoding_translation off
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_value mbstring.detect_order auto
php_value mbstring.substitute_character " "
////////////////////////////////////////////////////////////////////
上記、.htaccessを対象のフォルダにアップロードで解決しました☆彡
どうして解決したのか理解するのはとりあえず後回し・・・。