簡體   English   中英

如果用戶位於內部或外部網絡中,如何使用JavaScript確定?

[英]How to determine with JavaScript, if the user is in internal or external Network?

我有一個帶有JavaScript的按鈕,可以“調用”一個php文件。 可從內部網絡和萬維網訪問該站點。

如果我從www單擊按鈕,則php無法正常工作,因為JavaScript中的地址是內部192.168.xx地址。

function doSomething(id)
{
            var url ="http://192.168.1.1/phpfile.php?id" +id;

            var win = window.open(url, '_blank');
                if(win){
                    //Browser has allowed it to be opened
                    win.focus();
                }
                else
                {
                    //Broswer has blocked it
                    alert('Please allow popups for this site');
                }
}

是否可以區分呼叫是來自內部網絡還是來自其他網絡?

在另一種情況下(php),我使用if-else解決問題

((substr($_SERVER['REMOTE_ADDR'],0,8) == "192.168.") ||($_SERVER['REMOTE_ADDR'] == "127.0.0.1")) 
? 'http://internal/address/' : 'http://my.external.de/''

如果按鈕和JavaScript代碼位於從同一服務器交付的HTML頁面中,則可以在交付該頁面之前測試並設置正確的值。

$PREFIX = ((substr($_SERVER['REMOTE_ADDR'],0,8) == "192.168.") ||($_SERVER['REMOTE_ADDR'] == "127.0.0.1")) ? 'http://internal/address/' : 'http://my.external.de/''

function doSomething(id) { var url ="<?=PREFIX?>phpfile.php?id" +id; ....

據我了解,您希望您的網站在本地使用localhost / 192.168.xx / 127.0.0.1或在遠程Web服務器上工作,並區分您具有哪種配置,以便您的javascript可以正確地從一種切換到另一種。

首先,您無法直接從javascript獲取IP地址,您需要為此使用中繼網站:答案請參見此主題

但是,在您的情況下,我相信可以采用一種更簡單的方式進行操作,並且沒有任何“如果”。 Javascript(或瀏覽器)足夠聰明,可以為您路由呼叫。 將代碼更改為此:

function doSomething(id)
{
        var url ="/phpfile.php?id" +id;

        var win = window.open(url, '_blank');
            if(win){
                //Browser has allowed it to be opened
                win.focus();
            }
            else
            {
                //Broswer has blocked it
                alert('Please allow popups for this site');
            }
}

如果您從本地瀏覽器加載了運行腳本的頁面,則您的客戶端瀏覽器會將調用自動路由到localhost。 如果從my.external.de加載了運行腳本的頁面,則路由到my.external.de。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM