cs_FRH
Messages postés22Date d'inscriptionmercredi 28 mai 2003StatutMembreDernière intervention 1 juin 2010
-
26 janv. 2004 à 09:36
cs_FRH
Messages postés22Date d'inscriptionmercredi 28 mai 2003StatutMembreDerniè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
cs_FRH
Messages postés22Date d'inscriptionmercredi 28 mai 2003StatutMembreDerniè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
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 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> ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 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.
cs_FRH
Messages postés22Date d'inscriptionmercredi 28 mai 2003StatutMembreDerniè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