Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2006, 02h11   #1
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
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
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 04h10   #2
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Salut,
Regarde du côté de file_exists()
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 15h41   #3
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Non ca ne marche pas.

Par exemple si je fait :

Code :
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
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 15h48   #4
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
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.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 15h49   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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é
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2006, 02h16   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
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.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2006, 09h02   #7
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Oki merci a tous, je vais donc me renseigner sur cette fonction.
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 17h50   #8
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
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
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 18h38   #9
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Effectivement file_exists ne fonctionne pas, pourtant fopen marche sans donner un nom de fichier exact :
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"));
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...
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2006, 18h39   #10
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
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);
}
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h24.


 
 
 
 
Partenaires

Hébergement Web