2010-02-15 5 views
0

Quand j'appelle les suivantes:boucle PHP et file_get_contents retourne le site principal situé sur le serveur quand j'entrer une URL valide sans résolution DNS

file_get_contents('http://whgfdw.ca'); 

ou

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://whgfdw.ca'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

La valeur de retour est le HTML de la page d'accueil du site principal situé sur le serveur web local (dédié). Je serais reconnaissant si quelqu'un pouvait m'aider à comprendre cela? Peut-être y a-t-il quelque chose que je néglige.

Je ne peux pas utiliser la validation d'URL simple car http://whgfdw.ca est une URL parfaitement bien; il n'a tout simplement pas d'entrée DNS.

Ma fonctionnalité idéale est d'être en mesure d'attraper un échec de recherche DNS ou un 404 ou un cas de non-contenu, puis agir sur elle. Merci!

+0

Quelle est la question? –

+0

Cela pue d'un DNS cassé. –

+0

La question est comment puis-je attraper/empêcher une URL comme 'http: // whgfdw.ca' de résoudre le localhost. Je suis d'accord avec l'évaluation de Pekka, et je cherche des moyens d'utiliser une recherche DNS directe pour attraper des instances de ceci. Je joue avec 'parse_url' et' dns_get_record' pour le moment. –

Répondre

2

Si vous avez une réponse valide, cette entrée DNS existe quelque part. Il peut se trouver sur un serveur DNS interne, dans le fichier/etc/hosts du serveur local ou ailleurs dans la pile, mais la ligne du bas est résolue d'une manière ou d'une autre. Donc la question devient où l'entrée est résolue à entrer. Il est possible qu'une application soit configurée pour résoudre toutes les recherches sur le serveur local (de la même manière que openDNS et de nombreux ISP résolvent un nom DNS non résolu sur leur page de recherche). Étant donné qu'il est en quelque sorte en train d'être résolu, il n'est vraiment pas un moyen de le valider à moins de comparer le contenu de la réponse à un contenu que vous attendez. Attraper un 404 est assez facile, vous pouvez également mettre en place une recherche inversée en php pour attraper les noms non résolus, je crois. Mais vous devez d'abord aborder cette résolution.