PHP

PHP

【PHP5.3】マジッククオートの設定は、オフにしておきましょう!

マジッククオートについて

最近はPHP7が主流になってきていますが、
PHP5.3もまだまだ多くのサーバで動いています。

PHP5.3バージョンを使っているサーバでフォームなどを組んでいると発生するのが、
マジッククオートの問題です。

マジッククオートが有効になっている場合、
シングルコーテーション(')ダブルコーテーション(")などが自動でエスケープされてしまいます。

エスケープとは、
シングルコーテーションやダブルコーテーションの様なそのままではブラウザの画面に表示できないような特殊な文字に、
バックスラッシュ(¥)を付与することで、
表示できるようにすることです。

自動でエスケープしてくれるのであれば、
開発者の手間が省けて助かるはずなのですが、
困ったことに、
意図しない場面でもバックスラッシュ(¥)が勝手に付与されて困ってしまうことがあります。

なので、マジッククオートは、出来ればオフにしておいて、
エスケープ処理は必要に応じて自分で設定するのがおすすめです。

と言っても、
既に稼働済みのサーバのphp.iniを変更は恐いですし、
そもそも共用サーバだと勝手に設定を変更することが出来ない場合も多いです。

なので、
マジッククオートは無効にしておいて、
エスケープ処理はプログラムサイドで対応しましょう。

もしくは、.htaccessを使って対応することも可能です。

ということで、
今回は、
マジッククオートがオンになっていないかの確認方法
と、
マジッククオートがオンになっている場合の対応方法
についてまとめておきます。

マジッククオートの確認方法

マジッククオートの設定が、
現在オンになっているのか?
それとも、
オフになっているのか?
は、
get_magic_quotes_gpc()関数で確かめることができます。

PHPのスクリプトに、
echo get_magic_quotes_gpc()
と記述して、
ブラウザ上からアクセスしてみて下さい。

「1」が返って来れば、オンになっています。

または、
お馴染みのphpinfo()でも確認できます。

magic_quotes_gpc」の項目を探してみて下さい。
「on」になっていれば、マジッククオートが有効になっています。

マジッククオートの無効化

stripslashes()関数で、バックスララッシュを取り除く

マジッククオートがオンになってる場合、
以下の様なコードで無効化が可能です。

.htaccessを使ってマジッククオートをオフにする

マジッククオートの設定は、.htaccessを使ってオフにすることも可能です。

方法は、以下の記述を.htaccessに追記するだけです。
php_flag magic_quotes_gpc On

最後に

マジッククオートの設定は、PHP5.3.0で非推奨になり、
PHP7.0.0で削除されましたが、
まだまだ多くのサーバでPHP5.3.0が現役で活躍しています。

マジッククオートがオンになっていると、
シングルコーテーションやダブルコーテーションが勝手にエスケープ(バックスラッシュ付与)されてしまうので、
対応には注意しましょう。

プログラム側で対応するか、
.htaccessを使って機能をオフに出来るので、
こちらの記事を参考にして頂ければと思います。

関連記事

  1. PHP

    PHP

    【PHP】60進数(度分秒)による座標→10進数に変換

    弊社は不動産会社のホームページをメインに作成しているので、…

  2. WordPress(WP)

    PHP

    WPの記事インポートで画像のサムネイルが作成されない!!

    WordPressに記事をインポートしてみたのですが、どうも記事の…

  3. MySQL

    PHP

    プレースホルダ(プリペアド・ステートメント)

    私が入社する前に外注先に組んで貰ったかなり古いプログラムになるのですが…

  4. PHP
  5. PHP

    PHP

    PHPExcel テンプレートを使用してエクセルを出力

    今回は、テンプレートを使用したエクセル出力の方法を紹介します。…

  6. PHP

    PHP

    PHPで日付けを扱う

    PHPで日付けを扱う時によく使用するのがdate()関数です。&n…

最近の記事

  1. PHP
  2. PHP
  3. 風邪予防
  4. WordPress(WP)
  5. PHP
  6. 宅建
  7. アンチWP
  8. 日本語ドメイン
  9. WordPress(WP)
  10. SSL(HTTPS通信)
PAGE TOP