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

ASP Discussion :

Voir toutes les variables Session actives


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut Voir toutes les variables Session actives
    Bonjour,

    J'aimerai savoir comment il est possible de voir toutes les variables de session crées sur le serveur.
    J'ai une application qui nécéssite une identification par login et mot de passe. Chaque fois qu'un utilisateur se connecte correctement, une variable de session se crée avec un identifiant. Seulement, je n'arrive pas à récupérer toutes ces variables afin que j'identifie les utilisateurs connectés à l'instant T.

    Merci.

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Tu ne peux pas faire appel au variables de session de tous les internautes car chacune appartient et s'adresse à un seul internaute. Ainsi, Session("toto") designe une variable de session aussi bien pour un inernaute en France qu'en Inde. Mais elles ne contiennent pas les mêmes choses.

    Au moment de l'authentification, tu peux mettre le nom de la personne loguée dans une variable d'application. Ou bien, tu peux ajouter l'information en base, dans un fichier texte...

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Salut Immobilis,

    Merci pour tes renseignements. J'ai essayé de faire celà avec une base de données mais j'ai l'impression que mes sessions ne fonctionnent pas.

    J'ai une base de données qui enregistre les connexions. Quand l'utilisateur se connecte bien, je l'enregistre dans la base de données avec un flag à 1 pour dire que la session est active et je crée une variable de session ID avec un ID unique. Dans mon global.asa, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Session_OnStart
        Session.Timeout = 1000
    End Sub
     
     
    Sub Session_OnEnd
       'on remet le flag de la session à 0 car plus active
       sqlstr = "Update matable set session_active = '0' where ID = '" & session("ID") & "'"
       set rs = Maconnexion.execute(sqlstr)
    End Sub
    Mai le flag ne se met pas à jour... Et pas moyen de voir si je passe bien dans cette fonction quand ma session se termine

    As tu une idée ?

  4. #4
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Plusieurs choses :
    - Dans ton global.asa, il faut que tu definisse ta connexion Maconnexion dans Session_onEnd

    - D'une manière ou d'une autre, tu passeras par la procedure Session_onEnd. La question est Quand ? et la réponse est : soit on lui indique implicitement la fin de la session par Session.abandon(), soit au bout d'un temps donné, qui correspond à Session.timeout (en minutes) (20 minutes par défaut, mais ici tu lui indiques 1000 minutes, soit 16h40 !)
    La fermeture du navigateur ne ferme pas la session.

    Pour les tests, mets Session.Timeout à 1 ou 5, par exemple

    - Enfin, si ta base est Access, il faut passer la souris devant les enregistrements pour que l'affichage se mette a jour (Dans Access 2000, en tout cas)


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  5. #5
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    A noter tout de même que lorsqu'on est dans le Session_OnEnd, paradoxalement les variables sessions ne sont plus accessibles.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Oui roro06,

    J'ai défini Maconnexion dans mon global.asa. En fait je crée une variable d'application dans mon Sub Application_OnStart que j'utilise après dans Sub Session_OnEnd

    Par contre si je n'ai plus ma variable de session dans mon Sub Session_OnEnd comment je peux mettre à jour mon flag session_active=0 de ma base de données (MySQL) ?!?

    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
     
    <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="Server"> 
    Sub Application_OnStart
       Set Application("MaConnexion") = CreateObject("ADODB.Connection")
     
       'CREATION DES CONNEXIONS
       on error resume next
        Application("MaConnexion").open "driver={MySQL ODBC 3.51 Driver};server=192.168.1.1;db=mabase;user id=ID;pwd=PWD;option=16386"
    End Sub
     
    Sub Application_OnEnd
       'FERMETURE DE LA CONNEXION
       Set Application("MaConnexion") = nothing	'Destruction de l'objet
    End Sub
     
    Sub Session_OnStart
       Session.Timeout = 5
    End Sub
     
    Sub Session_OnEnd
       'on remet le flag de la session à 0 car plus active
       sqlstr = "Update MaTable set session_active = '0' where ID = '" & session("trace") & "'"
       set rs = application("Maconnexion").execute(sqlstr)
    End Sub
    </SCRIPT>

  7. #7
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Effectivement, la remarque de franco_caoulene est tres judicieuse; mais ce n'est pas si paradoxal que ça, l'event intervenant apres la destruction des variables. J'aurais du le voir avant. La parade étant d'utiliser plutot la propriete Session.sessionId, qui est fournie par le serveur (unique pour chaque session, dans la mesure ou on ne reboote pas le serveur), et qui persiste après la fin de session.

    A toi de voir si ta session("trace") sert a autre chose dans tes programmes, dans ce cas, il faudra peut-etre maintenir une table de correspondance entre session("trace") et session.sessionId, ou alors définir dans le session_onStart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session("trace")=session.sessionId


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Oki Merci Roro,

    Bon grâce à toi j'ai trouvé le moyen de flaguer les users connectés par contre, j'ai l'impression que quand ma session se termine, je n'accède pas à ma fonction Sub Session_OnEnd de mon global.asa
    Est ce possible?!?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Session_OnEnd
       'on remet le flag de la session à 0 car plus active
       sqlstr = "Update matable set session_active = '0' where session_ID_serveur = '" & session.SessionID & "'"
       set rs = application("Maconnexion").execute(sqlstr)
    End Sub

  9. #9
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    session.SessionID ??? Aurais-tu compris ce qui a été dit plus haut?
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  10. #10
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Tu passes forcément par la sub session_onEnd. Par contre, si elle contient des erreurs, impossible de les voir.


    Remplaces
    set rs = application("Maconnexion").execute(sqlstr)
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application("Maconnexion").execute sqlstr
    (tu instancies un nouveau recordset qui ne sert a rien)

    Petite remarque : évite absolument le on error resume next, surtout pendant la phase de dev. Cela t'oblige à écrire un gestionnaire d'erreur, et ... c'est complexe ! Si une erreur survient, c'est qu'on a mal écrit le programme, et que donc il faut le réécrire correctement. C'est comme ça qu'on apprends . Ce conseil n'engage que moi, et n'appele aucun commentaire ni troll supplémentaire.


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Salut franculo_caoulene,

    Aurai je mis un truc bizarre dans mon code?!? J'ai ajouté dans ma table des connexions, un champ session_ID_serveur qui enregistre le session.sessionID et dans mon sub session_Onend je lance ma requête :
    "Update matable set session_active = '0' where session_ID_serveur = '" & session.SessionID & "'"
    mais apparement rien ne se met à 0

    J'ai essayé la ligne que tu me conseillais roro (application("Maconnexion").execute sqlstr) mais rien ne se passe. Pourtant ma requête ne comporte aucune erreur

  12. #12
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Session.Timeout = 5
    As-tu bien attendu 5 mn ?

    (j'ai fait le test cheze moi, ça fonctionne tres bien)


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Oui, vu que quand ma variable de session n'est plus active, je redirige vers la page d'identification. Ca peut provenir de la configuration de IIS ?

    Et il n'y a pas moyen de voir ce que lance ma requete du sub session_onEnd ? Histoire voir que ca se passe bien...

  14. #14
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Config de IIS : je ne crois pas, simplement vérifier que l'option "activer l'etat de session soit cochée" (elle l'est par défaut)

    Fais voir le code complet de ton global.asa ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Voilà mon global.asa complet :

    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
     
    <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="Server"> 
    	Sub Application_OnStart
    		Set Application("Connexion_AS400") = CreateObject("ADODB.Connection")
    		Set Application("MaConnexion") = CreateObject("ADODB.Connection")
    		Set Application("MaConnexion2") = CreateObject("ADODB.Connection")
    		Set Application("ConnexionSofi") = CreateObject("ADODB.Connection")
     
    		'CREATION DES CONNEXIONS
    		Application("Connexion_AS400").open "provider=IBMDA400;data source=192.150.1.5", "Log", "Mdp"
    		Application("MaConnexion").open "driver={MySQL ODBC 3.51 Driver};server=192.150.1.15;db=base;user id=root;pwd=pwd;option=16386"
    		Application("MaConnexion2").open "driver={MySQL ODBC 3.51 Driver};server=192.150.1.15;db=test;user id=root;pwd=pwd;option=16386"
    		Application("ConnexionSofi").open "driver={MySQL ODBC 3.51 Driver};server=192.150.1.15;db=sofi;user id=root;pwd=pwd;option=16386"
    	End Sub
     
    	Sub Application_OnEnd
    		'FERMETURE DE LA CONNEXION
    		Set Application("Connexion_AS400") = nothing	'Destruction de l'objet
    		Set Application("MaConnexion") = nothing	'Destruction de l'objet
    		Set Application("MaConnexion2") = nothing	'Destruction de l'objet
    		Set Application("ConnexionSofi") = nothing	'Destruction de l'objet
    	End Sub
     
    	Sub Session_OnStart
    		Session("base") = "TBMFILE"
    		Session.Timeout = 5
    	End Sub
     
    	Sub Session_OnEnd
    		sqlstr = "Update matable set session_active = '0'"' where session_ID_serveur = '" & session.SessionID & "'"
    		Application("Maconnexion").execute sqlstr
    	End Sub
    </SCRIPT>

  16. #16
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bizarre que ça ne marche pas, voici le test que j'ai fait :
    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
    <script language="vbscript" runat="server">
        sub application_onstart
            Set Application("MaConnexion") = CreateObject("ADODB.Connection")
            Application("MaConnexion").connectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\sites web\tst\tst.mdb"    
            Application("MaConnexion").open
        end sub
     
        sub session_onstart
            Session.Timeout=1
            Application("MaConnexion").execute "update bid set id='" & time & "'"
        end sub
     
        sub session_onend
            Application("MaConnexion").execute "update bid set id='" & session.sessionId & "'"
        end sub
     
    </script>


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 46
    Points : 35
    Points
    35
    Par défaut
    Merci de ton aide roro...

    Franchement ca me soule de ne pas touver la solution... J'ai utilisé ton script du global.asa et je mets bien à jour ma table quand la session débute mais quand elle se termine... RIEN A croire que mon sub session_Onend est invisible. Il doit bien y avoir une raison...

    Est il possible qu'ayant un autre utilisateur de connecter avec une autre session empeche la fin de la session de l'autre?!? Ce n'est pas possible... Il me semble qu'une session est propre à chaque utilisateur qui se connecte...

    --------------------------------------------
    Erffff il semblerait que se soit dû à un bug de windows...

    http://support.microsoft.com/kb/934903/fr

  18. #18
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Peux-tu nous montrer ton code du global.asa? Ta base de données est-elle sur le même serveur?

    [edit] ah ben je pensais justement à ce genre de chose.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  19. #19
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Effectivement, MS reconnait qu'il y a un bug, je ne le savais pas, et mes tests étaient fait sous XP .

    Donc plus que trois solutions :
    - demander le correctif à MS
    - Attendre la mise a jour qui corrigera le probleme (ca peut prendre du temps, MS se fout royalement d'ASP depuis qu'il a sorti .NET)
    - Réfléchir à une autre solution pour résoudre le problème

    Tu developpes sous win2003 ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  20. #20
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    - abandonner une fonctionnalité qui n'est pas forcément essentielle et peut-être coûteuse en développement
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher toutes les variables de session du serveur
    Par flow-bolox dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2011, 16h10
  2. toutes les variables de session
    Par jeorcal dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2010, 16h13
  3. Lister toutes les variables de session
    Par car0 dans le forum ASP
    Réponses: 1
    Dernier message: 24/09/2007, 19h25
  4. Comment effacer toutes les variables de sessions en une fois
    Par dessinateurttuyen dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2006, 09h20
  5. [Privilèges] Voir toutes les vues
    Par Cyborg289 dans le forum Oracle
    Réponses: 4
    Dernier message: 04/03/2006, 13h28

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