Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Autres langages pour le Web > Coldfusion
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/08/2010, 16h27   #1
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Par défaut perte de session

Bonjour,
Voici mon problème que personne n'a encore pu trouver une solution:

J'utilise des variables de session qui tiennent très bien avec le 90% des utilisateurs. Certains utilisateurs, avec la même configuration des paramètres internet explorer, perdent les sessions et la seule possibilité est d'aller modifier la config d'explorer dans outils-options internet-confidentialité-avancé et la de cocher "ignorer la gestion automatique des cookies" et aussi la case "Toujours autoriser les cookies de cette session".
En relançant le navigateur, les sessions tiennent.

Mais cela n'explique pas pourquoi le 90% des navigateurs n'as pas ces cases cochées et ça fonctionne.

Voici ma config dans Applications.cfm:
Code :
1
2
3
4
5
6
7
8
9
10
11
<CFAPPLICATION name="controlefrancophone" 
sessionmanagement="Yes" 
clientmanagement="Yes" 
sessiontimeout = "#CreateTimeSpan(0, 0, 30, 0)#" 
setclientcookies="YES"> 


<cflock scope="SESSION" type="EXCLUSIVE" timeout="30"> 
<CFSET session.choixutilisateur = 0> 
<cflock>
et c'est cette variable qui ne tient pas sur certains postes.

Quelqu'un peut-il m'aider??
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2010, 06h52   #2
djtadpole
Futur Membre du Club
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 19
Points : 19
Simple précaution, est-ce que tu as d'autres endroit dans ton site où tu définis un cfapplication et surtout avec un autre nom ?
djtadpole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2010, 08h31   #3
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Par défaut oui

Citation:
Envoyé par djtadpole Voir le message
Simple précaution, est-ce que tu as d'autres endroit dans ton site où tu définis un cfapplication et surtout avec un autre nom ?
oui il y en a un à la racine avec un autre name de cfappication et un autre dans un autre répertoire aussi avec un nom de cfapplication différent.

pour ce test je reste dans mon repertoire avec un Application.cfm propre pour les pages de ce répertoire.
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 08h04   #4
jowo
Membre Expert
 
Homme Fabio
Développeur Java
Inscription : octobre 2002
Messages : 1 358
Détails du profil
Informations personnelles :
Nom : Homme Fabio
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 1 358
Points : 1 905
Points : 1 905
Envoyer un message via Skype™ à jowo
Bonjour,

Est-ce une bonne pratique d'avoir plusieurs cfapplication pour une même application?

Je ne le pense pas surtout si chaque cfapplication génère son propre identificateur de session.

En général, un cookie est envoyé par domaine. Il est possible, à tester, qu'une cfapplication "écrase" le cookie de l'autre.

Voici un scénario à vérifier:

Navigateur ============> CFAppl1
Navigateur <== Cookie1 === CFAppl1
Navigateur === Cookie1 ==> CFAppl2 (ne reconnait pas l'ID, génère un nouveau)
Navigateur <== Cookie2 === CFAppl2
Navigateur === Cookie2 ==> CFAppl1 (on a perdu la session Cookie1)
__________________
Bien le bonjour chez vous
Jowo
jowo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 08h39   #5
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Merci pour votre info.

Peut-etre bien que cela soit le probleme vu le schema des direction que vous avez fait, mais je ne suis pas absolument convaincu.
Je viens de regrouper tout dans le meme fichier Application.cfm.
J'attends de voir les retours car je ne peux pas tester étant donné que seulement certains postes seulement perdaient la session et je ne sais pas lesquels.

Je vous tiens au courant
Encore merci
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 11h16   #6
djtadpole
Futur Membre du Club
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 19
Points : 19
Petite explication sur le cfapplication :
le cfapplication est, comme son nom l'indique, les informations sur l'application.

Si 2 cfapplication ne porte pas le même nom, le système le voit comme 2 applications différentes.
Et donc 2 systemes de gestion de cache/session/... différentes.
(@niabal : je pense que ton probleme vient de là).

Pour ce qui est d'avoir plusieurs fichiers application.cfm (avec le même nom) dans des répertoires différents peut s'expliquer.
Exemple concret :
A la racine, votre fichier charge plein de données utiles pour le site.
Dans un autre répertoire, votre fichier charge moins de données (pour de l'ajax par exemple).
Cela permet une meilleure réactivité.

En espérant avoir aider.
djtadpole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 11h25   #7
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
ok merci pour cette précision.
je pensais qu'ajouter un Application.cfm dans un sous répertoire avec un nom de cfappication différent écrasait l'autre, celui qui est à la racine.

Là si je comprends bien, à la racine, j'ai mon Application.cfm avec la création du cfapplication et si je veux rajouter des données de base dans un sous-répertoire je peux rajouter un Application.cfm mais sans recréer un cfapplication différent mais en ajoutant mes variables de session.
est-ce juste??

ça me parait logique c'est vrai.
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 11h31   #8
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Donc si j'ai un sous site dans un répertoire qui se présente complètement différent au site principal, je ne peux pas créer un cffapplication différent pour séparer complètement le site de celui qui est à la racine??

exemple:
j'ai un site qui s'appelle bonjour.com avec des variable de session pour le login d'un compte utilisateur.
et j'ai un autre site (sous-site à bonjour.com) qui s'appelle salut.com et qui est redirigé directement sur le répertoire du sous site. J'ai aussi des variables de session pour le login de l'utilisateur. Je devrais alors utiliser le meme nom que le premier cfapplication mais créer des variables de session avec des noms différents??
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 13h56   #9
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Après vérification cela ne fonctionne toujours pas.
Je n'ai plus qu'un cfappication pour tout le site et un des postes PC testé ne garde pas ces sessions, snif.

J'étais sûr que c'était une bonne solution mais on vient de me prouver le contraire. Je ne dois pas être tout seul à avoir le même problème tout de même...
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2010, 16h42   #10
niabal
Invité de passage
 
beda kelu
Inscription : août 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : beda kelu

Informations forums :
Inscription : août 2010
Messages : 7
Points : 0
Points : 0
Y at-il moyen de faire affiche le nom de cfapplication qu'il prend en compte lors de l'affichage de la page pour comparer si ce nom correspond au nom donné dans Application.cfm??
niabal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 00h18   #11
djtadpole
Futur Membre du Club
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 19
Points : 19
Pour le application.cfm :
il faut 1 fichier par site.
pour plus de détails, regarde la doc (elle est simple mais elle est bien).

Pour les informations de l'application, tu as les variables d'application en dumpant application.
<cfdump var="#application#">

Pour les variables de session :
peux-tu me faire parvenir par MP la définition de ton cfapplication
et le manière dont tu définies tes variables de sessions ?
djtadpole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 09h49   #12
jowo
Membre Expert
 
Homme Fabio
Développeur Java
Inscription : octobre 2002
Messages : 1 358
Détails du profil
Informations personnelles :
Nom : Homme Fabio
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 1 358
Points : 1 905
Points : 1 905
Envoyer un message via Skype™ à jowo
Citation:
Envoyé par niabal Voir le message
Y at-il moyen de faire affiche le nom de cfapplication qu'il prend en compte lors de l'affichage de la page pour comparer si ce nom correspond au nom donné dans Application.cfm??
Il existe les variables réservées:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Server.ColdFusion.ProductName 
Server.ColdFusion.ProductVersion 
Server.ColdFusion.ProductLevel  
Server.ColdFusion.SerialNumber  
Server.ColdFusion.SupportedLocales 
Server.ColdFusion.AppServer 
Server.ColdFusion.Expiration 
Server.ColdFusion.RootDir 
Server.OS.Name  
Server.OS.AdditionalInformation  
Server.OS.Version  
Server.OS.BuildNumber

Application.ApplicationName 
Session.CFID 
Session.CFToken 
Session.URLToken
Pour que chacun puisse aider, il serait préférable que la publication du contenu de cfapplication soit publique.
__________________
Bien le bonjour chez vous
Jowo
jowo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 10h23   #13
djtadpole
Futur Membre du Club
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 19
Points : 19
Par défaut J'ai nettoyer les logins et mdp

Code :
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
<cfsilent>

<CFAPPLICATION name="tobele"
  sessionmanagement="Yes"
  clientmanagement="Yes"
  sessiontimeout = "#CreateTimeSpan(0, 0, 30, 0)#"
  setclientcookies="YES">



<cfif not isdefined('application.tobelDSN')>
       <cflock scope="APPLICATION" type="EXCLUSIVE" timeout="5">
               <cfset application.tobelDSN = "XXX">
               <cfset application.tobelUser = "XXX">
               <cfset application.tobelPassword = "XXX">
       </cflock>
</cfif>

<cflock scope="APPLICATION" type="EXCLUSIVE" timeout="5">
       <cfset tobelDSN = application.tobelDSN>
       <cfset tobelUser = application.tobelUser>
       <cfset tobelPassword = application.tobelPassword>
</cflock>


<!--- variable formulaire --->
<CFIF not isDefined('session.aeroport')>
   <cflock scope="SESSION" type="EXCLUSIVE" timeout="30">

     <CFSET session.choixutilisateur = 0>
     <CFSET session.aeroport = "">
     <CFSET session.pays = "">
     <CFSET session.contact = "">
     <CFSET session.fonction = "">
     <CFSET session.email = "">
     <CFSET session.telephone = "">
     <CFSET session.nbrepistes = 1>
     <CFSET session.qfu1A = "">
     <CFSET session.qfu1B = "">
     <CFSET session.longueurpiste1 = "">
     <CFSET session.hectare = "">
     <CFSET session.mouvement = "">
     <CFSET session.passagers = "">
     <CFSET session.aeronefs_commerciaux = 0>
     <CFSET session.aeronefs_prive = 0>
     <CFSET session.helicopteres = 0>
     <CFSET session.avaiationmilitaire_jets = 0>
     <CFSET session.aviationmilitaire_porteur = 0>
     <CFSET session.helicopteres_militaires = 0>
     <CFSET session.controlesession = 0>

   </cflock>
</cfif>
<!--- variable formulaire --->

</cfsilent>
Rapidement, ce que j'en pense :
- pas la peine de mettre le cfsilent ou alors apres le cfapplication (il vaut mieux d'ailleurs le mettre sur la premiere ligne)
- en plus des cfset, je déclarerai les variables avec des cfparam.
djtadpole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2010, 10h47   #14
jowo
Membre Expert
 
Homme Fabio
Développeur Java
Inscription : octobre 2002
Messages : 1 358
Détails du profil
Informations personnelles :
Nom : Homme Fabio
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2002
Messages : 1 358
Points : 1 905
Points : 1 905
Envoyer un message via Skype™ à jowo
Il faudrait utiliser le pattern Double-Check même s'il est contesté.
Code :
1
2
3
4
5
6
7
8
9
10
<cfif not isdefined('application.tobelDSN')>
       <cflock scope="APPLICATION" type="EXCLUSIVE" timeout="5">
               <cfif not isdefined('application.tobelDSN')>
                  <cfset application.tobelDSN = "XXX">
                  <cfset application.tobelUser = "XXX">
                  <cfset application.tobelPassword = "XXX">
              </cfif>
       </cflock>
</cfif>
Code :
1
2
3
4
5
6
7
<!--- Un type READ suffit. --->
<cflock scope="APPLICATION" type="READ" timeout="5">
       <cfset variables.tobelDSN = application.tobelDSN>
       <cfset variables.tobelUser = application.tobelUser>
       <cfset variables.tobelPassword = application.tobelPassword>
</cflock>
Pour les variables de session, je préfère les regrouper sous un STRUCTURE
Code :
1
2
3
4
5
6
7
8
9
10
11
<CFIF not isDefined('session.aeroportData')>
   <cflock scope="SESSION" type="EXCLUSIVE" timeout="30">
     <cfset data = StructNew()>
     <CFSET data.choixutilisateur = 0>
     <CFSET data.aeroport = "">
     ....
     <CFSET session.controlesession = 0>
     <cfset sesion.aeroportData = data>
   </cflock>
</cfif>
__________________
Bien le bonjour chez vous
Jowo
jowo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web