2015-07-10 94 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 –

相关问题