Tester la validité d'une URL

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par gcvoiron, 8 Mai 2008.

  1. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    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.
     
  2. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    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);
                }
            }
        }
    ?> 
     
  3. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    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 ?
     
  4. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    Oui il faut inverser 8)
     
  5. jfcontart
    jfcontart WRInaute discret
    Inscrit:
    22 Septembre 2007
    Messages:
    162
    J'aime reçus:
    0
Chargement...
Similar Threads - Tester validité Forum Date
tester la validité d'une page Administration d'un site Web 11 Août 2003
Tester une URL avec Javascript Développement d'un site Web ou d'une appli mobile 25 Février 2022
WordPress GT Metrix : comment tester sa vitesse au mieux ? Débuter en référencement 27 Juillet 2021
Nouvel Edge dispo, un browser de moins à tester ! Développement d'un site Web ou d'une appli mobile 16 Janvier 2020
Cobaye pour tester vitesse site Problèmes de référencement spécifiques à vos sites 10 Janvier 2020
Tester les pubs ADS - Ou trouver des coupons ? e-commerce 12 Novembre 2019
Tester si une redirection web a été faite Développement d'un site Web ou d'une appli mobile 8 Juillet 2019
Quel outil fiable pour tester la vitesse du site? Référencement Google 2 Février 2019
WordPress Tester si le post type est dans la taxonomie X Développement d'un site Web ou d'une appli mobile 28 Janvier 2019
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
ça marche pas!?? Personne ne veut tester mon outil! Demandes d'avis et de conseils sur vos sites 27 Octobre 2016
Quel outil pour tester partie technique site web Débuter en référencement 17 Octobre 2016
L'extension Chrome AMP Validator pour tester les pages AMP Développement d'un site Web ou d'une appli mobile 9 Juin 2016
Pouvez-vous tester pour moi et m'aider à progresser ? Débuter en référencement 10 Septembre 2015
Nouveau forum à tester Demandes d'avis et de conseils sur vos sites 21 Avril 2015
Tester un e-marché e-commerce 24 Février 2015
Outils pour tester d'éventuelles failles de sécurité sur notre site? Développement d'un site Web ou d'une appli mobile 20 Janvier 2015
Tester le référencement d'un site d'un institut de beauté Demandes d'avis et de conseils sur vos sites 28 Août 2014
Merci de tester ma protection fail2ban ipv6 ? Administration d'un site Web 17 Août 2014
Carte SIM pour tester site avec smartphone Développement d'un site Web ou d'une appli mobile 21 Juin 2014