2021.04.29

【WordPress】POSTやGETに「’」「”」が含まれる場合の挙動について

こんにちは、webエンジニアのゾノ( @ozonosho )です。

本日はWordPressでPOSTデータやGETデータを扱う際の小ネタです。

WordPressを利用していて「’(シングルクォーテーション)」「”(ダブルクォーテーション)」を含む文字列を送信すると、HTMLタグインジェクション対策のために勝手にエスケープされてしまいます。

文字列:’a’

POST

文字列:’\a\

みたいな感じです。

ちなみにphp.iniの設定で「magic_quotes_gpc」がOnになっている場合も同様にシングルクォーテーション等がエスケープされるのですが、WordPressの場合「magic_quotes_gpc」がOffになっていてもエスケープされます。

エスケープされるだけなのでHTML上での表示は変わりませんが、DBに入れたり、(テーマによっては)検索フォームで入力された文字を受け取ったりする場合には、エスケープされた文字列がそのまま入ることになります。

細かいクライアントだと「検索フォームに『’a’』と入力したのに検索結果ページで検索フォームに入る文字列が『’\a\‘』に変わっているじゃないか」と指摘されるので、そんなときには「stripslashes」関数を挟みましょう。

※php.net
https://www.php.net/manual/ja/function.stripslashes.php

バックスラッシュを取り除くPHP関数で、エスケープするために挿入されたバックスラッシュを取り除いて元の入力内容に戻してくれます。

こんな感じです。

実際には、送信データは何かしらエスケープしないとまずいので、

※WordPressなら後者推奨

みたいに使用するのがベターです。

おわりに

以上、今回の記事ではPOSTやGETに「’」「”」が含まれる場合のWordPressの挙動についてを紹介させていただきました。

当サイトではWordpressのカスタマイズ制作依頼を請け負っています。運営中のサイトで何かお困りのことがある方は、下記の記事を参照のうえ気軽にご相談ください。

どんな機能・要望でもOK!『Wordpressのカスタマイズ制作』はじめました。

こんにちは、webエンジニアのゾノ( @ozonosho )です。 このたびWordpressのカスタマイズ制作をはじめました。......

→この記事を読む
チャレンジを応援する無料オンラインコミュニティ運営中!

生きづらさを抱える人のチャレンジを応援する無料オンラインコミュニティ『Cree』をスタートしました。ただいま参加者100名突破!お互いの目標を共有したり、就労・就職のサポートするサービスを無料で提供しています。

オンラインコミュニティの詳細はこちら

ゾノについて

お仕事のご相談はこちら