|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2006 Messages : 6 ![]() |
Bonjour,
Afin de permettre la lecture d'images sauvegardées dans un repertoire non accessible publiquement, j'utilise la technique (classique) suivante : Code :
echo "<img src=\"image.php?p=$chemin\" width=".$width." height=".$height." alt=\"$alt\">"; Code :
1) Sous firefox, l'image apparait mais elle clignote légèrement à chaque affichage, comme si elle était actualisée à chaque fois. Je ne sais pas si cela est du à non-cachage cela dit. 2) sous IE, elle ne s'affiche pas. J'ai essayé différents headers de cache : public, ou en spécifiant une durée de cache très longue, mais cela ne change rien. Et pour IE, je ne sais pas pourquoi il ne veut pas l'afficher. Edit : A noter que cela donne le même résultat si je n'envoie aucun headers, j'imagine que c'est normal vu que c'est déjà dans un tag <img>. Help ? Merci AnonCoder |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
hum, plusieurs choses :
* Est tu bien en PHP > 4.3.0 ? (les 2 fonctions utilisées sont accessibles a partir de cette version uniquement) * Quel est le code source HTLM généré de ta balise img ? ne manquerait il pas un urlencode sur le chemin ? * J'espere que tes "verifications diverses" incluent tout les controles de sécurités necessaire ($chemin ne contient pas http://, ne termine pas par .php, ne commence pas par ., etc...) * Enleve le @ avant readfile, pour debugger c'est mieux * Une fois que tu as le code source HTML, charge directement l'image dans ton navigateur via cette url, que s'affiche t'il ? * As tu vidé le cache de IE ? il a tendance a garder les images, voir meme une version corrompue des images * Normal que l'image "clignote" sous FF si elle n'est pas dans le cache ;o) Sinon, pour le cache de IE, une fois que tout les autres points seront éclaircis, tu peux essayer : Code :
et il ne faut pas se fier aveuglement a Cache-Control: ou autre valeurs passés a header, ce sont des commandes qu'on envoit au navigateur... et qui peuvent etre interprétés différement. Les nombreux commentaires utilisateurs sur la page http://www.php.net/fr/header le prouvent ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2006 Messages : 6 ![]() |
Tout d'abord, merci pour cette réponse rapide.
Pour IE j'ai résolu le problème, c'était une bête histoire d'erreur dans le tag html. Pour le cache, j'arrive à forcer le cache pour un certain laps de temps avec l'attribut max-age de cache-control. J'en déduis donc que simplement "private" ou "public" et avec les headers d'une image ne suffit pas aux navigateurs à gérer le cache comme celui d'une image (certainement priorité au fait que le fichier appelé est .php) Ce n'est donc pas exactement ce que je recherche, puisque que je voudrai indiquer au navigateur de gérer le cache comme il l'entend et comme il le fait pour une image quelconque, alors que là je suis obligé de le "forcer" (enfin une directive qu'il peut appliquer ou pas certes) à ne la conserver en cache que pour une période que je lui indique. Pour autant je passe le sujet comme résolu car je ne pense pas qu'il y ait de solution (triviale) à cela. Merci AnonCoder |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com