I try to make simple php script to show hostname using gethostbyaddr. Let pretend the ip xxx.xxx.xxx.4 will show the hostname and ip xxx.xxx.xxx.5 not show hostname. My question is, how do i make if no hostname statement? Thank you.

$ips = array("xxx.xxx.xxx.4","xxx.xxx.xxx.5");

foreach ($ips as $value) {
    if ($hostip = @gethostbyaddr( $value )) {
       echo "$hostip<br>";
    }   
    else {
       //show no hostname statement here
    }
}
有帮助吗?

解决方案

According to the manual:

Returns the host name on success, the unmodified ip_address on failure, or FALSE on malformed input.

So you could do this:

<?php
    $ips = array("xxx.xxx.xxx.4","xxx.xxx.xxx.5");

    foreach ($ips as $value) {
        $hostname = gethostbyaddr($value);

        if ($hostname === false) { //malformed input
            echo 'IP "' . $value . '" was malformed<br />';
        } else if ($hostname === $value) { //failure
            echo 'Hostname could not be found for "' . $value . '"<br />';
        } else { //success
            echo 'Hostname: ' . $hostname . '<br />';
        }
    }
?>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top