IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tester une liste de site web


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Tester une liste de site web
    Bonjour à tous,

    Je suis nouveau sur le forum, et après de nombreuses recherches je n'est pas trouvé de réponse à mon interrogation.

    Ma question (qui est devenu un problème) est que, on m'a donné comme mission dans l'entreprise dans laquelle je travaille de faire un inventaire des adresses URL de nos clients (1500) pour ensuite pouvoir les tester et vérifier si les liens sont morts.

    Après de nombreuses recherches sur internet je n'est pas trouvé de solution à ce problème. Au départ, on m'avais conseillé d'utiliser la commande wget. Mais je n'ai pas réussi à avoir le résultat escompté.
    Ensuite j'ai essayé avec la fonction php, mais le résultat fut négatif..

    Si quelqu'un aurais la solution à ce problème, je lui serais (très) très reconnaissant.

    D'avance merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    avec cette fonction get-headers.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    function getResponseCode($url){
        if (!($headers = @get_headers($url))) {
            return false; //url invalide
        }
     
        return substr($headers[0], 9, 3); //code réponse 
    }
     
    $url='http://www.domaine.com';
     
    if(getResponseCode($url)!==false)
    echo "url valide";
    else
    echo "url non validde";

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    @armel18, votre code n'est pas complet, il ne teste que si l'URL est inaccessible ou n'est pas correcte. Il faut également tester que le code réponse n'est pas 404 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function is_dead_link($theURL) {
        $headers = get_headers($theURL);
     
        if($headers === FALSE) 
            return FALSE; 
     
        return substr($headers[0], 9, 3) === '404';
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(is_dead_link($url)){
       echo $url . ' est un lien mort';
    }

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette réponse rapide.

    Le code s'exécute mais il y a un problème dans le résultat ; en effet il m'indique que l'url est non valide, alors que l'adresse est bel et bien valide (ex: www.google.fr)

    J'avais trouvé une fonction qui m'offrait également un résultat mais de la même manière celui ci était erroné.

    Le code essayé au préalable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $lien = "http://www.google.fr";
    if(preg_match('#[^http://(?www\.)google\.fr(.*)$]#Usi', $lien)) {
    $source = file_get_contents($lien);
    if(!preg_match('#Erreur#i', $source)) {
     
    } else print 'lien mort/inexistant';
    } else print 'lien incorrect';
    ?>
    Je ne comprend pas cette situation parce que j'ai accès à ces sites via navigateur.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    oui en effet mon teste n'était pas complet.
    le plus important c'est d'obtenir un code d'erreur 404 qui traduit un lien mort.ceci devrait normalement fonctionner:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    /*
    *@return false| Integer(code reponse du serveur)
    */
    function getResponseCode($url){
        if (!($headers = @get_headers($url))) {
            return false; //url invalide
        }
     
        return substr($headers[0], 9, 3); //code réponse 
    }
     
    $url='http://www.google.com';
     var_dump( getResponseCode($url) );
    if(getResponseCode($url) ===false || getResponseCode($url) ==='404')
    echo "url non valide";
    else
    if( getResponseCode($url) !=='404' )
    echo "url valide";

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par armel18 Voir le message
    oui en effet mon teste n'était pas complet.
    le plus important c'est d'obtenir un code d'erreur 404 qui traduit un lien mort.ceci devrait normalement fonctionner:
    C'est dommage de faire 4 requêtes, et donc de multiplier par 4 le temps d’exécution, alors qu'une seule est nécessaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $url='http://www.google.com';
    $response = getResponseCode($url);
    if($response === FALSE || $response === '404')
       echo "url ko";
    else
       echo "url ok";

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par Kersou Voir le message
    Merci pour cette réponse rapide.

    Le code s'exécute mais il y a un problème dans le résultat ; en effet il m'indique que l'url est non valide, alors que l'adresse est bel et bien valide (ex: www.google.fr)
    Si cela vous indique que l'URL n'est pas valide c'est que l'URL n'est pas valide. Le code que j'ai donné est propre, fonctionne parfaitement, et sert juste à savoir si c'est une 404. Je vous recommande de l'utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump(is_dead_link('http://www.google.fr'));// affiche FALSE
    Votre erreur vient plutôt de votre Regex qui fait un preg_match sur le lien, et du file_get_contents, faites un .

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Parfait ça fonctionne merci beaucoup ! Mon chef va être content

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un hébergeur pour une douzaine de sites web !
    Par speedev dans le forum Hébergement
    Réponses: 4
    Dernier message: 20/07/2007, 09h05
  2. Connexion impossible avec une installation en site web
    Par DoRiane dans le forum Accès aux données
    Réponses: 4
    Dernier message: 06/07/2007, 14h27
  3. [PHP-JS] tester une liste en php.
    Par lecail65 dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2006, 13h23
  4. [Sécurité] Masquer une partie de site web avec PHP
    Par Marc365 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo