Php 从IP获取主机名

Php 从IP获取主机名,php,Php,我需要从我的ip地址中提取主机名。我尝试了以下方法: echo shell_exec('nslookup ' . $iper->Get_Ip())["Server"]; 基本上它可以导出我需要的所有东西,但我无法访问主机ip。 它看起来像这样: Server: xxxxx Address: xxxxx Non-authoritative answer: xxxxxxxa name = xxxxxx Authoritative answers can be foun

我需要从我的ip地址中提取主机名。我尝试了以下方法:

echo shell_exec('nslookup ' . $iper->Get_Ip())["Server"];
基本上它可以导出我需要的所有东西,但我无法访问主机ip。 它看起来像这样:

Server:     xxxxx
Address:    xxxxx

Non-authoritative answer:
xxxxxxxa    name = xxxxxx

Authoritative answers can be found from:
xx.in-addr.arpa nameserver = sec3.apnic.net.
xx.in-addr.arpa nameserver = ns3.lacnic.net.
xx.in-addr.arpa nameserver = tinnie.arin.net.
xx.in-addr.arpa nameserver = sns-pb.isc.org.
xx.in-addr.arpa nameserver = ns3.afrinic.net.
xx.in-addr.arpa nameserver = pri.authdns.ripe.net.
pri.authdns.ripe.net    internet address = xxxx
sec3.apnic.net  internet address = xxxxxxxx
sns-pb.isc.org  internet address = xxxxxx
tinnie.arin.net internet address = xxxx
pri.authdns.ripe.net    has AAAA address xxxx
sec3.apnic.net  has AAAA address xxxx
sns-pb.isc.org  has AAAA address xxxx
tinnie.arin.net has AAAA address xxxx
有没有更好的方法来获取主机,或者我必须用这种方法来处理,并设法提取主机ip。。。。
谢谢

以下是答案,我能找到的从ip获取主机的唯一方法是:

$data = (shell_exec('nslookup ' . $ip_adress));
以下是将返回主机ip的工作代码:

$iper = new IpEr();
$ip_adress = $iper->Get_Ip();

    $data = (shell_exec('nslookup ' . $ip_adress));
    $data = (explode("\n",$data));
    $data = explode(":",$data[0]);
    echo trim($data[1]);
如果有人需要,这里是iper类:

<?php

class IpEr{
  public function Get_Ip(){
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else{
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return  $ip;
  }
}

?>

PHP为此内置了一个函数



另外,作为一般规则,使用
shell_exec
exec
不是一个好主意,因为它会引入潜在的安全漏洞

请您详细解释一下,哪些安全漏洞?它以不同的方式返回主机地址,我还是得到了同样的结果。我想知道漏洞是什么?请阅读:d@Arslan.H我已经用完整的代码更新了我的答案。您提供的链接提供了使用
exec
通常不是一个好主意的基本概念,它为攻击者提供了进入您系统的潜在途径,它并不总是不安全的,但是如果可能的话应该避免。但是你没有解释那些潜在的安全漏洞。如果你读到有一些漏洞的地方,你必须留下来,而不仅仅是写出来。。。。
<?php

class IpEr{
  public function Get_Ip(){
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else{
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return  $ip;
  }
}

$iper = new IpEr();
$ip_adress = $iper->Get_Ip();

echo gethostbyaddr($ip_adress);

?>