PHP-从主机名检索IP

时间:2018-11-19 20:53:20

标签: php ip host gethostbyname

我正在从表字段中检索值,并向其附加字符串以获取主机名列表。然后,我想遍历所有主机名并为每个主机返回IP。

以下代码获取我的主机名:

.ms {display: none;}

以上代码可以正常工作,但是我不确定如何为每个主机名检索IP。我一直在尝试gethostbyname,但无法使其正常工作。我知道我必须遍历主机名值。我会使用foreach循环吗?我已经尝试过了,但无法正常工作。有人可以给我一些指示吗?

我尝试了以下操作,但未返回任何内容:

$sql = "select * from table order by col1 asc";

$q = mysql_query($sql) or die(mysql_error() ." " . $sql);

// Loop through table and append .zzz to each col1.
while ($r = mysql_fetch_array($q)) {

    $host_name = $r['col1']. ".zzz" . " ";

    //echo $host_name;
}

我也尝试过此操作……什么也没做

$host_name_ip = $host_name;
foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $ip. '</li>';
}

谢谢。 :)

1 个答案:

答案 0 :(得分:3)

您将在初始循环中覆盖$host_name的值。将其更改为数组,您的foreach将可以使用。

while ($r = mysql_fetch_array($q)) {
    $host_name[] = $r['col1']. ".zzz";
}

要在循环中打印主机名及其地址,请使用:

foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $name . ' is at address ' . $ip. '</li>';
}

您甚至不需要将名称存储在数组中。只需在while循环中完成所有您需要的事情即可。

while ($r = mysql_fetch_array($q)) {
    $ip = gethostbyname($r['col1']. ".zzz");
    echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
}