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を使って機能をオフに出来るので、
こちらの記事を参考にして頂ければと思います。

WordPress短期学習プログラム

関連記事

  1. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】count関数でエラーが出ました。。。

    かなり昔に弊社が作成したシステムがあるのですが、諸々の理由で別サー…

  2. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】メモリ使用量を測定

    memory_get_usage:PHPのスクリプトに割り当て…

  3. Database(DB:データベース)

    PHP

    【phpPgAdmin】データ型に「integer」を指定

    phpPgAdminの管理画面から、データ型に「integer」を…

  4. PHP(ピー・エイチ・ピー)

    PHP

    Nginx+WordPressでブログを運営(PHP5.5のインストール)

    PHP5.5をインストールPHP5.5のインストール手…

  5. PHP(ピー・エイチ・ピー)

    PHP

    PHPで日付けを扱う

    【PHP】date()とstrtotim()で日付を処理…

  6. Database(DB:データベース)

    PHP

    【PostgreSQL+PHP】pg_num_rows、pg_affected_rows、pg_af…

    最近、データベースとしてPostgreSQLを利用する機会が何…

最近の記事

  1. Technology-Connection-Net
  2. ドメインにハイフンを使うのは日本人だけ?
  3. SSL(HTTPS)
  4. ドメインについて
  5. WP:WordPress(ワードプレス)
  6. ドメイン(domain)
  7. JPドメイン
  8. 高速(スピード)
  9. ブログアクセス
  10. 高速(スピード)
PAGE TOP