Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

HostnameLookupsをOffにしたままREMOTE_HOSTを出力する方法

ちょっと仕事で引っかかった箇所についてのネタです。



phpで$_SERVER変数として取得できるものにREMOTE_HOSTがあります。

これはユーザのホスト名を取得する項目ですが、
サーバの設定によってはこの項目は出力されません。

http://php.net/manual/ja/reserved.variables.server.php

apacheではhttpd.confで

HostnameLookups On

としないとこの項目は出力されないようになっています。


PHPスクリプト講座:サーバ変数:$_SERVER — そふぃのphp入門


HostnameLookupsがOffの場合、gethostbyaddr関数を利用する事で名前解決をする事も可能です。


しかし今回の自分のケースでは、
何故かhttpd.confではHostnameLookupsがOffになっているのに
$_SERVER[‘REMOTE_HOST’]が出力されていました。
出力される分には問題はないのですが、
なぜそうなっているのか気になったので調べてみた次第。


.htaccessでそれを上書きする設定でもあるのかと
思いましたが、それらしい設定はありませんでした。


で、もう少し.htaccessを見ていて、ある箇所に気付いた。

order deny,allow
deny from all
allow from .hogehoge.ne.jp


こんな感じでアクセス制限をホスト名で記述していました。

もしかして.htaccessで名前解決してるからapacheでも
Lookupが有効化されて変数出力されたのか……
試しに.htaccess中のホスト名を伴う部分を削ってみたら、
REMOTE_HOSTが出力されるようになりました。

どうやら.htaccess中で名前解決すれば
REMOTE_HOSTも出力されるようになるらしいです。

REMOTE_HOSTの値が取れなくて、
かつ他の手段で代用できない時の最終手段としてこんなのがあるという事で……


しかし、こんな方法で変数出力されるようになるのか……

TrackBack URL :

Leave a comment  

name

email

website

Submit comment