Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Tester la validité d'une URL

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
gcvoiron
WRInaute impliqué
WRInaute impliqué

Inscrit le: 19 Oct 2005
Messages: 491

URL permanente de ce messagePosté le : Jeu Mai 08, 2008 17:47    Sujet du message: Tester la validité d'une URL

Bonjour,

Pour tester si l'adresse d'un site marche, j'utilise la fonction ci-dessous :
Code:
   $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.
 
gcvoiron Visiter le site web du posteur
KOogar
WRInaute accro
WRInaute accro

Inscrit le: 16 Nov 2004
Messages: 2991
Localisation: Bangalore +4h30

URL permanente de ce messagePosté le : Ven Mai 09, 2008 7:48    Sujet du message: Tester la validité d'une URL

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:
<?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);
            }
        }
    }
?>
 
KOogar Visiter le site web du posteur
gcvoiron
WRInaute impliqué
WRInaute impliqué

Inscrit le: 19 Oct 2005
Messages: 491

URL permanente de ce messagePosté le : Ven Mai 09, 2008 16:16    Sujet du message: Tester la validité d'une URL

Bonjour,

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

Ne faut-il pas faire le fclose avant le return ?
 
gcvoiron Visiter le site web du posteur
KOogar
WRInaute accro
WRInaute accro

Inscrit le: 16 Nov 2004
Messages: 2991
Localisation: Bangalore +4h30

URL permanente de ce messagePosté le : Ven Mai 09, 2008 16:29    Sujet du message: Tester la validité d'une URL

Oui il faut inverser Cool
 
KOogar Visiter le site web du posteur
jfcontart
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 22 Sep 2007
Messages: 177

URL permanente de ce messagePosté le : Ven Mai 09, 2008 16:46    Sujet du message: Tester la validité d'une URL

pourquoi pas utiliser get_headers()
http://fr.php.net/manual/fr/function.get-headers.php
ou mieux http_head()
http://www.php.net/manual/fr/function.http-head.php
voir utilisation
http://www.developpez.net/forums/archive/index.php/t-311558.html
 
jfcontart Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort