Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2006, 01h09   #1
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 195
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 195
Points : 27
Points : 27
Par défaut Comment recharger les images à chaque submit ?

Bonjour,
J'ai une page reponse.php qui se charge quand on clique sur le bouton "submit" d'un formulaire.

Comment faire pour que les images contenues dans "reponse.php" soient rechargées à partir du serveur à chaque fois qu'on revient sur le formulaire (bouton précédent du navigateur) et qu'on reclique sur "submit" ?

Merci de votre aide
jejerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 01h38   #2
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
Normalement chaque fois que l'on clique sur submit la page suivante est rechargée !
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 02h29   #3
Membre habitué
 
Avatar de kanzarih
 
Homme
Inscription : novembre 2002
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34

Informations forums :
Inscription : novembre 2002
Messages : 319
Points : 139
Points : 139
tu peut tester la fonction :
kanzarih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 08h11   #4
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 195
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 195
Points : 27
Points : 27
C'est bien ça mon problème !
L'utilisateur recharge des anciennes images qui sont stockées dans son cache.
Si je mets un code du type :
Code :
header("Cache-control: no-cache");
J'obtiens le message d'erreur suivant :
Citation:
Warning: Cannot modify header information - headers already sent by (output started at /home/jerome/public_html/Mie/Mie_result.php:3) in /home/jerome/public_html/Mie/Mie_result.php on line 13
Que faire pour que les images soient correctement rafraîchies ?
jejerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h06   #5
Membre habitué
 
Avatar de kanzarih
 
Homme
Inscription : novembre 2002
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34

Informations forums :
Inscription : novembre 2002
Messages : 319
Points : 139
Points : 139
salut
void clearstatcache(void)

L'appel à la fonction

stat
ou
lstat

est relativement coûteux en terme de temps d'exécution. Pour cela, le résultat du dernier appel à l'une des
fonctions de statut, (voir la liste ci−dessous), est sauvegardé pour ré−utilisation ultérieure. Si vous voulez
forcer la vérification du statut d'un fichier, dans le cas où le fichier aurait pu être modifié ou aurait disparu,
vous devez utiliser la fonction clearstatcache afin d'effacer de la mémoire les résultats du dernier appel à la
fonction.
La valeur du cache n'est valable que pour la durée d'une requête.
Les fonctions affectées sont : stat, lstat, file_exists, is_writable, is_readable, is_executable, is_file, is_dir,
is_link, filectime, fileatime, filemtime, fileinode, filegroup, fileowner, filesize, filetype, et fileperms.
kanzarih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h23   #6
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 195
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 195
Points : 27
Points : 27
Salut kanzarih,
Je ne vois pas trop le rapport. Pour info j'avais déjà tapé "clearstatcache" dans google... En fait, clearstatcache efface le cache des informations sur les fichiers obtenues avec les fonctions stat() et lstat().

Quel est le rapport avec ma question ? J'en suis toujours au même point.
jejerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h46   #7
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 195
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 195
Points : 27
Points : 27
J'ai résolu mon problème !
Pour cela, j'ai utilisé le chargement dynamique d'images avec gd.
1) pour charger dynamiquement l'image essai.png je crée un fichier trucmuche.php :
Code :
1
2
3
4
5
6
<?
header ("Content-type: image/png");  
$fichier = "essai.png";
$im = ImageCreateFromPng ($fichier);
ImagePng ($im); 
?>
2) je charge l'image dans ma page d'appel avec :
Code :
<img src="trucmuche.php">
Et ça marche !!
jejerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 09h46   #8
Membre habitué
 
Avatar de kanzarih
 
Homme
Inscription : novembre 2002
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34

Informations forums :
Inscription : novembre 2002
Messages : 319
Points : 139
Points : 139
salut jejerome

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
if(!defined('CACHE_DIR'))  define('CACHE_DIR',$_SERVER['DOCUMENT_ROOT'].'include/cache/');
if(!defined('CACHE_TIME')) define('CACHE_TIME',7200);
 
class basicCache
{
	// PAS DE CONSTRUCTEUR !!!
	// Cette classe agit comme un espace de nommage
	
	/**
	 * Méthode de chargée de vérifier l'état d'un cache donné
	 *
	 * Si le cache $name existe est à été modifié depuis moins de
	 * CACHE_TIME seconde, la méthode renverra true, sinon false.
	 *
	 * @param string $name Le nom du cache à vérifier
	 * @return bool
	 */
	public function chk($name)
	{
		$name = md5($name);
		
		if(!is_file(CACHE_DIR.$name)) 
			return false;
		
		clearstatcache();
		if(filemtime(CACHE_DIR.$name) < time() - CACHE_TIME)
			return false;
			
		return true;
	}
	
	
	/**
	 * Méthode de chargée de supprimer un cache
	 *
	 * Si vous passez la valeur -1 en paramètre, l'intégralité des caches seront supprimés.
	 *
	 * @param $name Le nom du cache à supprimer
	 * @return bool
	 */
	public function clear($name)
	{
		if($name == -1)
		{
			$d = opendir(CACHE_DIR);
			while(false !== ($f = readdir($d)))
			{
				if(is_file(CACHE_DIR.$f))
					unlink(CACHE_DIR.$f);
			}
			closedir($d);
			return true;
		}
		
		$name = md5($name);
		
		if(is_file(CACHE_DIR.$name))
			return unlink(CACHE_DIR.$name);
	}
	
	
	/**
	 * Méthode qui créer un cache à partir des données de $str
	 *
	 * La chaine $str peut être facilement obtenu à l'aide des fonctions
	 * ob_start() et ob_get_clean() ou ob_get_flush() selon le contexte.
	 *
	 * @param string $str La chaine à mettre en cache
	 * @param string $name Le nom du cache à construire
	 * @return bool
	 */
	public function build($str, $name)
	{
		if(!is_dir(CACHE_DIR))
			return !trigger_error("Le dossier de cache n'existe pas !",E_USER_ERROR);
			
		if(!is_writable(CACHE_DIR))
			return !trigger_error("Le dossier de cache n'est pas accessible en écriture !",E_USER_ERROR);
		
		$name = md5($name);
		
		if(!file_put_contents('compress.zlib://'.CACHE_DIR.$name, $str))
			return false;
		
		chmod(CACHE_DIR.$name, 0666);
		return true;
	}
	
	
	/**
	 * Méthode pérmettant d'accéder au contenu d'un cache
	 *
	 * @param string $name Le nom du cache à récupérer
	 * @return string ou false si le cache n'existe pas !
	 */
	public function get($name)
	{
		$name = md5($name);
		
		if(!basicCache::chk($name)) 
			return false;
		
		return file_get_contents('compress.zlib://'.CACHE_DIR.$name);
	}
}
exemple d'utilisation

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$name = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
 
if(false !== ($cache = basicCache::get($name))){
	print($cache);
	exit();
}
 
ob_start();
 
//Le code HTML à mettre en cache...
 
$cache = ob_end_flush();
basicCache::build($cache,$name);
kanzarih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 11h41   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par jejerome
C'est bien ça mon problème !
L'utilisateur recharge des anciennes images qui sont stockées dans son cache.
Si je mets un code du type :
Code :
header("Cache-control: no-cache");
J'obtiens le message d'erreur suivant :


Que faire pour que les images soient correctement rafraîchies ?

Salut

J'arrive un eu tard (tu as résolu ton problème) mais je souhaitais t'expliquer ce message : il faut appeler header() avant d'envoyer quoi que ce soit ua navigateur (même une ligne vide, un espace, n'importe quoi).
Cela n'empêche pas, toutefois, d'appeler plusieurs fois header() à la suite l'une de l'autre.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h18.


 
 
 
 
Partenaires

Hébergement Web