OVH Cloud OVH Cloud

affichage

6 réponses
Avatar
Shewy80
Bonjour

J'ai effectué un p'tit script qui permets de lister les images d'un
repertoire afn de les afficher.
Mais celui-ci ne fonctionne que si la page PHP est mise dans le rep courant.
Si je pointe vers un autre rep, ça bug.
Tous les fichiers ne s'affichent pas, ou les images ne snt pas reconnues etc
..

Je ne comprend pas. Je voudrai en faire une fonction par la suite afin de
l'appeler de n'importe où en lui passant en parametre le chemin du rep à
scaner.

pouvez vous m'aider et me dire pkoi mon script ne fonctionne plus des que
l'on pointe vers un autre repertoire que celui courant

fonction --------------------------------------

$rep = "."; //Là ça marche nikel car dans ce cas le fichier PHP est dans le
repertoire à scaner
$rep = "images"; // marche plus $rep = "/images"; marche pas mieux

if (is_dir($rep))
{
if ($pt = opendir($rep))
{
// tant qu'il y a des fichiers
while($fichier = readdir($pt))
{
if ($fichier != "." && $fichier != "..")
{
if ((substr($fichier, -4, 1))==".")
{
$ext = substr($fichier, -3);
if (($ext=="jpg") || ($ext=="JPG"))
{
echo "[ $fichier ] ";
echo " (".filesize($fichier).".oct-".
ceil(filesize($fichier)/1024).".ko) <br>";
echo "<img align='center' width='400' src=$fichier><br></a><br>";
}
}
}
}
}
}

6 réponses

Avatar
Sebastian 'CrashandDie' Lauwers
Shewy80 wrote:
Bonjour


Bonsoir,

[...]

$rep = "."; //Là ça marche nikel car dans ce cas le fichier PHP est dans le
repertoire à scaner
$rep = "images"; // marche plus $rep = "/images"; marche pas mieux


C'est assé normal, il me semble que vous devez fournir l'arborescence
complète. "/images" renverra systématiquement une erreur puisque, dans
un système *nix, vous essayerez d'ouvrir le dossier à la racine du
disque, racine à laquelle vous n'avez sans doute pas accès.

Essayez de donner un chemin complet (e.g. sous Win: "c:mon
répertoiremon sous répertoire", ou sous *nix:
"/home/user/public_html/mon sous dossier/"

Si vous avez une erreur un peu plus concrète, serait-il possible de la
soumettre?

Amicalement,
S.

Avatar
Will
Le 05/01/2005 08:43 PM (à peu de choses près), Shewy80 a intelligemment
dit...
J'ai effectué un p'tit script qui permets de lister les images d'un
repertoire afn de les afficher.
Mais celui-ci ne fonctionne que si la page PHP est mise dans le rep courant.
Si je pointe vers un autre rep, ça bug.
Tous les fichiers ne s'affichent pas, ou les images ne snt pas reconnues etc
..


est ce que le script php "voit" les images ? (a priori oui) -> est ce
que dans ton source html les liens sont corrects ?

est ce que apache (ou du moins, ton serveur web, j'imagine que tu parles
d'un truc sur ta machine) te laisse accéder à ces images ? (a priori
non) -> est ce que t'arrives à voir les images directement dans un
navigateur en tapant leur url (commençant par http://localhost/machin,
et surtout pas file://machin) ?
si c'est bien ça, il faut que tu configures ton serveur web pour qu'il
laisse aparaitre les images de certains dossiers. je te déconseille de
laisser un accès en lecture depuis le net sur tout ton ordi, c'est assez
peu "secure".

--
Will

Avatar
P. Renaud
Shewy80 wrote:
Bonjour

$rep = "."; //Là ça marche nikel car dans ce cas le fichier PHP est dans le
repertoire à scaner
$rep = "images"; // marche plus $rep = "/images"; marche pas mieux


Salut,

essaie de mettre le chemin dans $rep plutôt que le simple nom du
répertoire, ça devrait marcher.

Patrick.

Avatar
CrazyCat
Shewy80 wrote:
$rep = "."; //Là ça marche nikel car dans ce cas le fichier PHP est dans le
repertoire à scaner
$rep = "images"; // marche plus $rep = "/images"; marche pas mieux


Une règle essentielle, et qui n'est pas propre à PHP, est de donner un
vrai chemin, en utilisant les liens relatifs normalisés.

Pour agir dans le répertoire courant, il vaut mieux utiliser "./" et un
sous répertoire "./images/"

En fonction de la configuration des serveurs, des liens sans préfixages
peuvent entrainer des fonctionnement divers et n'assurent pas la
portabilité du code.

--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Guillaume Bouchard
Shewy80 wrote:
Bonjour


Bonjour.

J'ai effectué un p'tit script qui permets de lister les images d'un
repertoire afn de les afficher.


Classique.

Mais celui-ci ne fonctionne que si la page PHP est mise dans le rep courant.


Classique aussi comme bug.

$rep = "."; //Là ça marche nikel car dans ce cas le fichier PHP est dans le
repertoire à scaner
$rep = "images"; // marche plus $rep = "/images"; marche pas mieux


Pour /images, lit l'autre reponse de Sebastion.
Maitenant je te conseille d'adopter un fonctionement plus logique, à
savoir mettre un/ à la fin du nom de ton repertoire.


if ((substr($fichier, -4, 1))==".")
{


Tu veux vérifier que ton fichier à un point ?
Regarde la doc à propos de pathinfo
http://fr.php.net/manual/fr/function.pathinfo.php

$ext = substr($fichier, -3);
if (($ext=="jpg") || ($ext=="JPG"))


et pourquoi pas strtolower($ext) = 'jpg' ?
D'un autre coté, je te conseile d'utiliser getimagesize
http://fr.php.net/manual/fr/getimagesize
Pour savoir si ton fichier est bien un jpeg, c'est plus sûre. Cela
depant de ton besoin.

{
echo "[ $fichier ] ";


Affichera le nom du fichier.

echo " (".filesize($fichier).".oct-".
ceil(filesize($fichier)/1024).".ko) <br>";


Alors ici, un conseil :

<?php
error_reporting(E_ALL);
?>

T'aurait prevenu que le fichier n'existe pas. En effet tu esseyes de
lires les informations sur $fichier alors que ce que tu veux c'est
$rep.$fichier. Non ?

echo "<img align='center' width='400' src=$fichier><br></a><br>";


echo '<img src="'.$fichier.'" alt="description"';
// echo ' /' // A voir en fonction du xhtml ou html.
echo '>'

1) Il faut toujours mettre des quotes autour de tes attributs en html.
2) Align ne doit plus exister
3) width n'a que peu d'interet car il est préferable que ton image soit
déjà à la bonne taille.
4) L'attribut alt est OBLIGATOIRE.

J'ai résolu le problème ?

--
Guillaume.
"C'est faux ! Donc c'est juste !"

Avatar
Olivier Miakinen

[ d'excellents conseils ]


... auxquels je n'ai rien à redire.


echo "<img align='center' width='400' src=$fichier><br></a><br>";


echo '<img src="'.$fichier.'" alt="description"';
// echo ' /' // A voir en fonction du xhtml ou html.
echo '>'


echo "<img width='400' alt='description' src='$fichier'>";


1) Il faut toujours mettre des quotes autour de tes attributs en html.


Oui, mais les simples quotes suffisent, et permettent de garder les
doubles pour la chaîne PHP ce qui en simplifie l'écriture.

2) Align ne doit plus exister


En effet. À reporter dans le fichier CSS.

3) width n'a que peu d'interet car il est préferable que ton image soit
déjà à la bonne taille.


Ça ne fait pas de mal de dire au navigateur quelle taille il doit
réserver, avant même de lire l'image. Ça évite de devoir tout
réorganiser après coup. Mais c'est vrai que si la taille est fixe
elle peut être dans le fichier CSS aussi.

4) L'attribut alt est OBLIGATOIRE.


Oui.

Quant au / optionnel, vu que Shewy80 n'en a pas mis dans ses balises
<img> ni <br>, on peut supposer qu'il a eu la sagesse de rester en HTML
(voir les empoignades sur fciw.auteurs à propos de HTML vs XHTML).

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.