0
0

More than 3 years have passed since last update.

PHPでHTTPデータのダブルクォーテーションが勝手にエスケープされる

Posted at

事象

GETやPOSTで送信されるデータにダブルクォーテーションが含まれている場合、勝手にエスケープされてされてしまい少しハマりました。

\"保登心愛\"香風智乃\"

原因

原因はphp.iniのmagic_quotes_gpcが有効の為でした。

GPC(Get/Post/Cookie) 処理に関する magic_quotes の設定を行います。 magic_quotes が on の場合、'(シングルクオート)、" (ダブルクオート)、(バックスラッシュ) 、NULL には全て自動的に バックスラッシュでエスケープ処理が行われます。magic_quotes_sybase も on の場合、シングルクオートは、バックスラッシュではなく シングルクオートでエスケープされます。

image.png

ちなみにmagic_quotes_runtimemagic_quotes_sybaseは以下

magic_quotes_runtime が有効の場合、 データベースおよびテクストファイルを含む外部ソースから データを返す全ての関数のクオートは、バックスラッシュで エスケープされます。
magic_quotes_sybase 有効な場合、シングルクオートはバックスラッシュではなくシングルクオートで エスケープされます。 onの場合、 magic_quotes_gpc の指定を完全に上書きします。 これら両方のディレクティブを有効にすると、シングルクオートは ''とエスケープされます。 ダブルクオートやNULLはそのままとなり、エスケープされません。

対策

対策方法は3つあります。

php.ini

magic_quotes_gpc = Off

.htaccess

php_flag magic_quotes_gpc Off

プログラム

$str = stripslashes($_POST['coco_chino']);

この仕様は5.4.0で削除されたのでほとんどの人は遭遇しないと思われます。。。
マジッククオートとは


参考記事
PHPでクォーテーションが勝手にエスケープされてしまう時は
【PHP】POST送信時にクォーテーションが勝手にバックスラッシュでエスケープされてしまう【マジッククオート】【WordPress】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0