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 :

fonctions sessions suppression donnee des variables sessions [PHP 5.6]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut fonctions sessions suppression donnee des variables sessions
    Bonjour

    Je cherche dans http://php.net/manual/fr/ref.session.php

    une fonction non pas qui détruit les variables session ou la session mais le contenu des variables, les mettant à vide ou null.

    J'ai bien cru que session_reset() pourrait le faire mais celle ci ne fait que reprendre les dernières valeurs enregistrées.

    J'ai essayé après un premier appel à session_start,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //session_unset();
    //session_destroy();
    //session_start (); // On démarre la session AVANT toute chose
    mais sur certaine page ou appelle de fonction qui utilise des variables session forcément si session unset a été appelé juste avant même si y'a session_start étant placé après...ça plante !
    c'est toute la structure du site que je dois repenser alors qu'une fonction qui supprime le contenu et non les variables session suffirait.

    Y'en a peut-être pas ?Ou y'a t-il une astuce en combinant les fonctions de php sur les sessions ?

    Ou suis je obligé de mettre à null ou vide ('') chaque variable session manuellement et créer une fonction perso ?
    J'ai pensé aussi sur les pages ou appel de fonctions qui utilisent des variables sessions et qui posent problèmes de tester avec session_status() ou dans une fonction qui vérifie avec un return true/false
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (session_status() == PHP_SESSION_ACTIVE) {
    //on continue et utilise les variables sessions
    }else{
    //on arrete et on fait rien  donc pas de else ou on affiche quelque chose ou fait autres choses sans variables sessions
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne crois pas qu'il y ai une fonction native de php qui vide chaque variable de session.

    En revanche, $_SESSION est un tableau donc c'est assez simple à vider avec un foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($_SESSION as $cle => $valeur) {
        $_SESSION[$cle] = null; //ou "" ou ce que tu veux
    }
    Tu peux obtenir un résultat identique en utilisant array_map() ou array_walk().

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut
    mais j'espérais qu'il y ait une fonction native de php pour le faire !
    j'y avais pensé et créer une fonction :
    (je ne connaissais pas array_map et array_walk ça peut peut-être aller encore plus vite !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function session_empty(){
     foreach ($_SESSION as $cle => $valeur) {
        $_SESSION[$cle] = null; //ou ""
     }
    }
    et en vérifiant d'ailleurs si la session est active ou pas avec session_status

    par contre justement j'ai du mal à comprendre http://php.net/manual/fr/function.session-status.php

    PHP_SESSION_NONE si les sessions sont activées, mais qu'aucune n'existe.
    PHP_SESSION_ACTIVE si les sessions sont activées, et qu'une existe.

    PHP_SESSION_NONE : j'ai du mal à comprendre la nuance : actives et aucune existe !
    après un session_destroy() elles ne sont pas actives ni n'existent, non ?
    qu'est ce qui peut faire qu'elles soient encore actives mais qu'aucune n'existe ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je pense que SESSION_NONE correspond à "il est possible de faire des sessions sur ce serveur mais on n'a pas encore appelé de session_start" par opposition à SESSION_DISABLED qui correspond à "la fonctionnalité session est désactivée sur ce serveur, donc session_start ne marchera pas".
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Je suis pas certain d'avoir compris ton problème... Ou cela veut dire que tu as des scripts qui utilisent des variables de session sans tester leur existence, ce qui va à l'encontre des bonnes pratiques élémentaires. Si c'est le cas tu ferais mieux de corriger ce problème en vérifiant tes variables avant de les utiliser.

    Sinon pour répondre plus directement à ta question, je n'ai jamais entendu parler qu'il existe une fonction dédiée pour effacer le contenu de ces variables. Mais bon c'est un tableau, donc tu peux utiliser une fonction récursive array_walk_recursive ou encore RecursiveArrayIterator pour les effacer sans besoin de le faire nommément pour chaque variable.

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut
    si j'ai une fonction qui teste l'entrée dans le site et qui teste les variables par ex $_session[nom] $_session[prenom] avec isset et si elles sont vides

    Mais j'ai crée un page fonction.php appelé dans le head qui contient cette fonction un peu à la manière de wordpress
    Sauf que sur certaine page et j'ai du mal pensé à la structure même de ce petit site.

    Certains éléments html : header ou des menus testent cette fonction pour afficher ou pas le nom et le prénom.
    Alors qu'ailleurs
    soit la session est terminée par un session_destroy() ou session_unset()
    (je n'ai trouvé que cela pour tenter de vider mes variables au début en essayant de les positionner au bon endroit),
    soit parce qu' il rencontre de nouveau un session start alors que la session est déjà active... donc bug !

    Donc pour moi le mieux aurait été de vérifier si les variables sont vides ou null et là plus de problèmes pour gérer l'appel de cette fonction.D'où le sujet de départ !

    Mais je commence aussi un peu à comprendre la nuance entre sessions actives et session existante.
    J'aurais d'ailleurs mieux compris dans l'autre sens : plusieurs sessions existantes et une seule session active ! dans le sens où les sessions sont sauvegardées mais non utilisées au sein du serveur.
    Et c'est en lisant en diagonale http://php.net/manual/fr/sessionhandlerinterface.gc.php et http://php.net/manual/fr/sessionhandler.gc.php mais là je me complique la vie en plus de ne pas tout saisir par manque de pratique même si c'est intéressant !
    Ca ressemble presque à du java sur les objets non utilisés dans le sens où les sessions ont une durée de vie aléatoire dans le serveur. Je me trompe ?

    Pour l'instant je vais me contenter (je n'ai pas encore essayé) de faire ma fonction pour vider ou mettre à null les variables de la session "existante" au début en testant si elle est à none ou disabled sinon les variables $_session vont faire planter ma fonction et puis je verrais si c'est suffisant. Après je marquerais résolu sauf si j'ai encore des alertes ou erreurs fatales !

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

Discussions similaires

  1. Détruire des variables session
    Par jules_diedhiou dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2008, 23h52
  2. Réponses: 1
    Dernier message: 11/06/2007, 23h39
  3. gestion des Variables Sessions
    Par Landolsi dans le forum ASP.NET
    Réponses: 8
    Dernier message: 08/02/2007, 13h30
  4. [Sécurité] Non persistence des variables session ?
    Par Christophe Charron dans le forum Langage
    Réponses: 9
    Dernier message: 28/02/2006, 22h05
  5. Réponses: 6
    Dernier message: 28/11/2005, 12h03

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