Vérifier si un lien est mort [Résolu]

zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 22 nov. 2008 à 18:26 - Dernière réponse : zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention
- 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...
Afficher la suite 

Votre réponse

5 réponses

gibozsec 318 Messages postés mardi 27 mai 2003Date d'inscription 11 mars 2010 Dernière intervention - 23 nov. 2008 à 13:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de gibozsec
gibozsec 318 Messages postés mardi 27 mai 2003Date d'inscription 11 mars 2010 Dernière intervention - 23 nov. 2008 à 00:26
0
Utile
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
Commenter la réponse de gibozsec
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 23 nov. 2008 à 01:45
0
Utile
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...
Commenter la réponse de zut69
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 23 nov. 2008 à 10:52
0
Utile
salut

tu peux utiliser curl pour tester si t'as une erreur 404 ou autre chose.
Commenter la réponse de coucou747
zut69 356 Messages postés lundi 26 juillet 2004Date d'inscription 26 juin 2012 Dernière intervention - 23 nov. 2008 à 14:52
0
Utile
Salut, ok merci beaucoup tout marche, tout est ok :-)
Commenter la réponse de zut69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.