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.