php.iniの 「magic_quotes_gpc=on」の場合、POSTやGETで送信したデータはクオートされ、、「" → ¥"」「¥ → ¥¥」などとなりますが、特定の文字(漢字)もエスケープ(クオート)されます。
このクオート文字を外すのは受信側で「stripslashes」で外せば良いのだが、今回Cookieの読み込み(書き込みかも?)でもクオートされている事に気付いた。
例えば『代表取締役』とか入力しCookieに保存し読み込むと見事に『代表\取締役』となって読み込む結果となる。
いろいろ調査してみたが、どうやら読み込み時にクオートされているよう気がする。
そこでいつものようにこの件に関して調べて見たら何とショッキングな事に「この機能は PHP 5.3.0 で 非推奨となり、PHP 6.0.0 で削除されます。この機能を使用しないことを強く推奨します。」と本家のPHPサイトに記述が・・・
確かにSQLインジェクション対策としての役目は終わったとは云っても、このmagic_quotesにはさんざん悩まされて来ただけに何だか複雑な気持ちになる。
とは云っても、現在は対策が必要であることに違いがないので取り合えず対策を討って読み込み時にstripslashesを使用して「¥」を削除する事にした。
サーバって様々なプログラムが動作中なのでうっかり「magic_quotes_gpc=off」ってな訳には行かないのですよ
勿論、この設定がどちらでも正常に動作するようにはプログラムしておりますが、細心の注意が必要です。 |