tester la validité de liens - PHP - Programmation
Marsh Posté le 22-07-2005 à 11:14:08
avec google je trouve ceci
Citation :
|
Marsh Posté le 22-07-2005 à 11:18:58
Question deja posée, reponse deja donnée , methode proposée par akio tres approximative et pas forcemment juste
Marsh Posté le 25-07-2005 à 14:17:30
Le code que tu m'a passé ne fonctionne pas avec moi. Voila ce que je fais :
$adresse = "http://www.google.fr";
$file = fopen($adresse,'r');
if ($file) { echo "OK"; }
else { echo "Lien Mort!"; }
et voici ce que ca me répond :
Warning: php_hostconnect: connect failed
Warning: fopen("http://www.google.fr", "r" ) - Bad file descriptor
Vous savez de quoi ca peut venir? Ou alors, est-ce que vous connaissez une autre solution pour tester si un lien est valide ou non??
Marsh Posté le 25-07-2005 à 16:29:38
Je crois que c'est Jagstang qui avait ecrit un script assez complet sur la question ... parceque ton script (meme debuggé) ne verra pas la difference entre une bonne page et une erreur 404
Marsh Posté le 25-07-2005 à 19:07:25
Sur le forum
Marsh Posté le 25-07-2005 à 19:14:11
Je viens de parcourir le forum php mais j'ai rien vu qui pouvait ressembler a ca... (dans rechercher j'ai mis comme mot de recherche liens, avec les deux cents derniers messages mais rien vu... )
Marsh Posté le 25-07-2005 à 19:17:46
Module HTTP-Request de Pear
Suffit de récupérer le code de réponse, et en fonction du code de réponse d'agir en concéquence.
Les codes de réponse sont des nombres à 3 chiffres divisés en classes (le chiffre des centaines).
On trouve 5 classes de réponses dans HTTP1.1, dont une très rare (1) et une trop rare (3):
Classe 1 - Informations
Forme 1xy
Ne doit jamais être envoyé à un client HTTP1.0
Classe 2 - Réussite
Forme 2xy
Indique que la requête a été reçue, comprise et acceptée
Classe 3 - Redirections
Forme 3xy
Indique qu'une redirection doit être effectuée pour remplir la requête, le client peut effectuer cette redirection sans en informer l'utilisateur.
Classe 4 - Erreurs client
Forme 4xy
Réponse à des erreurs du client, la pluspart du temps la demande d'une ressource n'existant pas ou plus.
Classe 5 - Erreurs serveur
Forme 5xy
Une erreur est arrivée côté serveur le rendant incapable de répondre à la requête et celui-ci le sait.
Marsh Posté le 25-07-2005 à 21:00:30
Merci Masklinn avec le package Module HTTP-Request de Pear je devrais pouvoir arriver à faire à peu près ce que je veux faire!
Je vais regarder ca de plus près demain au boulot!
Merci à toi!
Marsh Posté le 26-07-2005 à 09:12:17
Bon j'ai encore un problème désolé d'insister avec ca....
Voila, j'ai mis tout ce qu'il fallait et j'arrive à utiliser la classe de Pear. Mais voila, peu importe quelle adresse je met, ca ne me renvoie jamais rien...
Est-ce que vous pensez que ca pourrait venir du fait que je suis connecté sur Internet derrière un proxy???
Merci de me répondre svp... ca m'évitera d'y passé plusieurs jours si ca vient de ca...
Merci!
Marsh Posté le 26-07-2005 à 10:19:04
Ca se peut ... faudrait voir / modifier les classes de pear en consequence ... *Hihi voila pourquoi j'utilise pas pear *
Marsh Posté le 26-07-2005 à 10:24:39
mick8569 a écrit : Bon j'ai encore un problème désolé d'insister avec ca.... |
ben tu l'as la réponse.
PHP ne sait peut pas accéder au net du fait que tu passes par un proxy.
vire moi ce proxy a la con et trouve une meilleure facon d'acceder au net
Marsh Posté le 26-07-2005 à 10:35:10
et tu utilises quoi alors essox_ch pour faire ca (si tu as deja essayé)??
Marsh Posté le 27-07-2005 à 10:23:59
Excusez moi de redemander.. lol
Est-ce que vous pensez qu'il y a un moyen de donner les paramètres du proxy à php pour que je puisse récupérer les codes retours des pages??
J'ai vu aussi qu'il y avait dans la classe de Pear une méthode qui s'appelait setProxy mais j'ai pas très bien compris ce qu'elle faisait, voici ce que dit la doc :
In this example it is assumed that one wants to use the machine with the hostname proxy.example.com, where a proxy server is listening on port 8080, to proxy the outgoing connection to example.com.
The second parameter of setProxy() is optional and defaults to 8080.
Code :
|
Est-ce que vous pensez que cette fonction résoudrait mes problèmes?? J'ai déjà essayé de l'utiliser mais sans succès, mais bon peut etre que je me suis trompé dans les paramètres.
Voila, merci!
Marsh Posté le 27-07-2005 à 10:31:30
Pour te repondre, moi quand je dois faire ce genre de truc je passe par cURL ou meme par des sockets..
Marsh Posté le 27-07-2005 à 10:39:17
Si ca marche comme solution ca m'intéresse, tu peux m'en dire un peu plus sur cURL parce que je ne connais pas...
Les sockets j'ai deja essayé, j'avais essayé de faire un ping en php de cette facon :
Code :
|
Mais ca aussi ca marchait pas, surement parce que je suis connecté derrière un proxy...
Marsh Posté le 27-07-2005 à 10:52:57
Je viens de regarder un peu cURL mais j'ai très bien compris à quoi ca servait exactement, est-ce que je peux savoir si une adresse existe avec cette librairie??
Marsh Posté le 27-07-2005 à 10:55:35
www.php.net et recherche curl ... J'admet que la doc que j'ai trouvé la dessus n'est pas forcemment ce qu'il y a de plus limpide D'ailleurs j'ai encore aujourduit quelques problemes des fois
Marsh Posté le 22-07-2005 à 10:40:52
Salut à tous!
Est-ce qu'il est possible en php de tester la validité d'un lien (si le lien est mort ou pas)?
Si oui, est-ce que vous avez une idée de la marche à suivre?
J'ai regardé un peu sur le net mais j'ai pas trouvé grand chose, à vrai dire même rien de très interessant à ce sujet...
Voila si quelqu'un peut m'apporter une réponse!