2015-07-10 17 views
0

我正在制定一個解決方案來識別專用網絡中的客戶端網絡域或工作組。基於它,我必須改變一些訪問權限。是否可以通過PHP或Apache從客戶端獲取Network Domain?

我不能通過IP地址來做到這一點,因爲它不可靠,只有網絡域/工作組。

由於我不知道的原因,我不能有登錄屏幕,訪問必須是自動和無縫的。

有人知道我該怎麼辦?

+1

你想要一個Apache站點來確定遠程用戶在哪個域?這是不會通過http可用,甚至IE很久以前停止發送用戶憑證nillywilly任何人問。 –

+0

我想確定客戶端在哪裏... 例如。 - domain.global.machine-name:顯示全局數據 - domain.localA.machine-name:顯示本地數據 – LeonanCarvalho

+1

so dns domain或windows domain? –

回答

0

有可能獲得相應的使用gethostbyaddr功能http://php.net/manual/en/function.gethostbyaddr.php一個給定的IP地址:

$proxy = (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : false; 

if(!!$proxy){ 
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    echo "Warning: Your cliend is using proxy, may could not determine hostname"; 
    }else{ 
    $ipaddress = $_SERVER['REMOTE_ADDR']; // 
    } 
    $hostname = gethostbyaddr($ipaddress); //Its will return domain + machine-name inside a private network. 

    if($ipaddress == $hostname){ 
    echo "Impossible to determine hostname for: ", $ipaddress ; 
    }else{ 
     echo "The hostname for ", $ipaddress, "is : ", $hostname; 
    } 

但是,使用應用程序/會話層到網絡層的通信是有點複雜。你不能相信它在php應用程序中訪問控制。

要獲得所有公共IP地址,可以使用http頭中的WebRTC(javascript)代替遠程addrees。

+0

op想要Windows域,而不是主機名。主機名很簡單。域幾乎是不可能的。 –

+0

我不知道它有多可信。 – LeonanCarvalho

+0

OP是PO @MarcB –

相關問題