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 :

Fonction qui detecte les liens morts


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut Fonction qui detecte les liens morts
    Salut a tous,

    dans mon code j'ai une liste de lien. Je voudrais faire un test automatique qui me permettent de savoir si l'adresse indiqué n'est pas un lien mort (donc voir si la page existe).

    Comment procéder?

    merci d'avance
    manganimes (en construction) -
    zemanga

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,
    Regarde du côté de file_exists()
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Non ca ne marche pas.

    Par exemple si je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(file_exists('http://www.google.fr'))
    {
    	echo 'oui';
    } 
    else
    {
    	echo 'non';
    }
    Il me dit non!
    manganimes (en construction) -
    zemanga

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut Curl
    Renseigne toi au sujet de CURL. J'ai pris connaissance de cette librairie hier soir seulement en lisant un article dans un magasine Linux acheté la veille. Je pense qu'elle permet de faire beaucoup avec les pages web en fonction des URLs et donc peut-être avec la validité des liens.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    L'extension Curl peut sûrement répondre à votre question : elle est paramètrable à souhaits ou presque (récupération des en-têtes et/ou du contenu de la page). Avec la récupération des en-têtes on peut obtenir le code d'erreur HTTP. Par contre elle demande un peu plus de programmation et est peut être un peu plus lourde.

    Dans le même genre d'idée on a la fonction fsockopen mais peu pratique.


    Julp.

    Edit : grillé

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    La solution file_exists n'est pas très adaptée au problème. file_exists teste l'existence d'un fichier et donc il faut absolution lui donner un fichier en paramètre. Les urls ne contenant pas de fichier spécifique, comme google.fr seront considérés comme inexistant.

    Pour finir je conseil la solution Curl donnée plus haut qui sera beaucoup plus simple qu'autre chose.

  7. #7
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Oki merci a tous, je vais donc me renseigner sur cette fonction.
    manganimes (en construction) -
    zemanga

  8. #8
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    J'ai regardé sur fr.php.net les info sur la librairie curl, mais je n'ai pas réussi à trouver les infos necessaires pour arriver à faire ce que je voulais.
    manganimes (en construction) -
    zemanga

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Effectivement file_exists ne fonctionne pas, pourtant fopen marche sans donner un nom de fichier exact :
    Code : 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
    function ping($url)
    {
      $f = @fopen($url, "r");
      if ($f === FALSE)
      {
        return FALSE;
      }
      else
      {
        fclose($f);
        return TRUE;
      }
    }
     
    var_dump(ping("http://www.google.com/"));
     
    var_dump(ping("http://www.google.com/blabla"));
    J'aurais pensé que file_exists fonctionnait exactement pareil mais apparement non

    Evidement avec curl tu auras probablement plus d'options, comme par exemple la durée de timeout etc...
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  10. #10
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Sinon si curl n'est pas installé y a toujours les sockets... .. .

    @ tchaOo°

    ps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function ping($url)
    {
      $f = @fopen($url, "r");
      @fclose($f);
     
       return is_resource($f);
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2007, 22h49
  2. Réponses: 1
    Dernier message: 31/07/2006, 13h51
  3. Fonction qui supprime les espaces
    Par Faith's Fall dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/02/2006, 10h29
  4. Fonction Recherche(google) et liens morts
    Par cyrille_ dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 06/01/2006, 12h43

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