PHP で $_GET $_POST で Notice: Undefined index: が出る

以下のような記述が .php 内にあった場合、Notice: Undefined index: id in /Users/foo/public_html/hoge.php on line n と表示される。

$id = $_GET['id'];

これは、外部からの汚染された引数が渡されたことが原因なので、htmlspecialchars を使ってサニタイズすると警告が表示されなくなる。

$id = htmlspecialchars(@$_GET['id']);

上の方法では、@を使ってエラー出力を抑制しているだけ。

$_GET['id'] の値が初期化されていないためにエラーとなっているので、isset で初期化チェックをおこなう。

$id = isset($_GET['id']) ? htmlspecialchars($_GET['id']) : null;

修正:2011/6/1

«
»