Afficher une image avec header(..jpeg) et readfile en php

Afficher une image avec header(..jpeg) et readfile en php - PHP - Programmation

Marsh Posté le 23-05-2011 à 16:21:43    

Bonjour,
 
Je voudrais afficher une image seulement à certains utilisateurs.
Lorsqu'un internaute pense être redirigé vers http://www.monsite.com/images/image.jpg, un .htaccess redirige en fait vers un fichier php images.php à la racine de mon site.
 
Dans ce fichier images.php, je récupère le user en session, je regarde s'il a bien le droit de visualiser l'image et si :
- Il n'a pas le droit, je renvoie une page 404
- Il a le droit, je lui affiche l'image en modifiant le header.
 
Pour modifier le header et afficher l'image, je fais comme suit :

Code :
  1. $path = 'path/to/myimage.jpg';
  2. header('Content-Type: image/jpeg');
  3. readfile($path);


 
J'ai bien vérifié l'existence du fichier (file_exists), ses dimensions (getimagesize) et sa taille (filesize), tout est ok à ce niveau.
 
Lorsque je retire la ligne header('Content-Type: image/jpeg');, je récupère bien le fichier mais non sous format jpeg.
Dès que j'ajoute le header, j'obtiens l'erreur suivante, sous forme d'image :
L'image "http://127.0.0.1/images/image.jpg" ne peut être affichée car elle contient des erreurs.
 
J'ai beau parcourir le net à la recherche d'une solution, tout le monde arrive à afficher une image avec ce bout de script ... :/
Ce qui est bizarre c'est que le header a l'air de fonctionner (j'ai bien une image en sortie, mais sous forme de texte d'erreur) et que readfile a l'air de bien lire l'image.
J'ai aussi essayé avec d'autres images jpg que mon image de test ainsi qu'avec un png mais c'est la mm chose :cry:
 
Merci de votre aide !


Message édité par yuukuari le 23-05-2011 à 17:57:48
Reply

Marsh Posté le 23-05-2011 à 16:21:43   

Reply

Marsh Posté le 23-05-2011 à 16:30:44    

et quand tu enlèves le header , qu' est ce qui s'affiche ?

 

( normalement tu dois avoir les  erreurs en question)


Message édité par flo850 le 23-05-2011 à 16:31:11

---------------

Reply

Marsh Posté le 23-05-2011 à 17:47:21    

Salut,
 
Et bien justement non il n'y a pas d'erreur ... enfin je pense !
J'ai essayé avec plusieurs images, voici un exemple.
 
http://img685.imageshack.us/img685/8755/errorbj.jpg


Message édité par yuukuari le 23-05-2011 à 19:53:12
Reply

Marsh Posté le 23-05-2011 à 19:52:51    

Bon j'ai fini par trouver la réponse !
Au début de mon fichier images.php, je faisais plusieurs includes qui à leur tour faisaient des require_once sur d'autres fichiers php.
 
Un de ces fichiers était encodé en UTF-8 au lieu d'être en UTF-8 (sans BOM) comme les autres.
Apparemment le format UTF-8 avec BOM insère un espace insécable en début de fichier, d'où le problème :)
 
En changeant le format, tout est rentré dans l'ordre  :love:  
 
En espérant que ça serve à quelqu'un.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed