7
votes

Comment vérifier si une page Web existe. jquery et / ou php

Je veux être capable de valider un formulaire pour vérifier si un site Web / Web existe. S'il renvoie une erreur 404, cela ne devrait certainement pas valider. S'il y a une redirection ... je suis ouvert aux suggestions, parfois redirige, allez à une page d'erreur ou à une page d'accueil, parfois ils vont à la page que vous recherchiez, donc je ne sais pas. Peut-être pour une redirection peut-être peut-être un avis spécial suggérant l'adresse de destination à l'utilisateur.

La meilleure chose que j'ai trouvée jusqu'à présent était comme ceci: xxx

qui a Aucun problème avec 404 et 200 ans, mais si vous faites quelque chose comme 'http: // xyz' pour l'URL qui se bloque. Aussi 302 et autres déclenchent également le gestionnaire d'erreur.

Ceci est une question assez générique que je voudrais un exemple de code de travail complet si quelqu'un peut en faire un. Cela pourrait être pratique pour beaucoup de personnes à utiliser.


5 commentaires

J'aimerais aussi savoir cela aussi.


J'existe, vous voulez dire, ou juste le domaine.


Pourriez-vous redéfinir l'interaction afin que l'URL puisse être vérifiée des servvers sans avoir à attendre l'utilisateur?


Notez que vous pouvez également risquer d'obtenir 405 méthode non autorisée (vous pouvez également lire: non disponible / implémenté) Pour une tête, tandis qu'elles reviennent parfaitement correctement a 200. Vous voudrez peut-être envisager de tester les tester.


@Webarto L'idée est de vérifier s'il y a une page légitime là-bas, donc le formulaire ne sauf "liens brisés". @SargeatM php est bien si c'est le seul moyen / meilleur, je peux toujours utiliser JQuery pour interroger le code PHP.


4 Réponses :


1
votes

Vous devez d'abord vérifier que la page existe via DNS. C'est pourquoi vous dites que cela "est juste suspendu" - il attend que la requête DNS soit tirée. Ce n'est pas effectivement accroché.

Après avoir vérifié DNS, vérifiez que vous pouvez vous connecter au serveur. Ceci est un autre délai long si vous n'êtes pas prudent.

Enfin, effectuez la tête HTTP et vérifiez le code d'état. Il y a beaucoup, beaucoup, beaucoup de cas spéciaux que vous devez prendre en compte ici: Que signifie une "erreur de serveur interne temporaire" pour la page existant? Qu'en est-il de "déplacé définitivement"? Recherchez les codes d'état HTTP.


2 commentaires

Alors, comment pourrais-je faire le chèque 1 et 2 avec Ajax?


@Moss: Je le ferais dans PHP, où c'est bien et facile. Le filetage JavaScript et la réactivité de l'UI sont un problème.



0
votes

Peut-être que vous pouvez combiner le checker de domaine et JQuery, le checker de domaine (PHP) peut répondre à 1 ou 0 pour les domaines inexistants.

par exemple. http://webarto.com/snajper.php?domena=stackoverflow.com, retournera 1, vous pouvez utiliser une fonction de flou d'entrée pour vérifier instantanément.


0 commentaires

4
votes

On dirait que vous ne vous souciez pas du contenu de la page Web, vous voulez juste voir s'il existe. Voici comment je le ferais dans PHP - je peux arrêter PHP de prendre de la mémoire avec le contenu de la page.

return ($includeContents) ? 
               @file_get_contents($url) :  
               (@file_get_contents($url, null, null, 0, 0) !== false)
;


2 commentaires

C'est brillamment simple et ça marche. Peut-être trop simple car il n'ya aucun moyen de gérer les différents codes si désiré. Mais fonctionne probablement pour mes besoins actuels.


Votre commentaire est très apprécié. :-) Si vous souhaitez passer à la mise sous tension des codes HTTP, vous devez donc utiliser un mécanisme comme curl ou sockets. Les prises sont agréables parce qu'elles ne traînent pas dans une autre dépendance, et se current et soyez une douleur à configurer, mais vous n'obtenez pas de support https natif avec des sockets. La méthode ci-dessus prend en charge HTTPS et de nombreux autres protocoles de la boîte ( US2.PHP.NET /manual/fr/wrappers.php ). Acclamations.



1
votes

Je viens d'écrire une version plus simple à l'aide de PHP: xxx

évidemment $ URL est l'URL de test, retourne true (1) ou false (0) en fonction de l'existence de l'URL.


0 commentaires