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
Version imprimable
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
Salut,
Regarde du côté de file_exists() ;)
Non ca ne marche pas.
Par exemple si je fait :
Il me dit non!Code:
1
2
3
4
5
6
7
8
9 if(file_exists('http://www.google.fr')) { echo 'oui'; } else { echo 'non'; }
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.
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é :(
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.
Oki merci a tous, je vais donc me renseigner sur cette fonction.
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.
Effectivement file_exists ne fonctionne pas, pourtant fopen marche sans donner un nom de fichier exact :
J'aurais pensé que file_exists fonctionnait exactement pareil mais apparement non :roll:Code:
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"));
Evidement avec curl tu auras probablement plus d'options, comme par exemple la durée de timeout etc...
Sinon si curl n'est pas installé y a toujours les sockets... .. .
@ tchaOo°
ps :
Code:
1
2
3
4
5
6
7
8 function ping($url) { $f = @fopen($url, "r"); @fclose($f); return is_resource($f); }