Tester la présence d'un fichier distant ou d'une url...

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 12:59

Bonjour et bonne année à tous !!!!

Je me tourne vers vous en ce début d'année pour appeler "AU SECOURS !" car je n'en peux plus de ce problème récurent qui je pense doit bien avoir sa solution.

Je cherche à tester l'existence d'un fichier distant ou bien d'une url (même démarche certainement) et rien ne me fonctionne comme je veux. Utilisation d'is_file, is_dir, is_link, remote_file, ouverture de flux, ca veut pas !!! Que faire ? J'ai beaucoup appris avec ce souci mais là je sèche...

Merci de votre aide.

Korg

ViPHP
AB
ViPHP | 5818 Messages

08 janv. 2007, 13:20

A ma connaissance il n'y a que les images que l'on peut tester sur un serveur distant avec un getimagesize.
Et s'il est possible de faire plus, j'aimerais bien le savoir également...j'ai déjà cherché un peu aussi dans ce sens sans succès.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 janv. 2007, 13:23

:idea: Voir le topic http://www.phpfrance.com/forums/voir_sujet-26022.php cinq lignes plus bas...

Mais en faisant une recherche sur le forum, vous devriez pouvoir en trouver plein d'autres :roll:
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

08 janv. 2007, 15:54

Ben merci Ryle,

Il est vrai qu'à l'époque je n'avais pas cherché sur phpfrance :oops:

Donc si j'ai bien compris, pour ceux (dont je fais partie) qui n'ont pas PHP5 :
<?php 
function url_exists($url)
{
 $handle = @fopen($url, "r");
 if ($handle === false)
  return false;
 fclose($handle);
 return true;
}

if(url_exists('http://phpfrance.com')) echo 'oui <br />'; else echo 'non <br />' ;
?>
mais ça prend du temps quand il y a beaucoup d'url à tester

et pour ceux qui ont PHP5, on peux tenter un file_exists()

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 15:57

Ok mais c'est jamais clairement élucidé...Perso, je dois tester la présence d'un fichier mp3 sur un serveur distant et la fonction file_exists() n'est valable qu'en local :x. Je vais quand même jeter un oeil aux commentaires du topic mais c'est bizarre de ne pas trouver clairement son bonheur...

Korg

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 16:02

Ok AB. J'ai testé ton script, mais chez moi je dis bien chez moi y'a un hic !
Quand j'indique une fausse url, j'ai ma réponse instantannée "non" mais dès que je précise une bonne url ca mouline et je tombe sur la page :

Impossible d'afficher la page
La page que vous recherchez est actuellement indisponible. Le site Web rencontre peut-être des difficultés techniques ou il vous faut peut-être modifier les paramètres de votre navigateur.
... ... ... :evil:

Je vois pas d'où ca peut venir...Quelqu'un a déjà rencontré ce problème ?

Korg

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 16:22

ou bien, depuis un autre serveur, il ne me reconnait pas les bonnes url et me les mets en "non". :oops:

Korg

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 16:32

Désolé pour cette 3ème intervention successive, vraiment désolé mais désespéré. Apparemment le script d'AB marche qu'en local (une fois de plus grrrr). J'obtiens toujours un "non" si je mets par exemple http://www.phpfrance.com/documentation.php mais un "oui" si le lien mentionné fait référence au serveur sur lequel se trouve la page qui éxécute mon script.

Korg

Korg
Invité n'ayant pas de compte PHPfrance

08 janv. 2007, 17:56

Personne pour m'aider ?

svp

Korg

Eléphant du PHP | 164 Messages

08 janv. 2007, 18:07

si tu fait fopen vers autre serveur et que ca marche pas c'est normal tu n'as pas les droit en lecture, tu vien de l'extérieur donc té bloké par le firewall.

Eléphant du PHP | 164 Messages

08 janv. 2007, 18:10

c'est pour cela que ca marche local TOUT SIMPLEMENT.

t'imagine le trou se sécurité sinon? n'importe qui peut faire n'importe quoi sur un serveur distant?.

Si tu est dans une entreprise et que les machines (serveur qui exécute le script et serveur que tu doit checker) appartiennent au même réseau ou pas de la même entreprise demande au service réseau d'ouvrir les vannes ^^ ca réponds à ta question?

ViPHP
AB
ViPHP | 5818 Messages

08 janv. 2007, 18:42

Korg

Désolé, je sais pas quoi répondre.

J'ai testé le script que je t'ai indiqué en le mettant chez Free puis sur chez un hébergeur professionnel puis en testant des fichiers distants mp3, AVI et des url et ça fonctionne sans pb.
Peut-être que tu veux tester trop de fichiers à la fois...ou que les fichiers en question sont dans un répertoire protégé à la lecture.

Eléphant du PHP | 164 Messages

08 janv. 2007, 21:48

en effet c'est protégé en lecture (merci d'avoir lu ce que j'ai écri)

ViPHP
AB
ViPHP | 5818 Messages

08 janv. 2007, 23:30

toto37

J'ai bien lu ce que tu as écris, mais cela prête à confusion. Si les fichiers sont lisibles sans passer par une authentification, il faut bien qu'ils soient lisibles au moins en lecture (cela ne veut pas dire qu'on peut les modifier).
J'ai fais une dizaine d'essai sur des fichiers mp3 qui sont proposés en lecture sur différents sites distants et ça marche sans pb avec le code mentionné plus haut.
Et je suppose que si Korg veut faire des tests sur des fichiers mp3 distants, il ne le fait pas sur des fichiers protégés (ou dont le répertoire est protégé). Sinon ça va retourner false bien entendu.
D'où mon incompréhension... :-k

Korg
Invité n'ayant pas de compte PHPfrance

09 janv. 2007, 11:00

Re et merci ... ... ... pour vos interventions.

Pour clarifier un peu le truc, j'essaie juste d'interroger si un et un seul et unique fichier mp3 est présent ou pas sur un serveur de streaming (protocole mms donc).

J'ai retesté chez moi le script sur des serveurs persos (ex:http://images.google.fr/intl/fr_ALL/ima ... es_res.gif) et là, ca semble fonctionner correctement comme annoncé par AB sauf pour mon test vers le serveur de stream alors que le fichier est bel et bien présent. D'où cela peut venir alors ? Paramétrages serveur certainement mais quoi ? Mon firewall ?

Korg