IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Readfile et image


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut Readfile et image
    Bonjour tout le monde,

    J'ai une application Web.

    J'ai les repertoires suivants à la racine :

    www (racine Web) où se trouvent mon index.php et les "define" des chemins vers mes sources php (c-a-d vers les repertoires contenus dans application)
    et
    application se trouve un repertoire componsants.

    Dans ce repertoire componsants, se trouvent les différents mini componsants de mon appli (ex : messagerie, gallerie, wall, etc).

    Le problème, c'est avec mon componsant gallerie. Son repertoire se situe donc dans
    application/componsants/gallerie. Dans ce repertoire, il y a un sous dossier photos où sont stockées des photos (uploadées et à afficher).
    Le problème, c'est l'affichage de ces photos sur ma page Web.

    Lorsque j'utilise la balise html , ça ne fonctionne pas. Je pense donc pas par un la fonction .

    J'ai crée un fichier image.php dont voici la source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    header("Content-type: image/jpg");
    $cheminfichier = COMPONSANTS.DS.'gallerie'DS.'photos'.DS.'44.jpg';
    readfile($cheminfichier);
    ?>

    S'il s'agit d'afficher une seule photo sur une page, () ça fonctionne à merveille.

    Par contre, lorsque j'ai plusieurs photos à afficher, c'est là que je suis dans l'impossibilité de le faire.

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while($i>0)
    {
    (<img src="images.php">);
    $i++;
    }
    C'est probablement à cause du header.

    Sachant que mes photos ne doivent pas être dans mon dossier www, Help please !!!!
    C'est tout ce qui me reste pour finir toute mon application.

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    bonjour,
    j'ai pas tout compris; tes photos s'affichent avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="TesConstantesDeChemin/LeNomDeTonImage.Extension" />
    pourquoi aller faire une page Php pour créer l'affichage de ton image si tu ne lui passe pas le nom de l'image en paramètre?.

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut
    Bonjour,

    Citation Envoyé par notar Voir le message
    bonjour,
    j'ai pas tout compris; tes photos s'affichent avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="TesConstantesDeChemin/LeNomDeTonImage.Extension" />
    Non, pas du tout !
    En fait, à partir de l'emplacement où se trouvent mes photos, il n'est possible de n'afficher qu'une photo et en plus seulement avec un readfile().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="TesConstantesDeChemin/LeNomDeTonImage.Extension" />
    ne fonctionne pas du tout vu que le dossier photos n'est pas dans le repertoire www (en gros, seulement mon script php situé en dehors du repertoire www peut lire/afficher ces photos).

    pourquoi aller faire une page Php pour créer l'affichage de ton image si tu ne lui passe pas le nom de l'image en paramètre?.
    Si si, je passe bien le nom de mon image en pramètre que je recupère avec un GET. Mais, là j ne l'ai pas mis. Le code de mon image.php n'est pas du tout complet car, en realité, je passe le nom "hashé" et stocké dans ma bdd en parametre et je fais un readfile() du nom de fichier réel récupéré à partir de ma bdd.

    Tout ce mécanisme, c'est pour éviter uqe n'importe qui voit les photos de tout le monde (bref ! Je m'embrouille dans mes exlications).

    Le plus important : mon dossier photos n'est pas directement accessible par le navigateur car il n'est pas dans www.

    Merci pour vos propositions.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    un simple index.html à la racine du dossier photos ne suffirait pas pour empêcher le listage du dossier?

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 23
    Par défaut
    Citation Envoyé par notar Voir le message
    un simple index.html à la racine du dossier photos ne suffirait pas pour empêcher le listage du dossier?
    Si si, j'y ai pensé ! C'est d'ailleurs ce que je fais actuellement sur un de mes sites.

    Le truc, c'est que mes images sont numérotées de 1.jpg, 2.jpg, 3.jpg, etc....

    Si mon dossier est dans www/photos, il suffirait, malgré un index.html, de faire : http://monsite/photos/29.jpg et là, j'aurai l'affichage de l'image en question. Pour des raisons particulières, je ne veux pas que le nom de mes fichiers images soit le nom "hashé" même si pourtant ça me rendrait bien service puisque ça serait difficile de deviner le nom de la photo.

    D'autre part, pourquoi cette architecture ? Je voudrais vraiment que chaque componsant contenu dans /application/componsants/ (exemple /application/componsants/gallerie ) soit autonome et n'ai aucune lien avec le contenu du dossier www sauf avec index.php (define des chemins).

    Chaque componsant a son Controller, son Model et ses Vues qui s'intègrent au template générale + 1 fichier routeur qui contient en réalité un Switch/case. (Bon, cette partie n'a pas beaucoup d'importance dans ma question, mais c'est juste pour expliquer le pourquoi du comment)


    En fait, la question que j'aurais peut-être du poser est :

    Avec php (et peut-être readfile() ?), est-il possible d'afficher en même temps plusieurs images situées dans un repertoire qui est en dehors du repertoire renseigné dans les directives apache, en l'occurence www ? Les lire, c'est possible mais les afficher ....C'est là que je bloque...

    Le problème avec mon fichier image.php, c'est le header que j'ai.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: image/jpg");
    .
    Si je ne le mets pas, aucune image n'est affichée. Logique !!! Si je le mets, aucun contenu à part la première image lue par readfile() qui apparaît. Logique aussi apparemment !

    J'avoue que ma question est vraiment bizarre, en tout cas vraiment casse-tête ce truc...

    Help please !!!

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Concernant la protection du répertoire photos/, il te suffit d'y placer un fichier .htaccess contenant la ligne :
    Deny from all
    Une fois le fichier en place, le répertoire est accessible uniquement par tes scripts PHP.

    Ce que je ne saisie pas c'est...
    Citation Envoyé par anzize
    est-il possible d'afficher en même temps plusieurs images

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2013, 14h56
  2. [PHP 5.3] Afficher une image avec header(..jpeg) et readfile en php
    Par yuukuari dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2011, 13h56
  3. récupérer une image avec readfile
    Par julien1451 dans le forum Langage
    Réponses: 11
    Dernier message: 27/01/2010, 02h06
  4. Readfile ne renvoie pas l'image
    Par venka dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2009, 15h54
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 01h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo