Vérifier si un lien est mort

Résolu
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 22 nov. 2008 à 18:26
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 23 nov. 2008 à 14:52
Bonsoir,

Sur mon site, j'ai une page avec pleins de liens externes vers mes partenaires. Le souci, c'est qu'il peut arriver qu'un des liens soit mort alors j'aimerai pouvoir vérifier si la cible existe.
J'ai écrit une fonction, mais elle semble ne fonctionner qu'avec des fichiers de code (html, php, asp, ...), alors que mes liens pointent principalement sur des pdfs.

function lien_mort($lien) // retourne false si lien mort
{
    $file = @fopen($lien, 'r');
    if ($file) return false;
    else return true;
}

Est-ce que quelqu'un saurait comment vérifier si un pdf existe? J'ai pensé peut-être au file_exists() ou encore en récupérant les headers du fichier, mais je ne sais pas quelle méthode serait la plus pertinente et laquelle fonctionnerait...

5 réponses

gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
23 nov. 2008 à 13:23
Dans le php.ini tu trouveras allow_url_fopen. C'est un paramètre qui défini si tu peux utiliser les fonctions de manipulation de fichier sur des url.

Visiblement il est désactivé sur ton serveur, il suffit de l'activer pour que ta fonction marche correctement.

Grrrrrrrrrrr
3
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
23 nov. 2008 à 00:26
Bonjour,

la méthode que tu utilise fonctionne, je l'ai testée. Il doit y avaoir un problème à un autre endroit.

Peux tu donner plus de précisions ?

Grrrrrrrrrrr
0
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
23 nov. 2008 à 01:45
Merci pour ta réponse et en effet après plusieurs tests, j'ai remarqué que ce n'était pas les pdf qui posaient problème, mais simplement le fait que je soumette des urls de fichiers distants à ma fonction et c'est ça qu'il aime pas !
Alors comment faire pour que par exemple: lien_mort("http://www.google.fr") me retourne false?

voici les résultats de mes tests:

lien_mort("index.php") -> false
lien_mort("test.pdf") -> false
lien_mort("http://www.monsite.com/test.pdf") -> true
lien_mort("http://www.autre-site.com/test.pdf") -> true
lien_mort("http://www.google.fr") -> true
lien_mort("http://ce-site.n-existe-pas.com/prout/zut.tjz") -> true

Voilà, le résumé de mes tests. En résumé, ce qui est en rouge et ce qui ne retourne pas ce que je voudrais...
Merci de ton aide,

FF

PS: je vois que j'avais fait une erreur dans le commentaire de la fonction que j'ai posté:
function lien_mort($lien) // retourne true si lien mort
Je le signale pour éviter toute confusion...
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 nov. 2008 à 10:52
salut

tu peux utiliser curl pour tester si t'as une erreur 404 ou autre chose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zut69 Messages postés 354 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
23 nov. 2008 à 14:52
Salut, ok merci beaucoup tout marche, tout est ok :-)
0
Rejoignez-nous