[PHP-users 28831] Re: 文字化け

Yasuo Ohgaki yohgaki @ ohgaki.net
2006年 3月 26日 (日) 18:20:12 JST


大垣です。

>>> php_value mbstring.http_input pass
>>> と設定する場合は
>>> php_value magic_quotes_gpc off
>>> も一緒に設定しなければ駄目。
>>> php_value magic_quotes_gpc on
>>> を利用したければ
>>> php_value mbstring.http_input auto
>>> と設定しなさい。
>>>>> magic_quotes_gpcはマルチバイトの入力に対してよくない結果をもたらす
>> 事もあるため、普段は利用してませんので詳しくは存じません。
>>
>> 個人的には自動文字変換の失敗による文字化けにはうんざりしてまして、
>> php.iniや.htaccessの状態に関わらず同一の処理ができる前処理コード
>> を作成し、利用しています。
>>
> 
> ええ、僕もうんざりしています。(^^;)
> で、少し教えてください。
> 
> この前処理というのは
> ・ini_setで文字コード関係のPHPの設定を行う
> ・magic_quotes_gpcはoff。必要があれば自身でクォートする
> ・入力文字列については必要があれば文字コード変換を行う
> という感じの処理でしょうか?

magic_quotes_pgc=onだとは... 返信する前にphp.ini設定と文字コード
をよく見るべきでした。

magic_quotes_pgcは無効に設定すべき設定です。
セキュリティ対策としても利益より悪影響の方が大きく役立たずと言っ
ても良い設定です。

日本語等のマルチバイト文字環境では100害あって一理無しの設定です
ので必ずmagic_quotes_gpcは無効に設定します。ポータブルなスクリプ
トの場合はmagic_quotes_gpc=onの場合、array_walk_recursiveと
strip_slashesを使ってmagic_quoteの影響を削除します。

# magic_quote_gpc=onはSESSIONのuse_only_cookies=offと同じような
# 有害なデフォルト設定の代表例です。

手前味噌でなんですが、「はじめてのPHP言語プログラミング入門」を
はじめ他の書籍にもこれらのFAQが書かれている書籍が多くあると思いま
す。インターネットに公開するWebサイトを作成される場合はこれらの
書籍を読まれる事をお勧めします。

ところでmagic_qoute_gpc=offにして極端に短いマルチバイト文字が送信
されないようにダミーのマルチバイト文字列を入れておけば、自動変換
を有効に設定して困ることはあまり無いと思います。

-- 
Yasuo Ohgaki : yohgaki @ ohgaki.net : http://www.ohgaki.net/




PHP-users メーリングリストの案内