|
magic_quotes_gpc設定「On」
php.iniファイルの中の「magic_quotes_gpc」の設定に関し、PHPとPostgreSQLとの間で重要な不突き合いが発生していた事が分かりました。この設定が「On」の場合、データベース登録においては文字化け等の問題は起きませんが、掲示板等のスクリプトにおいて「表・予・構」などの特殊文字にエスケープ文字「\」が付いてしまいます。反対に「Off」の場合、掲示板等のログファイル中の特殊文字に「\」が付く事はありませんが、今度はデータベースに登録したデータが一部文字化けを起こしてしまいます。
そこで回避措置として、.htaccessファイルによる制御を取り入れる事と致しました。第2サーバではユーザーディレクトリpublic_html下での.htaccessファイルによる設定の上書きを許可致しておりますので、掲示板等のPHPスクリプトを置いてあるディレクトリ内に、次の設定文を含む.htaccessファイルをアップロードして下さい。
| php_flag magic_quotes_gpc off |
これにより、本来のphp.iniファイル中の「On」設定が「Off」に変更されますので、指定のディレクトリ内でのログファイルにはエスケープ文字「\」は自動付与されなくなります。もちろんデータベース側は本来の「On」設定により、文字化け現象は起こりません。
尚、このような簡易的な措置を取らない場合は、スクリプト内でデータの受け渡しの際に以下の文字列処理を行わなくては行けません。ここで使用する関数はstripslashes()関数です。
処理例: $name = stripslashes($name);
この処理で、特殊文字に付いたエスケープ文字「\」を除去します。
register_globals設定「On」
PHP4.2.0以降、このデフォルト設定は従来の「On」から「Off」に変更になっています。これは偏にセキュリティ強化の為と言われておりますが、これによりPOST/GETで送られて来たデータを従来のように「$変数名」と言う形では受け取れなくなっております。そこで、KOMONETでは既存のスクリプトの事も考慮に入れて、簡易措置としてこの設定を「On」に戻しています。セキュリティは少し下がる事になりますが、何卒ご理解を賜りますようお願い申し上げます。
尚、この設定を「Off」に変更した場合は、データの取得方法が以下のように変わります。
POSTの場合…$_POST['変数名']
GETの場合…$_GET['変数名']
どうしてもセキュリティの面が気になる方は、該当のフォルダ内に以下の設定文を含む.htaccessファイルをアップロードして下さい。これによりデフォルト設定に戻ります。
| php_flag register_globals off |
mb_send_mail()関数の扱いについて
サーバのアップグレードに伴い、SMTPデーモンが従来のsendmailからpostfixに変更になりました。この影響で、今までのようにスクリプト内で単独でmb_send_mail()関数を使うと、メール内容が文字化けしてしまう現象が起きています。これはpostfixの内部処理文字コードがUTF-8であることに起因しているようです。この文字化けを回避するため、mb_send_mail()関数処理の前に以下の2つの関数処理を埋め込んでやって下さい。
mb_language("ja"); …カレントの言語を指定
mb_internal_encoding("SJIS"); …内部文字エンコーディングを指定
言語とその設定は、Japaneseの場合がISO-2022-JP/Base64、uniの場合がUTF-8/Base64、Englishの場合がISO-8859-1/quoted
printableになるそうです。mb_internal_encoding()関数処理だけでは、メール送信の際のContent-TypeのcharsetがUTF-8になってしまい、そのメールに対して返信処理をした場合、文字化けが発生してしまいます。上記の2つの処理を施すことによって初めて、通常どおりのメールが送信できるようになります。
|