Public Function fcVerifierSession(ByVal Operation As String, ByVal Droits As
String) As Boolean
'Déclaration de mes variables
Dim SQLSelect As String
Dim SES_IP As String
Dim myCookie As New HttpCookieCollection
Dim myRequest As HttpRequest
Dim myResponse As HttpResponse
'Récupération de l'adresse IP de l'utilisateur
SES_IP = myRequest.ServerVariables("REMOTE_ADDR") < ========== ligne de
l'erreur
'Test si le cookie PUPSessionID est vide
If myCookie.Item("PUPSessionID").Value = "" Then
'Initialisation de la requète de sélection
'servant à la récupération de l'identifiant
'en fonction de l'adresse IP courante
SQLSelect = "SELECT max(SES_ID) as SES_ID FROM SESSION_SES WHERE SES_IP = '"
& SES_IP & "' AND ETS_CODE = 'OK'"
Try
Dim mConn As New SqlConnection(ConnexionString) 'Initialisation de mon objet
SqlConnexion
mConn.Open() 'Ouverture de mon objet SqlConnection
Dim mCmd As New SqlCommand(SQLSelect, mConn) 'Initialisation de mon objet
SqlCommand
Dim mDr As SqlDataReader 'Initialisation de mon objet SqlDataReader
mDr = mCmd.ExecuteReader(CommandBehavior.SingleRow) 'Execution de ma requète
mDr.Read() 'Lecture de l'enregistrement suivant
If Not mDr.IsDBNull(0) Then 'test si le résultat de ma requète est null
m_SES_ID = DataBinder.Eval(mDr, "SES_ID") 'Affectation du résultat de la
requète à ma variable m_SES_ID
Else 'Si le résultat de ma requète est null
EstValide = False 'Initialisation de ma variable EstValide à False
RaisonInvalide = "Pas de session valide. Veuillez vous reconnecter."
'Définition du message d'erreur
fcVerifierSession = False 'Echec de la méthode fcverifierSession
Exit Function 'Sortie de la méthode
End If
mDr.Close() 'Fermeture de mon objet SqlDataReader
mConn.Close() 'Fermeture de mon objet SqlConnection
Catch ex As Exception 'Gestion des exceptions
EstValide = False 'Initialisation de ma variable EstValide à False
RaisonInvalide = "Pas de session valide. Veuillez vous reconnecter."
'Définition du message d'erreur
fcVerifierSession = False 'Echec de la méthode fcverifierSession
Exit Function 'Sortie de la méthode
End Try
Else 'Si mon cookie PUPSessionID n'est pas vide
m_SES_ID = myCookie.Item("PUPSessionID").Value 'Affectation de la valeur de
mon cookie à ma variable m_SES_ID
End If
Dim strCmdText As String = "sp_VerifierSession" 'Appel de la procédure
stockée de vérification sp_VerifierSession
Dim mConnSP As New SqlConnection(ConnexionString) 'Initialisation de mon
objet SqlConnection
Dim mCmdSP As New SqlCommand(strCmdText, mConnSP) 'Initialisation de mon
objet SqlCommand
mCmdSP.CommandType = CommandType.StoredProcedure 'Définition du type de mon
objet SqlCommand
Dim mParam As SqlParameter 'Initialisation de mon objet SqlParameter
mParam = mCmdSP.Parameters.Add("@SessionID", SqlDbType.Int,
ParameterDirection.Input, m_SES_ID) 'Ajout du parametre d'entrée @SessionID
représentant l'identifiant de session
mParam = mCmdSP.Parameters.Add("@IP", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("REMOTE_ADDR")) 'Ajout de
mon parametre d'entrée @IP représentant l'adresse IP courante de l'utilisateur
mParam = mCmdSP.Parameters.Add("@UrlPage", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("SCRIPT_NAME")) 'Ajout de
mon parametre d'entrée @UrlPage représentant l'url de la page courante
mParam = mCmdSP.Parameters.Add("@Droits", SqlDbType.VarChar,
ParameterDirection.Input, Droits) 'Ajout du parametre d'entrée @Droits
représentant le type de droits de l'utilisateur courant
mParam = mCmdSP.Parameters.Add("@Application", SqlDbType.VarChar,
ParameterDirection.Input, Operation) 'Ajout du parametre d'entrée
@Application représentant l'opération sur laquelle doit s'effectuer la
vérification
mParam = mCmdSP.Parameters.Add("@Origine", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("HTTP_REFERER")) 'Ajout
du parametre d'entrée @Origine représentant la provenance de l'utilisateur
courant
Dim mReader As SqlDataReader 'Initialisation de mon objet SqlDataReader
mReader = mCmdSP.ExecuteReader(CommandBehavior.SingleRow) 'Execution de la
procédure stockée
mReader.Read() 'Lecture de l'enregistrement suivant
If CStr(DataBinder.Eval(mReader, "Etat")) = 1 Then 'Test si ma procedure
stockée retourne une erreur via la variable Etat
EstValide = False 'Initialisation de ma variable EstValide à False
RaisonInvalide = CStr(DataBinder.Eval(mReader, "MsgErreur")) 'Définition du
message d'erreur
fcVerifierSession = False 'Echec de la méthode fcverifierSession
Exit Function 'Sortie de la méthode
Else 'Si tout s'est déroulé correctement
gLogin = CStr(DataBinder.Eval(mReader, "Login")) 'Récupération et
affectation du login de l'utilisateur à la variable gLogin
gEmail = CStr(DataBinder.Eval(mReader, "Email")) 'Récupération et
affectation de l'email de l'utilisateur à la variable gEmail
gDroits = CStr(DataBinder.Eval(mReader, "Droits")) 'Récupération et
affectation des droits de l'utilisateur à la variable gDroits
fcVerifierSession = True 'Reussite de la méthode fcVerifierSession
End If
mConnSP.Dispose() 'Fermeture et vidage de mon objet SqlConnection
End Function
'Fonction de vérification des droits pour le module menu
Public Function fcVerifierDroitsModuleMenu(ByVal ModuleMenu As String) As
Boolean
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zazar
Bonjour,
Un petit problème, je suis en train de créer un namespace pour ma boite et
Attention : je ne sais pas si c'est clair pour vous mais un namespace et une bibliothèques de classes sont deux concepts différents. "Créer un namespace pour quelqu'un" ne veut rien dire.
j'ai une erreur du type :
La référence d'objet n'est pas définie à une instance d'un objet
Et je ne comprend pas pourquoi j'ai cette erreur
Voici mon code source :
-> Le nom de la classe est mal choisi : si j'ai bien compris cette classe Session sera utilisée dans des applications web, et il y aura vraisemblablement des conflits de nom
-> A première vue, ce code gère une session en stockant les informations dans une base de données : ASP.NET sait faire ça, il n'y a qu'à modifier le fichier web.config
-> vous déclarez un objet myRequest sans l'initialiser : vous ne pouvez donc pas l'utiliser (au passage, le compilateur C# aurait signalé l'erreur à la compilation). Pour l'initialiser, servez vous du membre static Current de la class HttpContext (ou HttpContextUtily, enfin un nom qui ressemble à ça).
--
Zazar
Bonjour,
Un petit problème, je suis en train de créer un namespace pour ma boite et
Attention : je ne sais pas si c'est clair pour vous mais un namespace et une
bibliothèques de classes sont deux concepts différents. "Créer un namespace
pour quelqu'un" ne veut rien dire.
j'ai une erreur du type :
La référence d'objet n'est pas définie à une instance d'un objet
Et je ne comprend pas pourquoi j'ai cette erreur
Voici mon code source :
-> Le nom de la classe est mal choisi : si j'ai bien compris cette classe
Session sera utilisée dans des applications web, et il y aura
vraisemblablement des conflits de nom
-> A première vue, ce code gère une session en stockant les informations
dans une base de données : ASP.NET sait faire ça, il n'y a qu'à modifier le
fichier web.config
-> vous déclarez un objet myRequest sans l'initialiser : vous ne pouvez donc
pas l'utiliser (au passage, le compilateur C# aurait signalé l'erreur à la
compilation). Pour l'initialiser, servez vous du membre static Current de la
class HttpContext (ou HttpContextUtily, enfin un nom qui ressemble à ça).
Un petit problème, je suis en train de créer un namespace pour ma boite et
Attention : je ne sais pas si c'est clair pour vous mais un namespace et une bibliothèques de classes sont deux concepts différents. "Créer un namespace pour quelqu'un" ne veut rien dire.
j'ai une erreur du type :
La référence d'objet n'est pas définie à une instance d'un objet
Et je ne comprend pas pourquoi j'ai cette erreur
Voici mon code source :
-> Le nom de la classe est mal choisi : si j'ai bien compris cette classe Session sera utilisée dans des applications web, et il y aura vraisemblablement des conflits de nom
-> A première vue, ce code gère une session en stockant les informations dans une base de données : ASP.NET sait faire ça, il n'y a qu'à modifier le fichier web.config
-> vous déclarez un objet myRequest sans l'initialiser : vous ne pouvez donc pas l'utiliser (au passage, le compilateur C# aurait signalé l'erreur à la compilation). Pour l'initialiser, servez vous du membre static Current de la class HttpContext (ou HttpContextUtily, enfin un nom qui ressemble à ça).