gethostbyname în PHP

Rețea PHP 4+

Află adresa IPv4 a unui domeniu, de exemplu adresa IP din spatele unui site.

Sintaxă
gethostbyname(string $hostname): string

Ce face gethostbyname

gethostbyname face o interogare DNS și returnează adresa IPv4 a domeniului. Dacă domeniul nu poate fi găsit, returnează chiar textul primit, nu false, deci verificarea se face prin comparație.

Returnează o singură adresă. Pentru toate adresele IPv4 folosește gethostbynamel, iar pentru IPv6 sau alte tipuri de înregistrări (MX, TXT) dns_get_record.

Parametri

Parametru Descriere
$hostname Numele domeniului, de exemplu "www.exemplu.ro".

Ce returnează

Adresa IPv4 sau, la eșec, textul $hostname neschimbat.

Exemple

Exemplul 1: Adresa unui site

<?php
echo gethostbyname("www.exemplu.ro");

Rezultat posibil (depinde de DNS)

203.0.113.25

Exemplul 2: Verificarea unui domeniu

Domeniile care se termină în .invalid nu există niciodată, așa că interogarea eșuează.

<?php
foreach (["localhost", "magazin-inexistent.invalid"] as $domeniu) {
    $ip = gethostbyname($domeniu);
    echo $domeniu . ": " . ($ip === $domeniu ? "nu există" : $ip) . "\n";
}

Rezultat

localhost: 127.0.0.1
magazin-inexistent.invalid: nu există

Greșeli frecvente

  • Verifici if (gethostbyname($d) === false). Funcția nu returnează niciodată false: la eșec returnează numele primit.
  • Folosești funcția într-o pagină pentru fiecare vizitator. Fiecare interogare DNS poate dura câteva secunde dacă serverul DNS răspunde greu.

Comenzi înrudite

  • ip2long / long2ip: Transformă o adresă IPv4 în număr întreg (ip2long) și înapoi (long2ip).
  • stream_context_create: Creează un set de opțiuni (metodă, antete, timeout) pentru file_get_contents, fopen și alte funcții de fișier.