CGI 版 php での制限 2018-12-21 (金) 13:52:50+09:00

ソフトウェア

最近、いつまでたってもブログのカウンタが増えないなあと思っていたが、原因が分かった。

リファラが取得できなかった場合はページ内移動かどうかの判定が出来ないため、カウントアップをしないようにしていたのだが、なぜかその部分のコードを通っていたのでカウントアップされていなかった。

どうしてなのか調べてみると、「さくらサーバでのfilter_input(INPUT_SERVERの挙動が・・」のコメントによると、どうやら、 CGI 版の php では、

filter_input(INPUT_SERVER,'HTTP_REFERER')

などの INPUT_SERVER を引数に取るもの( $_SERVER の値)が全滅するらしい。

$_SERVER['HTTP_REFERER']

に戻したら、以前のようにカウントアップするようになった。

ちなみに、「PHP filter_input(INPUT_SERVER, 'REQUEST_METHOD') returns null?」によると、 CGI 版では filter_input() を用いた場合 INPUT_SERVER, INPUT_ENV の値は取得できなくて、INPUT_GET, INPUT_POST, INPUT_COOKIE の値は取得できるそうだ。

キーワード: php CGI filter_input INPUT_SERVER bug