2016-04-08 3 views
0

PHP gethostbyname() retournant Nom au lieu de IP lorsque le nom est transmis en tant que variable plutôt qu'une chaîne littéralePHP gethostbyname() retournant Nom au lieu de IP lorsque le nom est passé en variable plutôt qu'en chaîne

J'ai vu des problèmes similaires avec une discussion valable, mais rien de tout cela. Si je transmets un domaine $ say variable à gethostbyname() où $ domain est la valeur de chaîne créée par une boucle foreach, la valeur de retour est toujours exactement ce que je mets dedans - par exemple si $ domain == "google.com" la valeur de retour est google.com. Appelant la même fonction gethostbyname() avec une chaîne littérale, j'obtiens l'adresse IP. gethostbyname ('google.com')

Est-ce un bug connu? Y at-il un travail autour? Je serai reconnaissant pour toute aide.

Merci

Ce code ne - produisant la valeur de $ url pour un résultat:

foreach ($this->domainNames as $url){ 

      $ips[]=gethostbyname($url); 

    } 

Le deuxième ensemble de code donne l'adresse IP correcte deux fois (une fois pour chaque valeur de $ this->: DomainNames

foreach ($this->domainNames as $url){ 

      $ips[]=gethostbyname('google.com'); 

    } 

SOLUTION: Ce avéré être causé quelques quelques espaces bâclée dans mon varible qui ont été fixés à l'aide de garniture lors de la création mes valeurs de tableau $ this-> domainNames.

+0

Veuillez publier le code spécifique où ce problème se produit. Je l'ai essayé et il me donne l'adresse IP, pas le nom .. – Laurens

+0

Comme nous ne savons pas ce qui est dans $ this-> domainNames nous ne pouvons toujours pas vous aider. Veuillez également fournir un vidage de $ this-> domainNames en faisant un 'var_dump ($ this-> domainNames);' – Laurens

+0

Laurens $ this-domainName a été supprimé pour le moment dans un tableau contenant deux chaînes à la fois 'google.com' - quand j'entre les valeurs exactes (couper et coller) dans la fonction j'obtiens des adresses IP, quand j'entre les vars du foreachloop j'obtiens les données que je mets dedans (à moins que je mette dans un nom de domaine invalide alors j'obtiens une erreur –

Répondre

1

Il le fera lorsque gethostbyname() échoue. Extrait du manuel PHP:

Renvoie l'adresse IPv4 ou une chaîne contenant le nom d'hôte non modifié en cas d'échec.

Ce que vous dites n'est pas vrai. Ce:

<?php 
$domainNames = array("google.com", "google.com"); 

foreach ($domainNames as $url){ 
    echo gethostbyname($url); 
} 

Sorties: 74.125.136.139 deux fois

S'il vous plaît fournir une décharge de DomainNames $, afin que nous puissions voir ce qui se passe réellement.