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 :

sessions et cookie sessions ?


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 sessions et cookie sessions ?
    J'utilise des fonctions qui initialisent, créés, accèdent, supprime une session ou un cookie !
    et je rencontre quelque chose qui n'est pas étrange mais redondant en fait :

    Voilà une partie du code :
    $session étant juste un tableau :
    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
     
    $sessionStatusValue=array(
    		0=>'PHP_SESSION_DISABLED ==0 => si les sessions sont désactivées.',
    		1=>'PHP_SESSION_NONE ==1 => si les sessions sont activées, mais qu\'aucune n\'existe.',
    		2=>'PHP_SESSION_ACTIVE ==2 => si les sessions sont activées, et qu\'une existe.'
    );
    $session = array (
     
    		0 => array (
    			'OCRPHPJS',
    			'1a',		
    		),		
    		1 => array (			
    				session_status(),					
    				$sessionStatusValue [session_status ()],
     
    		),
    Si je créé une session avec session_name($session[0][0]) et session_id($session[0][1]) différent avant un session_start ou pas.
    A part le fait que session_status renvoie 1= (PHP_SESSION_NONE) mais il ne me créé pas de cookie session automatiquement normal puisque je n'ai pas appelé session_start()
    (et PHPSESSID qui serait différent ainsi que le SID ou le id du cookie session) si c'était le cas !

    Mais ensuite :
    si je créé un cookie avec le même nom et la même valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    setMyCookie( $session[0][0],
                getMyCookie($session[0][0],$session[0][1]),
                0,
                '/',
                $domain, //localhost
                false,
                true );
    Si je fais un session_start() ou pas, il fait un refresh de la page et "le cookie session" s'affiche de suite.
    par contre si je code pas le cookie comme si dessus surtout pour l'option EXPIRE ou le CONTENU il me créé :

    rien à cause d'EXPIRE >0 (pas de session start donc rien)
    ou deuxième cookie de même nom en plus du cookie session si le nom est identique que session_name mais pas la même valeur (sinon PHPSESSID) .
    autres comportement...

    Ce qui me trouble un peu est que si je fais juste la manip pour le cookie avec ce code je créé une sorte de cookie session ou vraiment le cookie session ?
    Et sans appeler session start() cela change bien sur juste pour le statut qui renvoie PHP_SESSION_NONE au lieu de PHP_SESSION_ACTIVE !

    J'ai regardé les explications ici pour mieux comprendre mais j'ai du mal à tout digérer :
    http://php.net/manual/fr/function.se...he-limiter.php
    http://php.net/manual/fr/session.con...ion.auto-start
    http://php.net/manual/fr/function.setcookie.php

    Peut on m'aider à m’éclaircir tout ceci si les liens expliquent le comportement de ce que j'ai ? Merci à vous

    (si c'est un peu confus désolé dites moi si je ne suis pas clair )

    J'aurais du aussi préciser au delà de comprendre comment fonctionne les sessions et les cookies. Avant j'utilsais juste session_start() et setcookie() sans trop savoir !
    Donc j'ai voulu me compliquer la vie alors j'ai voulu en local créer une zone "multi session" pour un utilisateur (avec un cookie session) sur lesquelles il pourrait "switcher" et quand il ferme le navigateur ou se déconnecte que les "mini config" de chaque session soit gardées tant qu'il n'a pas déconnecté auquel cas toutes les sessions seraient supprimées évidement aussi et tout ceci sans passer par une bdd.

    J'y suis presque arrivé au mettant dans un cookie-session (pas celle généré auto encore que je modifie session_name et session_id apparemment ce n'est pas bien comme pratique) une date() ou time() et en switchant il retrouve la "mini config" de chaque session (je m'amuse avec deux pour l'instant ) avant qu'il ferme sans utiliser de bdd.

  2. #2
    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
    Je n'ai pas de réponses je comprend !
    Il n'y a pas vraiment de question !
    De plus j'ai écrit beaucoup pour pas dire grand chose finalement mais ne comprenant pas correctement les sessions, les cookie-sessions et les cookies, il me semblait nécessaire d'expliquer ce que je faisais.

    Je comprend un peu mieux maintenant leur fonctionnement, leurs fonctions php...
    session d'abord,
    cookie-session généré automatiquement par le serveur et le navigateur. Là il est vrai que j'ai une question on me dit parfois que ce n'est pas une bonne idée ou pratique de le modifier (nom,id,status) pourquoi ?
    puis si besoin cookie pour la fois d'après

    Personnellement je compare un cookie-session perso avec une session après vérification identité (ok! si déjà cookie-session ) mais aussi ce cookie session perso détient une clé et une valeur sur le nom des sessions (pour moi 2) et le time,date à laquelle elles ont été quittés/"switcher" et des tableaux de valeurs ou des données de la table. Afin que l'utilisateur retrouve sa config et du coté utilisateur admin des infos en temps réels sur les sessions, cookies, variables...

    Par contre je rencontre un gros problème pour l'affichage des données de sessions elles sont gardées par le navigateur malgré :
    des session_unset() et session_destroy() voir avec $_SESSION=array() et même unset($_SESSION), session_write_close (), setcookie (session_name (), '', 0, '/')(cookie session), session_regenerate_id (true)

    Cela me recharge tout de même les anciennes valeurs de $_SESSION? Là par contre je commence souvent à croire que ce que j'avais compris vaut rien !
    D'où cela peut provenir d'après vous ? Un mauvais appel au mauvais endroit du code des fonctions ?

    (désolé j'avais mal écrit $_SESSION)

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Un cookie de session sert à une seule chose : identifier la session.
    C'est un cookie tout à fait normal qui fourni une information vers le serveur.
    Il ne contient pas les dates ou les données de la session.

    La question qu'on a envie de te poser est "qu'est ce que tu cherches à faire ?".
    Pourquoi veux-tu tripoter le cookie de session ou le nom de la session ?

    Pourquoi tu te retrouves avec des $session ou $_session alors qu'une session c'est $_SESSION ?
    Si tu as des données "qui réapparaissent" c'est à mon avis parce qu'au lieu d'utiliser nativement les sessions comme elles sont, tu as mis en place une usine à gaz qui ne fonctionne pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    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
    C'est tout à fait possible que ce soit une usine à gaz !
    Et que résultat je n'arrive pas à nettoyer tout le tableau de la superglobale $_SESSION pour ne pas avoir de vieilles valeurs qui s'affichent !

    Par contre je ne vois pas ce qui y'a de mal ou grave à changer le nom et le du cookie session avec session_name($name='name') et session_id($id='id1')

    (Pour l'instant j'ai abandonné mon idée de "mutli session" par "cookie session" vu que ce problème d'affichage est bien suffisant )

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Par contre je ne vois pas ce qui y'a de mal ou grave à changer le nom et le du cookie session avec session_name
    rien sauf qu’apparemment tu n'arrives pas a faire fonctionner une session normale donc ce n'est pas vraiment le moment de trifouiller
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    tu as raison !
    par contre je ne créé pas un site sérieux c'est un site "test" quand j'ai justement besoin pour apprendre.

    J'ai observé que ce qui provoquait mon erreur est la fonction session_start() si elle est appelé deux fois malgré que je détruise "en apparence " la session entre les deux.
    De plus j'ai observé que ce comportement si je supprimais avant un nouveau session_name() ET un session_id() puis session_start()// le deuxième car le premier session_start() étant dans le script de suppression

    En fait je pense avoir compris que le nouveau session_id() est doublé avec le session_name() et donc double le session_start() et qu'il affiche les deux stocké y compris l'ancienne session dans le tableau $_SESSION.
    C'est un peu comme si lorsqu'il créé le nouveau cookie session session_start() avait besoin de session_name() et session_id() conjointement si session_id() est vide par session_regenerate_id (true) ou/et que le tableau des données $_SESSION est vidé.
    J'ai donc intercalé mon script de suppression entre le nouveau session_name() ET le nouveau session_id() et là pour l'instant plus de problème !

    Ainsi je n'ai finalement plus qu'un question :
    Quel est pour vous le meilleur code pour tout supprimer une session ?
    (j'ai tout regardé les trois principales fonctions sur les sessions : session_start(),session_unset(), session_destroy() ). Note: session_start() est encore pour moi pas si évident à comprendre dans tout son comportement parceque je suis pas au bout d'avoir bien digérer session_set_save_handler() et les fonctions Fonctions de bufferisation de sortie.

    Mon code de suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            session_start();
    	$_SESSION=array();
    	session_unset ();
    	session_destroy ();
     
    	session_write_close ();
     
    $name='';	$value=0;	$expire=0;$path = '/'; $domain = '';//chez moi ceux sont des variables globals ou paramètres de fonctions c'est selon !
    $domain = ($_SERVER['HTTP_HOST']!='localhost') ? $_SERVER['HTTP_HOST']:false;
    setcookie (session_name (), $value,$expire,$path,$domain);//cookie session
     
    	session_regenerate_id (true);

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

Discussions similaires

  1. [Cookies] Session et cookie de vBulletin - imitation
    Par Lucas Panny dans le forum Langage
    Réponses: 8
    Dernier message: 25/03/2009, 08h43
  2. [Cookies] session php cookie
    Par afroweb dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2007, 10h55
  3. [Cookies] Sessions ou cookies
    Par arti2004 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2006, 18h39
  4. Réponses: 3
    Dernier message: 01/05/2006, 13h27
  5. [Cookies] Session sans cookie
    Par billoum dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2006, 18h36

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