2017-04-19 116 views
0

首先抱歉,如果我的问题是愚蠢的,或者如果我使用错误的术语,但我对网络编程完全陌生。仅从网络登录网页

因此,我已经在网页上用几个按钮在树莓派上制作了一个Apache服务器来控制我房间的灯光。我可以通过我的家庭网络ip 192.168.xxx.xxx和互联网使用我的公共ip 188.75.xxx.xxx访问它。 (只是要清楚 - raspi连接到我的路由器,并在路由器我转发端口80到它)

我想做一些基本的登录表单,但只有当我连接槽通过188.75.xxx.xxx ip 。如果我通过192.168.xxx.xxx确认表单不会显示。

有什么办法可以达到这个目的吗? 谢谢, Adam N.

回答

2

脚本执行时,检查IP地址之前,向用户显示任何内容。阅读here关于程序。一旦你有了一个IP地址,你可以解析它并查看前两个组。试试像this这样做。然后比较这些数字并决定授予或拒绝访问该页面的权限。 Here你可以在PHP中阅读关于登录表单。在伪代码,这将看起来像:

// this is pseudo code, don't try to run it - it will not work 
$ip = get_ip(); 
$groups = parse_ip($ip); 
if (is_home_network($groups)) 
{ 
    grant_permissions(); 
} 
else 
{ 
    request_login(); 
} 
1

您可以使用PHP filter_var功能与验证过滤FILTER_VALIDATE_IP和标志过滤FILTER_FLAG_NO_PRIV_RANGE

代码示例:

if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) 
{ 
    // is not a local ip address 
} 

我希望我可以帮助你。