Tester la validité d'une URL

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Tester la validité d'une URL

Message le Jeu Mai 08, 2008 17:47

Bonjour,

Pour tester si l'adresse d'un site marche, j'utilise la fonction ci-dessous :
Code: Tout sélectionner
   $fp = @fopen($url, "r");
   if (!$fp)
   {
      return FALSE;
   }
   else
   {
        fclose($fp);
      return TRUE;
   }

Je pense qu'il y a plus simple et moins lourd, car selon l'état du serveur, le script est plus ou moins lent à tester.

Qu'en pensez-vous ?

Merci d'avance, Guillaume.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Mai 09, 2008 7:48

Ta fonction est trés lente, il faut passer par une socket et lire seulement l'entête qui se trouve avant le code html. Si le code http renvoyé est 200, alors la page est disponible.

Code: Tout sélectionner
<?php
    function url_validate( $link )
    {       
        $url_parts = @parse_url( $link );

        if ( empty( $url_parts["host"] ) ) return( false );

        if ( !empty( $url_parts["path"] ) )
        {
            $documentpath = $url_parts["path"];
        }
        else
        {
            $documentpath = "/";
        }

        if ( !empty( $url_parts["query"] ) )
        {
            $documentpath .= "?" . $url_parts["query"];
        }

        $host = $url_parts["host"];
        $port = $url_parts["port"];
        // Now (HTTP-)GET $documentpath at $host";

        if (empty( $port ) ) $port = "80";
        $socket = @fsockopen( $host, $port, $errno, $errstr, 30 );
        if (!$socket)
        {
            return(false);
        }
        else
        {
            fwrite ($socket, "HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
            $http_response = fgets( $socket, 22 );
           
            if ( ereg("200 OK", $http_response, $regs ) )
            {
                return(true);
                fclose( $socket );
            } else
            {
//                echo "HTTP-Response: $http_response<br>";
                return(false);
            }
        }
    }
?>

gcvoiron
WRInaute impliqué
WRInaute impliqué
 
Messages: 494
Inscription: Mer Oct 19, 2005 15:23

Message le Ven Mai 09, 2008 16:16

Bonjour,

Merci pour cette réponse KOogar.
Par contre :
Code: Tout sélectionner
            if ( ereg("200 OK", $http_response, $regs ) )
            {
                return(true);
                fclose( $socket );
            }

Ne faut-il pas faire le fclose avant le return ?


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Mai 09, 2008 16:29

Oui il faut inverser 8)

jfcontart
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 178
Inscription: Sam Sep 22, 2007 18:29

Message le Ven Mai 09, 2008 16:46



Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google SearchMash

  • Test de redirection
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Déterminer l'âge d'un site
    Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).
  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités