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 :

Détruire une variable de session au changement de page


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Par défaut Détruire une variable de session au changement de page
    Bonjour à tous,

    Je cherche un moyen de détruire des variables de session lorsque l'internaute quitte la page.

    Je m'explique un peu plus...Sur mon site, je propose un formulaire ou les internautes peuvent insérer des photos par le biais de champ type file. Je propose également la possibilité de les pré-visualiser avant d'enregistrer totalement les informations du formulaire. Pour ce faire, je stock les images dans un dossier de manière temporaire sur mon ftp et je stock les noms des images dans des variables de session.

    Dans la mesure ou l'internaute va jusqu'au bout de la procédure et valide l'enregistrement du formulaire, la pas de problème, je bascule les images du dossier temporaire au dossier définitif et je détruis les variables de session contenant le nom des images.

    Mais si l'internaute ne va pas jusqu'au bout et au lieu de valider le formulaire, il s'en va sur une autre page du site, je me retrouve avec le nom des images contenu dans les variables de session toujours active et en plus les images ne sont pas effacer du fichier temporaire, c'est plutôt gênant.

    Je sais que je peux faire ça avec ajax mais je souhaite éviter de trop utiliser javascript dans la mesure ou l'internaute le désactive, tout au moins pour cette partie, afin de ne pas me retrouver dans 6 mois avec un certain nombre d'images qui servent à rien et qui prennent du poids dans mon dossier temporaire.

    Merci à tous pour vos réponses.

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 852
    Par défaut
    Salut, concernant ta session qui reste active, ce n'est pas un problème, elle sera détruite automatiquement au bout de plusieurs minutes.
    Concernant ton fichier, s'il est dans le répertoire des fichiers temporaires, il sera également supprimé automatiquement en fonction de la politique de ton serveur.

    A+

  3. #3
    Membre éclairé Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Par défaut
    Merci Arnolem pour ta réponse,

    Elle est intéressante puisque je n'avais pas pensé à utiliser la variable $_FILES['tmp_name']['X'] pour afficher sur mon site une prévisualisation.

    Mais si j'ai bien compris ta réponse, ça ne peut pas convenir pour mon cas, puisque que les images passe par une fonction GD pour les transformer en vignette et aussi les retailler. Dans ma prévisualisation j'ai développer un système en action script3 qui importe les images et qui les lis sous forme de diaporama.

    Par conséquent les images sont toutes traitées puis enregistrer dans un fichier sur mon FTP. Ce qui me permet par la suite de pas avoir à retravailler les images puisqu'elles sont enregistrées optimisées en terme de dimension et de poids.

    De plus je ne souhaite pas attendre que les sessions se détruise d'elles mêmes. Dans le cas présent si l'internaute charge une prévisualisation des photos et qu'il s'en va. Si il revient, la prévisualisation et toujours en mémoire et affichée.

  4. #4
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 852
    Par défaut
    Comment définie tu qu'un internaute quitte ton site ?
    C'est une notion qui n'existe pas en Web

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    perso je verrais deux soluces :
    - ne pas enregistrer la preview, juste la calculer et l'envoyer au client et créer les fichiers et insert bdd uniquement si la procédure complète est validée
    - stocker tout dans un rep temporaire mais faire un script de purge, donc définir un time-out et appeler le script à intervalles régulier ou sur l'index
    La première semble plus propre ^^

    (d'ailleurs la remarque de arnolem me fait penser à un truc que j'ai jamais tenté : stocker des fichiers temporaires dans le rep des sessions, files ou tmp, a priori y seront effacés direct par apache ou autre)

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Citation Envoyé par Djakisback
    d'ailleurs la remarque de arnolem me fait penser à un truc que j'ai jamais tenté : stocker des fichiers temporaires dans le rep des sessions, files ou tmp, a priori y seront effacés direct par apache ou autre
    J'en sais rien en faite, mais j'ai tendance à croire que non, car le systère est se base théoriquement sur le nom des fichiers, et de la date de dernière modification des fichiers.
    D'ailleurs, comme ça au feeling, je trouverais dangereux que le système supprime tous les fichiers sans savoir si c'est des fichiers de sessions ou pas.
    M'enfin, c'est mon raisonnement

    Sinon, pour le problème évoqué, il peu avoir une floppée de solutions.

    La 1ère, c'est de ne pas faire de prévisualisation, c'est de loin le plus simple car il y aurait plus de fichiers temporaire à créer.
    On pourrait envisager de créer un petit Javascript, avec la fonction window.confirm(), donc une demande de confirmation.
    S'il la personne confirme -> hop, on réduit l'image et on la dépose.


    Une 2ème, dans le cas ou tu souhaite conserver le principe de prévisualisation, c'est d'exploiter un système de cron (ou tache planifiée), et de purger le répertoire en question par période (1 fois par jour dans la nuit, ou 1 fois par semaine, peu importe).
    Il existe des sites (certains gratuits) qui offrent ce genre de service. Peut être même que ton hébergeur le propose.


    Une autre, la plus compliquée, mais ça dépend.
    Si tu as une gestion des sessions plus évoluée, tu pourrais exploiter le système de purge des fichiers automatique des sessions pour supprimer les images.
    La doc de Php donne une solution pour avoir un peu plus "la main" sur la gestion des sessions :
    http://fr2.php.net/manual/fr/functio...ve-handler.php
    Le principe serait simple. avant que le système ne supprime le fichier de session, il faudrait dé-sérialiser le fichier (en boucle), ensuite vérifier que la variable de session soit présente (celle qui contient les noms des images), récupérer leur nom et supprimer les fichiers.
    Ensuite le fichier de session est détruit.


    Ou alors, je me dis que tu as surement un espace administration, et tu pourrais par exemple prévoir un simple bouton pour déclencher la suppression des fichiers.
    C'est pas géantissime, car c'est manuel, mais ça reste très simple à mettre en place.
    Mais encore, peut être peux tu exploiter une certaine fonctionnalité que tu exécuterait de manière journalière, (par semaine, etc ...), suffirait de lui rajouter une fonction "supprime_image_temporaire()", faire une pierre 2 coups quoi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2012, 13h51
  2. Perte des variable de session au changement de page.
    Par [Xt-6] dans le forum Langage
    Réponses: 11
    Dernier message: 15/01/2009, 21h28
  3. Réponses: 6
    Dernier message: 18/11/2008, 18h31
  4. Détruire une variable de session
    Par paradeofphp dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/09/2007, 13h08
  5. Détruire une variable session
    Par tiyolx dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2006, 18h59

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