「Detected usage of a possibly undefined superglobal array index: $_POST[xx]. Use isset() or empty() to check the index exists before using it」というメッセージへの対処方法

公開日:2025(令和7)年4月16日/最終更新日:

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています



Plugin Checkを使って公式リポジトリに準拠するのかにチェックを入れた状態で自作プラグインのコードをチェックするとこのメッセージが出ることがあります。

これを訳すと「$_POST[xx]というグローバル値が未定義の可能性があります。isset() かempty()を使って値が存在するかをチェックするようにしてください」という意味です。

この指摘がされるのは、例えば以下のようにグローバル変数を使った場合です。

$xx = $_post[xx];

上記だとこの戻り値が空だったり、そもそも定義されてなかった時に誤動作する可能性があるよ!ということなんですね。

そこで以下のようにして未定義の場合の初期値を設定し、定義済の場合に空かどうかを判定させます。

$xx = '';
if(isset( $_post[xx] ){
  $xx = $_post[xx];
}

こうしておけば、最初に1行目で$xxという変数に予め空をセットしておいて、2行目以降で $_post[xx]が定義済かどうか、値や空かどうかを確認して$xxに格納する(未定義であれば1行目の空が返される)ようになり、誤動作を防ぐことができます。

自分で使うプラグインでそこまで..と思うかもしれませんが、自身の管理する別のサイトで使いまわした時に思わぬ結果が出ないよう対処しておいた方がよさそうですね。



Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)
WordPressのセキュリティについての考察 ~不正ログイン・改ざんを防ぐための手法メモ~