fichier existant

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 : fichier existant

par Sebe » 26 oct. 2007, 17:42

Nickel chrome \:D/

par Ryle » 26 oct. 2007, 16:39

Tu peux simplifier un peu en réutilisant tes variables dans l'image et en limitant le if en ne traitant que le cas qui t'interesses :
<?php        
      $path = realpath('.') . '/components/com_classement/photos/'; 
      $photo = $runner->nom . $runner->prenom . '.jpg'; 
       
      if (!file_exists($path . $photo)) { // en inversant la condition avec un "!" y a pas besoin de else :)
         $photo = 'anonymus.jpg'; 
      } 
?> 

par Sebe » 26 oct. 2007, 16:16

Essaie de voir si tes fichiers ne sont pas tous dans www:

Code : Tout sélectionner

/home.2/kainbuye/www/components/com_classement/photos/devossebastien.jpg
Yessssssssssssss !

Et oui, c'est tout bon ... un grand merci à vous tous pour ce coup de main !
Voici mon code pour afficher une photo:
<?php 	  
	  $path = realpath('.') . '/components/com_classement/photos/';
	  $photo = $runner->nom . $runner->prenom . '.jpg';
	  
	  if (file_exists($path . $photo)){
	  	// rien à faire !
		} else {
		$photo = 'anonymus.jpg';
		}
	  ?>
	  
	  <img src="<?php echo $url . '/components/com_classement/photos/' . $photo;?>" width="150" title="<?php echo $runner->nom . ' ' . $runner->prenom;?>" border = "1"/>
Hormis mettre l'image dans les balises php ne peut-on faire plus propre ?

Merci

par Tracker » 26 oct. 2007, 15:44

Essaie de voir si tes fichiers ne sont pas tous dans www:

Code : Tout sélectionner

/home.2/kainbuye/www/components/com_classement/photos/devossebastien.jpg

Tracker.

par Sebe » 26 oct. 2007, 15:40

Ben que tu cherches ton image ici:

Code : Tout sélectionner

/home.2/kainbuye/com_classement/photos/devossebastien.jpg
Y est-elle ?
Non ... j'ai quand même modifié un truc:
/home.2/kainbuye/components/com_classement/photos/devossebastien.jpg
mais rien de nouveau !
J'ai même essayé avec un autre fichier plus simple (index.html) mais rien ... je ne comprends pas !

Merci

par Tracker » 26 oct. 2007, 15:14

Rere :lol: ,
Affiche simplement,
echo realpath('.');
Pour savoir où tu es sur le serveur.
Voici le retour:
/home.2/kainbuye/www
Qu'est-ce que je dois en conclure ?

Merci
Ben que tu cherches ton image ici:

Code : Tout sélectionner

/home.2/kainbuye/com_classement/photos/devossebastien.jpg
Y est-elle ?


Tracker.

par Sebe » 26 oct. 2007, 15:11

Rere :lol: ,
Affiche simplement,
echo realpath('.');
Pour savoir où tu es sur le serveur.
Voici le retour:
/home.2/kainbuye/www
Qu'est-ce que je dois en conclure ?

Merci

par Tracker » 26 oct. 2007, 13:47

Re,

Affiche simplement,
echo realpath('.');
Pour savoir où tu es sur le serveur.

Dans la doc (ça confirme ton problème)
realpath() retourne FALSE si une erreur survient, e.g. si le fichier n'existe pas. Sous les systèmes BSD, realpath() n'échouera pas s'il manque que le dernier composant du paramètre path, alors que les autres systèmes retourneront FALSE.

Tracker.

par Sebe » 26 oct. 2007, 13:18

Sebe, pourrais-tu exécuter la code suivant et comparer le résultat au chemin physique de ton fichier sur le serveur ?
echo realpath('../com_classement/photos/devossebastien.jpg');
Il n'y a strictement rien qui s'affiche voir ici

par Tracker » 26 oct. 2007, 12:44

Pour le chemin relatif, je posais la question car le chemin dans le système de fichier n'est pas nécessairement le même que celui de l'url (avec d'éventuel rewrite engine, ou simplement un include qui ne serait pas au même endroit que le script parent).
+1
Sauf que '../' pointe sur le même dossier quelque soit la position du fichier inclus (c'est relatif par rapport au script appelé GET ou POST). Donc resterait plus que la réécriture d'URL ??

Sebe, pourrais-tu exécuter la code suivant et comparer le résultat au chemin physique de ton fichier sur le serveur ?
echo realpath('../com_classement/photos/devossebastien.jpg');

Tracker.

par Ryle » 26 oct. 2007, 12:29

Le "Safe Mode" est le mode de sécurité de PHP pour limiter certaines fonctions et restreindre les accès aux fichiers ou url, initialement pour raison de sécurité : http://us2.php.net/safemode

Pour le chemin relatif, je posais la question car le chemin dans le système de fichier n'est pas nécessairement le même que celui de l'url (avec d'éventuel rewrite engine, ou simplement un include qui ne serait pas au même endroit que le script parent). Donc ce n'est pas parce que l'image s'affiche dans ta page qu'elle est nécessairement au même endroit sur le serveur, d'où ma question :)

par Sebe » 26 oct. 2007, 12:18

Salut,
hmm... le chemin relatif devrait fonctionner... l'url globale ne fonctionnera qu'avec php 5, les protocoles n'étant pas supportés avant ... par contre le pourquoi ça ne fonctionne pas, c'est peut être le safe mode qui est activé ?
Alors là ! ? ! Je ne sais même pas de quoi tu parles ... safe mode ???
dans tous les cas respecte la casse des lettres (majuscules/minuscules) dans les noms des dossiers et dans ceux des fichiers (windows y est insensible, mais c'est pas une raison ;))
J'ai bien respecté la casse depuis le début ... j'ai juste remis en minuscule le nom du fichier et l'appel au cas où !
Le chemin relatif "../components/com_classement/photos/" est-il correct (ce chemin doit être relatif au script qui utilise la fonction, donc attention aux includes)
Oui, il est correcte ... je sais afficher la photo quand je ne teste pas l'existence du fichier !

En tout cas merci pour votre aide

par Ryle » 26 oct. 2007, 10:16

hmm... le chemin relatif devrait fonctionner... l'url globale ne fonctionnera qu'avec php 5, les protocoles n'étant pas supportés avant ... par contre le pourquoi ça ne fonctionne pas, c'est peut être le safe mode qui est activé ?

dans tous les cas respecte la casse des lettres (majuscules/minuscules) dans les noms des dossiers et dans ceux des fichiers (windows y est insensible, mais c'est pas une raison ;))

Le chemin relatif "../components/com_classement/photos/" est-il correct (ce chemin doit être relatif au script qui utilise la fonction, donc attention aux includes)

par Sebe » 26 oct. 2007, 08:59

Je viens d'essayer les minuscules pour le nom du fichier au cas où ... non, ce n'est pas cela non plus !

J'ai tout mis à la queue, juste pour voir, en virant les apostrophe et les remplaçant par des guillemets:
if (file_exists("http://www.kain-buyere.be/components/com_classement/photos/devossebastien.jpg")){
echo 'le fichier existe';
} else {
echo 'le fichier n\'existe pas !';
}
Mais non, c'est pas cela pourtant si vous tapez l'url, on tombe bien sur une photo !

Merci

par Sebe » 26 oct. 2007, 08:56

Salut,

J'ai essayé ceci:
if (file_exists('http://www.kain-buyere.be/components/com_classement/photos/' . 'DEVOS' . 'SEBASTIEN' . '.jpg')){
	echo 'le fichier existe';
	} else {
	echo 'le fichier n\'existe pas !';
	}
et le fichier n'existe toujours pas !

J'espère que c'était bien cela que Tracker me demandait de faire

Merci