Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

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

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

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

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

$xx = $_post[xx];

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

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します