Savoir si un fichier distant existe ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Savoir si un fichier distant existe ?

par AB » 27 août 2008, 23:25

Avec fopen on peut faire quelque chose du genre :
<?php 
function url_exists($url)
{
 $handle = @fopen($url, "r");
 if ($handle === false)
  return false;
 fclose($handle);
 return true;
}
?>
Cela dit quelque soit la fonction que l'on utilise il y aura toujours le même pb avec les fichiers distants qui dépend de la configuration safe_mode du serveur (cette option de configuration disparaîtra en php6).

Niveau rapidité, par rapport à file_get_contents(), fopen() doit être plus performant puisqu'il ne retourne qu'une ressource.

par SpintroniK » 27 août 2008, 22:43

Je sais pas si ça marche mais avec un
if(file_size('http://site.com/fichierdistant.ext') > 0)
{

}
ça devrait le faire nan ?

ou strlen(file_get_contents('...fichier...')) pourquoi pas.

par Invité » 27 août 2008, 21:05

Non, file_exists() ne marche que pour les fichiers sur le même serveur. Les miens sont distants.
J'ai essayé aussi ça :
if (@fopen("http://blabla.com/fichier.jpg", "r")) {
echo "Ok";
} else {
echo "Echec";
}
Le blême c'est que ça renvoie TOUJOURS "Ok"...

Merci quand même

A+

par sadeq » 27 août 2008, 20:13

Regarde la fonction file_exists()

Exemple:
if (file_exists("chemin distant + nom fichier"))
{
  // traitement si le fichier existe
}

Savoir si un fichier distant existe ?

par Kalyptus » 27 août 2008, 20:08

Bonsoir,
J'ai fait un petit truc en PHP qui génère une image comme suit, a partir de paramètres passés en GET :

Il prend la texture indiquée et va la chercher dans un répertoire à textures, sur un site qui n'es pas le mien.
Il écrit en TTF avec la police indiquée le message indiqué en surimpression sur l'image chargée, dans la couleur indiquée.

Le but est d'utiliser ces images sur un tchat en 3D à la Second Life, et comme les textures dont je parle sont celles utilisées par les utilisateurs pour leurs objets, mon PHP permet au final de "tagger" des objets, d'écrire directement sur des murs etc.

Le problème, c'est que quand l'image que je charge, la texture, n'existe PAS dans le répertoire à textures, ça entre dans une horrible boucle et tout le monde plante...

DONC : Comment savoir si la texture demandée existe bel et bien dans le répertoire distant ?

Merci d'avance, a+