[PHP]GET/POST データで、自動的にエスケープ(\)が追加される
困った、、、
PHPを使用して、Web上からテキストファイルをメンテナンスできるツールを作成していた。
その時に作成したソースは下記の通り。
PHP
$openFile = "./data.txt"; $input_data1 = (string)$_POST['inputdata']; $fp = fopen($openFile,'w'); fwrite($fp,$input_data1); fclose($fp); print("Done");
どうも、”(ダブルクォート) の前に、必ず \(円マーク) が追加されるようだ。
ソースファイルもいたってシンプル
\が付与される要素はない
これ、絶対PHPが悪いやつじゃん
解決策
調べたところ、やっぱりPHPが自動的に付与しているみたい。
PHPの設定ファイルを変更することで、自動付与する機能を停止できるみたい。
php.ini内の[magic_quotes_gpc]が[ON]になっている場合に
$_GETや$_POST等の変数が勝手にエスケープされるみたいです。
そこで、下記の通り設定ファイルを変更
php.ini
magic_quotes_gpc off
これで無事解決!!
サンプルコード使用時の注意点
今回のサンプルコードでは、妥当性のチェックを行っていません。
例外が発生する場合があります。
実際の実装では妥当性の確認を行うように注意してください。