Utiliser les variables de session

cs_FRH Messages postés 22 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 1 juin 2010 - 26 janv. 2004 à 09:36
cs_FRH Messages postés 22 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 1 juin 2010 - 16 févr. 2004 à 08:22
Je désire utiliser des variable de session pour loguer l'utilisateur.
Je déclare dans Application.cfm mes variables de session:
<cfapplication
name="CETEVIMSUD"
setclientcookies="Yes"
sessionmanagement="Yes"
sessiontimeout="#CreateTimeSpan(0,0,30,0)#"
>

<cflock scope="Session" timeout="10" type ="Exclusive">
<cfset session.mUserName = "">
<cfset session.mUserFullName = "">
<cfset session.mUserAuthorization = "">
</cflock>
Un formulaire connecter.cfm me permet d'entrer le login et le mot de passe, recherche dans une base de données. Si l'enregistrement est trouvé :
<cfquery name="MM_rsUser" datasource="cetevim">
SELECT ID, Nom,Prenom,login,Pwd,ID_Droit FROM TContact WHERE login='#FORM.txtlogin#' AND Pwd='#FORM.txtpwd#'
</cfquery>
<cfif MM_rsUser.RecordCount NEQ 0>
<cftry>
<cflock scope="session" timeout="10" type="exclusive">
<cfset session.mUserName=FORM.txtlogin>
<cfset Session.mUserAuthorization=MM_rsUser.ID_Droit[1]>
<cfset Session.mUserFullName = MM_rsUser.Prenom & " " & MM_rsUser.Nom>
<cfset Session.mUserID = MM_rsUser.ID>
</cflock>
<cfif IsDefined("URL.accessdenied") AND false>
<cfset MM_redirectLoginSuccess=URL.accessdenied>
</cfif>
<cflocation url="#MM_redirectLoginSuccess#" addtoken="No">
<cfcatch type="lock">
</cfcatch>
</cftry>
</cfif>

Dans accueil.cfm, j'affiche le contenu de mes variables:
<cfoutput>#Session.mUserName#</cfoutput>
ben la rien, c'est vide!
Pourquoi n'y a-t-il rien dans mes variables?
-----------------
PsychO

7 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
26 janv. 2004 à 13:32
... parce k'on ne fait po un CFLocation après un CFSET Session.toto !!...
Désolé, c'est Monsieur Cold fusion k'a dit ça !!
S.
0
cs_FRH Messages postés 22 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 1 juin 2010
27 janv. 2004 à 07:13
Comment dois-je faire alors pour que ca fonctionne?
Voici ce que je veux faire:
- les pages sont les mêmes que l'utilisateur soit logué ou non
(se sera par exemple toujours accueil.cfm pour la page d'accueil).
- des informations supplémentaires seront accessible selon le niveau de l'utilisateur
- la connection se fait par l'intermédiaire de la table client de la bd qui contient 3 champs : login, motdepasse et niveau.
- Lorsque quelqu'un se connecte, il affiche le formulaire connecter.cfm. Lorsqu'il valide, on affiche accueil.cfm avec le niveau adéquat.
-----------------
PsychO
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
27 janv. 2004 à 21:22
Par Javascript.
Essaie document.location.replace et un autre truc kom ça !!
S.
0
cs_bastoun Messages postés 164 Date d'inscription dimanche 1 octobre 2000 Statut Membre Dernière intervention 23 mars 2007 1
28 janv. 2004 à 22:06
Euh.. là je crois qu'il y a erreur..

gérer des variables de session et un cflocation sur la même page fonctionne, il me semble...
Par contre ce qu'il nest pas possible de faire est un cfcookie et cflocation sur une même page (c'est ça qui est indiqué par macromedia) --> le problème vient d'un écrasement d'entête http.

Par contre, il est possible de remplacer le cflocation par un cfheader (avec status 302)
<cfheader statuscode="302" statustext="Object Moved">
<cfheader name="location" value="#url#">

ou encore un meta refresh
et là le cfcookie fonctionne (pas besoin de script côté client donc..)

De plus le cflocation stoppe l'execution de la page (comme un cfabort), donc, je pense que c'est ça qui gène ton cfset session, car il est dans le cftry, qui ne se termine donc pas...
essaie juste en passant ton cflocation après ton </cftry> ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bastoun Messages postés 164 Date d'inscription dimanche 1 octobre 2000 Statut Membre Dernière intervention 23 mars 2007 1
28 janv. 2004 à 22:12
<CFHEADER NAME="Refresh" VALUE="0;
URL=http://www.example.com/mytemplate.cfm">
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
29 janv. 2004 à 13:17
Tout à fait d'accord avec toi, mais je préfére dire k'on ne peut po !! Sale réflexe de formateur ColdFusion (fô dire ke c'est ce ke ex-Allaire me disait de dire.. LOL !!)
Donc j'ai sorti la règle généralement appliquée, parce ke j'avais po le temps pour ces subtilités que tu as bien resumé !!
S.
0
cs_FRH Messages postés 22 Date d'inscription mercredi 28 mai 2003 Statut Membre Dernière intervention 1 juin 2010
16 févr. 2004 à 08:22
Merci à tous pour votre aide. J'ai enfin réussi à corriger mon problème.En fait, lorsque j'affichai APRES connexion une page visitée AVANT la connexion, la page affichée était celle placée dans le cache du navigateur. Il fallait donc placer la balse <cfheader name "Expires" value "#Now()#"> pour effacer ce cache et forcer le navigateur à recharger la page. Du coup, tout va bien.
-----------------
PsychO
0
Rejoignez-nous