2009-10-02 11 views
1

Je souhaite créer une page Web dans laquelle j'ajouterai des liens intranet. Je voulais juste savoir comment vérifier si le lien que j'ai ajouté, à un moment donné fonctionne ou non. Je veux marquer le lien en ROUGE s'il ne fonctionne pas, sinon il devrait être vert.Comment vérifier si un lien est actif ou non?

Répondre

3

Si vous voulez un contrôle programmatique léger, vous pouvez faire une requête HTTP HEAD et vérifier un code de réponse supérieur ou égal à 200 et inférieur à 400.

-2

quelque chose Ping de l'autre côté du lien. Alors que vous pourriez probablement trouver des moyens de vérifier l'état de l'interface ou des tables de routage ou d'autres choses ... ce que vous voulez vraiment savoir, c'est si le trafic circule vers et depuis cette destination.

On peut utiliser unix ping avec l'argument -c d'envoyer un certain nombre de paquets, et -w pour indiquer le temps d'attente en secondes. Ensuite, vérifiez le statut de sortie:

ping -c 3 -w 5 remote-host 

ping quittera avec un code de sortie différent de zéro si les paquets sont supprimés.

+0

réponse @Stef ping n'indique pas si un serveur web est courir encore moins si le document lié existe sur elle. ping seulement prouve qu'une machine est joignable sur un réseau. – Asaph

+0

Ah, je pensais par «lien» que vous vouliez dire lien réseau. Ce n'était pas clair pour moi qu'il s'agissait d'un lien vers une page Web. – Stef

0

Si vous voulez vérifier côté client ...

<style type="text/css"> 
.good { 
    color:green; 
} 

.bad { 
    color:red; 
} 
</style> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("a.checkLinks").each(checkme); 
    }) 

    // load page from URL with ajax 
    function checkme(i, item) { 
     $.ajax({ 
      type: "GET", 
      url: item.href, 
      success: function(data, textStatus) { 
       $(item).addClass("good"); 
      }, 
      error: function(request) { 
       $(item).addClass("bad"); 
      } 
      }); 
    } 
</script> 

<a class="checkLinks" href="good.html">Good</a><br/> 
<a class="checkLinks" href="bad.html">Bad</a> 
+0

Cela ne fonctionnera pas réellement en raison des restrictions inter-domaines –

+0

bon point. corriger pour assumer le même domaine. –

0

Si vous voulez vérifier côté sever (exemple php):

<?php 

function isup($url) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    if(curl_exec($ch)) { 
     $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     return ($httpcode < 400); 
    } 

    return false; 
} 

$url = "http://example.com/404"; 

printf('<a href="%s" class="%s">Link</a>', $url, isup($url) ? 'good' : 'bad');