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 :

comment faire pour offrir à chaque utilisateur une session ?


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut comment faire pour offrir à chaque utilisateur une session ?
    bonjour

    je ss entrin de developper un site en ASP , et je veu bien faire une session pour chaque utilisateur , j'ai cherché sur le forum et j'ai trouvé ce code :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <%@  language="VBSCRIPT" codepage="1252" %>
    <%Option explicit %>
     
    <%
    ' on declare la variable de stockage de la chaine de connexion
    Dim provider
    provider = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\Inetpub\wwwroot\bd3.mdb;"
    ' on declare le recordset
    Dim rs
     
    ' on verifie en debut de page si des données arrivent du formulaire
    If len(request.Form)>0 then
        ' on instancie le recordset
        Set rs = server.CreateObject("ADODB.Recordset")
            ' on remplis le recordset
            rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 1, 1
            ' si le recordset est plein
            if not rs.Eof then
                ' on effecte la variable de session avec l'id de lutilisateur
                Session("id") = rs("id")
            ' sinon
            else
                Response.Write("Indentifiant incorrect")
            end if
            rs.close
        Set rs = nothing
    end if
    %>
    <html>
    <head>
        <title>page de test</title>
    </head>
    <body>
        <%
        ' Si l'internaute n'est pas authentifié on lui présente l'interface d'authentification
        If len(Session("id")) = 0 then %>
            <form id="frm" name="frm" method="post" action="">
                <input type="text" id="UserName" name="UserName" />
                <input type="password" id="pwd" name="pwd" />
                <input type="submit" id="action" name="action" />
            </form>
        <%
        ' Sinon on affiche la fiche de l'utilisateur
        else
            ' on instancie le recordset
            Set rs = server.CreateObject("ADODB.Recordset")
                ' on remplis le recordset
                rs.open "select * from table1 where id = " & Session("id"), provider, 1, 1
                ' si le recordset est plein on affiche son contenu
                if not rs.Eof then
    		        response.write "nb champs = " & rs.fields.count & "<br>" 
    		        response.Write("<table>"  & vbcrlf)
    		        for i= 0 to rs.fields.count-1 
    			        response.write ("<th>" & rs.fields(i).name & "&nbsp;</th>" & vbcrlf)
    		        next 
    		        while not rs.eof 
    			        response.Write("<tr onMouseOver='changebgcolor(this)' onMouseOut='resetbgcolor(this)'>" & vbcrlf)
    			        for i= 0 to rs.fields.count-1 
    				        response.write ("<td>" & rs.fields(i).value & "&nbsp;</td>" & vbcrlf)
    			        next 
    			        response.Write("<tr>" & vbcrlf)
    			        rs.movenext 
    		        wend
    		        response.Write("</table>" & vbcrlf)
                ' sinon
                else
                    Response.Write("Pas de données pour cet identifiant")
                end if
                rs.close
            Set rs = nothing
        End if
        %>
    </body>
    </html>
    j'ai voulé le tester , mai lors de soumission de la requette le massage suivant aparai ; le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Erreur de compilation Microsoft VBScript error '800a0401' 
     
    Fin d'instruction attendue 
     
    /iisHelp/common/500-100.asp, line 11 
     
    Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
    --------------------------------------------------------------------------^
    Microsoft OLE DB Provider for ODBC Drivers error '80040e21' 
     
    Ce pilote ODBC ne prend pas en charge les propriétés demandées. 
     
    /id.asp, line 16
    j'espere que il y en a qui peuvent d'aidé , j'atten vos reponces, merci d'avance ,

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

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

    Le message d'erreur que tu obtient est en deux parties, seule la deuxième concerne ton developpement, la premiere vient d'un bug de la page 500-100.asp de windows XP.

    Ce pilote ODBC ne prend pas en charge les propriétés demandées.

    /id.asp, line 16
    Les options que tu spécifie à la ligne :
    rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 1, 1
    Semblent mauvaises.
    Tente peut-être plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 0, 1

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    merci roro06 pour ta reponce ,

    j'ai essayé ce que tu ma indiqué , mai j'ai tjrs le meme probleme ,

    je me demande si il y a un lien entre ce que je veu faire ( session pour chaque utilisateur) et le fichier GLOBAL.asa , j'ai trouvé dans le tutoriel de asp mai , j'ai pa compris son utilité , voila

    merci

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    As-tu fait un response.Write de tes variables ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Response.write "User = " & Request.Form("UserName") & "<br>"
    Response.write "Pwd = " & Request.Form("pwd") & "<br>"

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    A priori, rien a voir avec le global.asa

    toujours ligne 16 ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    merci roro06

    mai dans le tutoriel j'ai trouvé que le fichier global.asa qui gere les sessions des utilisateurs , et j'ai pas de fichier global.asa dans le repertoire racine de mon cite , c'est pour ça que j'ai pencé que c'est la cause de la faute , voila

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Points : 112
    Points
    112
    Par défaut
    Pour moi non plus ton souci n'a rien a voir avec le global.asa.
    Perso je ne l'utilise jamais, ça ne m'empêche pas de pouvoir créer des connexions, d'avoir toutes les variables session que je souhaite, d'avoir une sessionID par utilisateur.

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where nom = '" & Request.Form("UserName") & "'
    Ce genre de chose ne plait pas du tout, j'écrirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where nom LIKE '" & Request.Form("UserName") & "'
    Puisqu'il s'agit d'une chaine de caractère. mais ça n'a rien à voir avec ton erreur.

    Tu peux nous copier / coller ta chaine de connexion ? J'ai comme un doute.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    bonjour , merci StephM_asp

    j'ai modifié ma requette , merci pour la remarque , tu a totalement raison

    je vai vous mettre le code que j'ai fai j'espere que tu va m'aidé :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    <%@  language="VBSCRIPT" codepage="1252" %>
    <%Option explicit %>
     
    <%
    ' on declare la variable de stockage de la chaine de connexion
    Dim provider
    provider = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\Inetpub\wwwroot\bd3.mdb;"
    ' on declare le recordset
    Dim rs
     
    ' on verifie en debut de page si des données arrivent du formulaire
    If len(request.Form)>0 then
        ' on instancie le recordset
        Set rs = server.CreateObject("ADODB.Recordset")
            ' on remplis le recordset
            rs.open "select id from table1 where nom  like '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 1, 1
            ' si le recordset est plein
            if not rs.Eof then
                ' on effecte la variable de session avec l'id de lutilisateur
                Session("id") = rs("id")
            ' sinon
            else
                Response.Write("Indentifiant incorrect")
            end if
            rs.close
        Set rs = nothing
    end if
    %>
    <html>
    <head>
        <title>page de test</title>
    </head>
    <body>
        <%
        ' Si l'internaute n'est pas authentifié on lui présente l'interface d'authentification
        If len(Session("id")) = 0 then %>
            <form id="frm" name="frm" method="post" action="">
                <input type="text" id="UserName" name="UserName" />
                <input type="password" id="pwd" name="pwd" />
                <input type="submit" id="action" name="action" />
            </form>
        <%
        ' Sinon on affiche la fiche de l'utilisateur
        else
            ' on instancie le recordset
            Set rs = server.CreateObject("ADODB.Recordset")
                ' on remplis le recordset
                rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 0, 1
                ' si le recordset est plein on affiche son contenu
                if not rs.Eof then
    		        response.write "nb champs = " & rs.fields.count & "<br>" 
    		        response.Write("<table>"  & vbcrlf)
    		        for i= 0 to rs.fields.count-1 
    			        response.write ("<th>" & rs.fields(i).name & "&nbsp;</th>" & vbcrlf)
    		        next 
    		        while not rs.eof 
    			        response.Write("<tr onMouseOver='changebgcolor(this)' onMouseOut='resetbgcolor(this)'>" & vbcrlf)
    			        for i= 0 to rs.fields.count-1 
    				        response.write ("<td>" & rs.fields(i).value & "&nbsp;</td>" & vbcrlf)
    			        next 
    			        response.Write("<tr>" & vbcrlf)
    			        rs.movenext 
    		        wend
    		        response.Write("</table>" & vbcrlf)
                ' sinon
                else
                    Response.Write("Pas de données pour cet identifiant")
                end if
                rs.close
            Set rs = nothing
        End if
        %>
    </body>
    </html>
    voila , j'attend vos reponce , mieur salutation

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    re StephM_asp

    si vous voulez bien me mettre un code source que je puisse demarrer ,
    voila
    merci

  10. #10
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Citation Envoyé par univermina Voir le message
    re StephM_asp

    si vous voulez bien me mettre un code source que je puisse demarrer ,
    voila
    merci
    Ca veut dire quoi ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Points : 112
    Points
    112
    Par défaut
    Re,

    Et avec 3,3 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 3, 3
    ++

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    re StephM_asp

    j'ai fai la modification , et j'ai eu cette erreur:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

    [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère.

    /code.asp, line 16

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Points : 112
    Points
    112
    Par défaut
    Re,

    Et qu'est-ce qu'il y a ligne 16 de code.asp ?
    Ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     rs.open "select id from table1 where nom  like '" & Request.Form("UserName") & "' and pass = '" & Request.Form("pwd") & "';", provider, 3, 3
    Si oui, elle contiennent quoi tes variables à ce moment là ?

    ++

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    re StephM_asp

    c bon j'ai corrigé cette erreur , j'ai pa fai la converssion en entié du mot de passe voici la requette apres chongement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     rs.open "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = " & cint(Request.Form("pwd")) & ";", provider, 3, 3
    mais maintenant , j'ai un autre petit probleme , mais la portion du programme la où je entres les données ( users name , passe word )

    directe il execuse la portion suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    else
                    Response.Write("Pas de données pour cet identifiant")
                end if
    voila

  15. #15
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu veux essayer ça et nous donner la réponse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    txtSQL = "select id from table1 where nom = '" & Request.Form("UserName") & "' and pass = " & cint(Request.Form("pwd")) & ";"
    Response.Write txtSQL
    Response.End

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    salut pc75 merci de m'avoir répondu

    peut tu me dire , ou je met ces intructions ?, apres avoir entré le users name et le mot de passe ?

    merci

    [EDIT] Correction orthographe.

    http://club.developpez.com/regles/#L4.3

  17. #17
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Juste avant le rs.open ......

  18. #18
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    re pc 75

    voila ce que j'ai comme resultat

    select id from table1 where nom = '' and pass = 0;
    requete vide , puisque lors de l'exécution , j'ai pas les inputs pour faire entrer les données , ça ne s'affiche pas , je ne sais pas pourquoi

    ++

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

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

    A la première exécution de ta page, il est normal que tes champs soient vides, donc la requête t'envoie un recordset vide.

    Qu'as-tu maintenant comme message d'erreur ?

    Quant à la condition
    If len(request.Form)>0
    Je ne suis pas sûr. len s'applique normalement aux chaines de caractères.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Points : 112
    Points
    112
    Par défaut
    Salut,

    Citation Envoyé par roro06 Voir le message
    Je ne suis pas sûr. len s'applique normalement aux chaines de caractères.
    Si c'est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    len(request.form) fonctionne.
    Et un petit LIKE pour la route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select id from table1 where nom = '' and pass = 0; 
    devient
    select id from table1 where nom like '' and pass = 0;

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/12/2014, 10h07
  2. Réponses: 11
    Dernier message: 19/04/2013, 23h35
  3. Réponses: 13
    Dernier message: 29/07/2009, 20h25
  4. Réponses: 6
    Dernier message: 29/05/2008, 15h02
  5. Réponses: 1
    Dernier message: 29/04/2006, 22h08

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