2017-04-19 60 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 
} 

我希望我可以幫助你。