2016-04-08 6 views
0

PHP gethostbyname() Rückgabe von Name anstelle von IP, wenn der Name als Variable und nicht als String-Literal übergeben wirdPHP gethostbyname() Rückgabe von Name anstelle von IP, wenn der Name als Variable statt als Zeichenfolgenliteral übergeben wird

Ich habe ähnliche Probleme mit einigen wertvollen Diskussion gesehen, aber nichts, dass dies weiter geht.

Wenn ich eine Variable say $ domain an gethostbyname() übergeben, wobei $ domain der von einer foreach-Schleife erzeugte String-Wert ist, ist der Rückgabewert immer genau das, was ich hineinlege - zum Beispiel wenn $ domain == "google.com" ist der Rückgabewert google.com. Beim Aufruf der gleichen Funktion gethostbyname() mit einem String-Literal bekomme ich die IP-Adresse. gethostbyname ('google.com')

Ist das ein bekannter Fehler? Gibt es eine Problemumgehung? Ich werde für jede Hilfe dankbar sein.

Danke

Dieser Code schlägt fehl - für ein Ergebnis den Wert von $ url Herstellung:

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

      $ips[]=gethostbyname($url); 

    } 

Der zweite Satz von Code gibt die richtige IP-Adresse zweimal (einmal für jeden Wert in $ this-> Domain:

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

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

    } 

LÖSUNG: Es stellte sich heraus, einige einige schlampig Räume in meinem varible verursacht werden, die Trimmung festgelegt wurden unter Verwendung bei der Erstellung von Meine $ this-> domainNames-Array-Werte.

+0

Bitte geben Sie spezifischen Code, wo dieses Problem auftritt. Ich habe es versucht und es gibt mir die IP-Adresse zurück, nicht der Name .. – Laurens

+0

Da wir nicht wissen, was in $ this-> domainNames ist, können wir Ihnen immer noch nicht helfen. Bitte stellen Sie auch einen Dump von $ this-> domainNames bereit, indem Sie eine 'var_dump ($ this-> domainNames);' – Laurens

+0

Laurens $ this-domainName im Moment in ein Array mit zwei Strings "google.com" entfernt wurde - Wenn ich die genauen Werte (Ausschneiden und Einfügen) in die Funktion eintrage, bekomme ich IP-Adressen. Wenn ich die Variablen aus dem Foreachloop trage, bekomme ich die Daten, die ich eingegeben habe (es sei denn, ich gebe einen ungültigen Domainnamen ein) –

Antwort

1

Es wird dies tun, wenn gethostbyname() fehlschlägt. Aus dem PHP-Handbuch:

Gibt die IPv4-Adresse oder eine Zeichenfolge mit dem unmodifizierten Hostnamen bei einem Fehler zurück.

Was Sie behaupten, ist nicht wahr. Dies:

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

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

Ausgänge: 74.125.136.139 zweimal

Bitte geben Sie einen Dump von $ Domainnamen, damit wir sehen können, was wirklich geschieht.

Verwandte Themen