Position actuelle: Accueil> Derniers articles> Vous voulez obtenir toutes les adresses IPv4 correspondant au nom de domaine? La fonction GethostByNamel peut vous aider à résoudre facilement le problème

Vous voulez obtenir toutes les adresses IPv4 correspondant au nom de domaine? La fonction GethostByNamel peut vous aider à résoudre facilement le problème

gitbox 2025-06-15

Dans PHP, nous devons souvent obtenir l'adresse IPv4 correspondante en fonction du nom de domaine. Il s'agit d'une exigence très courante pour de nombreux scénarios d'applications, tels que l'obtention de l'adresse IP d'un site Web pour les demandes de réseau, ou l'exécution de la résolution de noms de domaine et du contrôle d'accès sur le serveur. PHP fournit une fonction très pratique - GethostByNamel () , qui peut rapidement renvoyer toutes les adresses IPv4 correspondant à un nom de domaine.

Cet article présentera comment utiliser la fonction GethostByNamel () pour obtenir l'adresse IPv4 du nom de domaine spécifié et le démontrer en combinaison avec des cas réels.

Quelle est la fonction GethostByNamel () ?

GethostByNamel () est une fonction intégrée en PHP qui prend un nom de domaine en tant que paramètre et renvoie un tableau contenant toutes les adresses IPv4 du nom de domaine. Cette fonction utilise la requête DNS pour résoudre le nom de domaine et renvoie l'adresse IPv4 correspondante via l'enregistrement A. Il convient de noter que cette fonction renvoie un tableau et chaque élément est une adresse IPv4.

Prototype de fonction

 array gethostbynamel ( string $hostname )
  • $ hostname : le nom de domaine qui doit être analysé.

  • Valeur de retour: en cas de succès, renvoyez un tableau contenant des adresses IPv4. S'il échoue, retournez false .

Exemple: comment utiliser GethostByNamel () pour obtenir l'adresse IPv4 du nom de domaine

Supposons que nous devons obtenir toutes les adresses IPv4 du nom de domaine gitbox.net , nous pouvons utiliser le code suivant pour l'implémenter:

 <?php
$domain = "gitbox.net"; // nom de domaine

// utiliser gethostbynamel Faire tout IPv4 adresse
$ipv4Addresses = gethostbynamel($domain);

// 判断是否成功获取到adresse
if ($ipv4Addresses !== false) {
    echo "nom de domaine {$domain} de IPv4 adresse有:\n";
    foreach ($ipv4Addresses as $address) {
        echo $address . "\n";
    }
} else {
    echo "无法解析nom de domaine {$domain} de IPv4 adresse。\n";
}
?>

Exemple de sortie:

 nom de domaine gitbox.net de IPv4 adresse有:
192.168.1.1
192.168.1.2

Pourquoi est-il plus approprié d'utiliser GethostByNamel () que GethostByName () ?

Dans PHP, nous pouvons également utiliser la fonction GethostByName () pour obtenir une seule adresse IPv4. Cependant, si un nom de domaine a plusieurs adresses IPv4 (par exemple, plusieurs enregistrements A sont définis dans la configuration DNS), GethostByname () ne peut en renvoyer qu'un. En revanche, la fonction GethostByNamel () renvoie toutes les adresses IPv4 associées au nom de domaine, il est donc plus adapté aux scénarios où toutes les adresses doivent être obtenues.

Par exemple, le code utilisant GethostByName () est le suivant:

 <?php
$domain = "gitbox.net";
$ipv4Address = gethostbyname($domain);
echo "nom de domaine {$domain} de IPv4 adresse是:{$ipv4Address}\n";
?>

Si le nom de domaine a plusieurs enregistrements A, le code ci-dessus ne renverra qu'une seule des adresses et GethostByNamel () garantit que vous obtenez toutes les adresses IPv4.

Choses à noter

  1. DNS Issue de mise en cache : Résultats de la requête DNS de PHP, donc lors de la demande du même nom de domaine plusieurs fois, les résultats renvoyés peuvent provenir du cache. Vous pouvez vous assurer que les derniers résultats de résolution sont obtenus en redémarrant le service PHP ou en utilisant la politique de rafraîchissement DNS.

  2. Prise en charge IPv6 : GethostByNamel () renvoie uniquement les adresses IPv4. Si vous avez besoin d'obtenir l'adresse IPv6 du nom de domaine, vous pouvez utiliser la fonction getAdDrinfo () ou utiliser GethostByname6 () et d'autres fonctions pour l'implémenter.

  3. Gestion des erreurs : si la fonction GethostByNamel () ne peut pas résoudre le nom de domaine, il reviendra faux . Par conséquent, dans les applications réelles, une gestion des erreurs appropriée est nécessaire pour éviter les erreurs imprévues.

  4. Considérations de performance : les requêtes DNS sont des opérations de réseau et sont relativement lentes. Si vous devez résoudre fréquemment le même nom de domaine, vous pouvez considérer le cache des résultats d'analyse pour éviter les requêtes DNS en double.

en conclusion

GethostByNamel () est une fonction très pratique et pratique qui aide les développeurs à obtenir facilement toutes les adresses IPv4 des noms de domaine. Si vous avez besoin d'obtenir plusieurs adresses IP, l'utilisation de cette fonction sera plus efficace et précise que le GethostByname traditionnel () . En comprenant comment l'utiliser et quoi noter, les développeurs peuvent mieux l'utiliser dans les projets réels pour implémenter des fonctions liées à la résolution de noms de domaine.