我有一个网站托管在我局域网的本地服务器上。该服务器通过路由器的端口转发暴露在外部。我想知道客户端是从局域网之外还是从局域网之内连接Javascript/PHP的 - 找到客户端是否在同一个网络
0
A
回答
3
任何到您的服务器的端口转发请求将显示为源自执行端口转发的设备的IP地址。
所以,你只需要测试:
if ($_SERVER['REMOTE_ADDR'] == $the_ip_address_of_the_router_on_the_lan)
其中$the_ip_address_of_the_router_on_the_lan
是192.168.0.1
已知值等。
局域网上的设备(假设他们直接访问您的服务器)将使请求看起来源自他们自己的局域网IP地址。
警告:如果服务器使用主机名(例如,foo.example.com
)进行访问,并使用相同的主机名内部和LAN之外,与局域网内的DNS指向该主机名到面向Internet的IP地址的路由器,那么这些请求仍然会被路由器端口转发。
+0
我使用dns主机名,但在局域网中,我在路由器中添加了一个静态DNS条目,并直接指向服务器本地地址。所以我认为它不应该由路由器转发? – dragonn
相关问题
- 1. iphone网络客户端
- 2. 客户端网络服务
- 3. 网络编程 - 客户端 - 服务器不在同一个局域网中
- 4. 分布式网络多个客户端
- 5. 未找到Oracle客户端和网络组件 - Excel VBA
- 6. 是否有可能为Android创建一个“客户端到客户端”系统?
- 7. 在WiFi网络上发现客户端
- 8. XMPP Chat与不在网络中的客户端协同工作
- 9. 建立一个网络客户端集成的Facebook聊天?
- 10. 网络(http客户端)的boost asio库
- 11. Cocoa中的并发网络客户端
- 12. 作为网络客户端的wxPython GUI
- 13. 一般如何找出客户端是否分配了静态Ip或是否是DHCP客户端
- 14. 客户端尝试在同一局域网中找到服务器
- 15. 客户端 - 服务器网络入门
- 16. 混合网络/客户端框架
- 17. 网络TCP客户端连接
- 18. 单声道和Microsoft.Http网络客户端
- 19. 网络套接字,最大客户端?
- 20. 瘦客户端和网络编程
- 21. Unity在同一网络上连接来自Android客户端的PC主机
- 22. CoucheBase winform无法在同一网络中的远程客户端上连接
- 23. Arduino网络客户端类不工作
- 24. Axis网络服务客户端错误
- 25. Java网络 - 客户端和服务器
- 26. Python网络客户端编程库
- 27. SFML网络服务器/客户端
- 28. Unity3D网络客户端拍摄循环
- 29. 在Bootstrap协议中,客户如何知道硬件广播是否用于同一物理网络上的另一个BOOTP客户端?
- 30. 查看网站用户是否来自同一个网络(Intranet网站)
IP检查....如果有人要访问您的网络内的网站,该人将与服务器IP共享相同的IP,任何其他连接的IP都将来自本地网络外部的连接。 – NewToJS
你可以在PHP中检查'$ _SERVER ['REMOTE_ADDR']'。你应该已经知道你的服务器的IP地址,如果'REMOTE_ADDR'在同一个子网中(或者通常是私有IP地址),那么客户端是本地的。 – ROAL