使用PHP确定html请求是否来自办公室内部


Determining if a html request comes from inside the office using PHP

我想知道某个服务器的设置。

比方说,我有一个在本地网络上运行的web服务器,可以通过网络内外的url(如www.example.com)访问该服务器。

我希望我的PHP网站能够确定请求是来自内部局域网还是来自外部。我怀疑使用IP地址是否可行,因为请求看起来像是来自公共IP地址,而不是内部IP地址192.168.x.x。此外,公共IP可能会不时更改。

这可能吗?我如何在PHP中实现这一点?

如果您的请求来自lan内部,则$_SERVER['REMOTE_ADDR']将来自专用ip地址组,如果来自lan外部,则不会。除非你有一个配置糟糕的内部网络,但情况可能并非如此。

在这里查找正确的地址组http://en.wikipedia.org/wiki/Private_network

如果您的内部dns服务器将example.com解析为公共ip,那么请求似乎也来自公共ip,所以如果是这种情况,您也知道请求来自内部。

只要您知道办公室的外部NAT IP范围,您就应该能够通过访问$_SERVER['REMOTE_ADDR']值轻松完成此操作。