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 :

Comment recharger les images à chaque submit ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    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

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Normalement chaque fois que l'on clique sur submit la page suivante est rechargée !

  3. #3
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    tu peut tester la fonction :

  4. #4
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Cache-control: no-cache");
    J'obtiens le message d'erreur suivant :
    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 ?

  5. #5
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    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.

  6. #6
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut
    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.

  7. #7
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="trucmuche.php">
    Et ça marche !!

  8. #8
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    salut jejerome

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [VB200]Comment changer les images de plusieurs picturebox
    Par stargates dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2006, 17h05
  2. Comment enregistrer les images d'une page web ?
    Par Chris33 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 11/07/2006, 22h09
  3. Réponses: 4
    Dernier message: 08/07/2006, 06h36
  4. [VB6] Comment gérer les images d'un projet
    Par fikou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/04/2006, 17h28
  5. Réponses: 8
    Dernier message: 05/12/2005, 12h33

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