Avatar billede babyworm Nybegynder
02. april 2004 - 18:21 Der er 9 kommentarer og
1 løsning

Hjælp til konstruktion af login

Hejsa,

Jeg er igang med at lave et login som skal kunne gøre nogle forskellige ting:

Den skal, når man logger ind, skrive til databasen tidspunktet man er logget ind på, og automatisk opdatere databasen med hvor mange gange man er logget ind. Det kunne jeg forestille mig at man gjorde sådan at der stod et tal i databasen, som den hentede ud og plussede med 1.. hvorefter den opdaterer databasen igen.

Er der en der kan hjælpe med det?

min login.asp

<!-- #include file="conn.asp" -->
<%
If Request.Form("Action") = "Login" Then

    strUID = Trim(Replace(Request.Form("Username"),"'",""))
    strPWD = Trim(Replace(Request.Form("Password"),"'",""))

    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        openConn()

        strSQL = "SELECT UserID, Redirect FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = connection.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
           
            intUID = rs("UserID")
        Else
            strERR = "Du blev ikke godkendt af systemet"
        End If

        If Len(intUID) Then

            Session("UserID") = intUID

            strSQL = "INSERT INTO Users ("
               
            strSQL = strSQL & "LastLogin) "

            strSQL = strSQL & "values ("
            strSQL = strSQL & "'" & Now & "')"

            connection.Execute(strSQL)


            Response.Redirect(rs("Redirect"))
        End If

        closeConn()

    Else
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        strErr = "<font color=red>" & strErr & "</font>"
    End If
End If
%>
<html>
<head>
<title>Login script</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form method="POST" action="login.asp">
  <h1>Angiv brugernavn og adgangskode</h2>
  <table border="0">
    <tr>
      <td width="75">Brugernavn:</td>
      <td><input type="text" name="Username" size="20" class="input"></td>
    </tr>
    <tr>
      <td width="75">Adgangskode:</td>
      <td><input type="password" name="Password" size="20" class="input"></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" value="Login" name="Action" class="knap"></td>
    </tr>
  </table>
  <p><%=strErr%></p>
</form>
</body>
</html>
Avatar billede eagleeye Praktikant
02. april 2004 - 18:48 #1
Du kan tilføje noget inde i then delen af denne if-sætning:

        If Not (rs.BOF Or rs.EOF) Then
           
            intUID = rs("UserID")
        Else
            strERR = "Du blev ikke godkendt af systemet"
        End If


Sådan her, da det er her folk er logget ind. Antager du har en kolonne som hedder antalLogin:

        If Not (rs.BOF Or rs.EOF) Then
           
            intUID = rs("UserID")
            strSQL = "update Users set antalLogin = antalLogin + 1 where UserID = " & intUID
            connection.Execute(strSQL)
        Else
            strERR = "Du blev ikke godkendt af systemet"
        End If
Avatar billede babyworm Nybegynder
02. april 2004 - 19:24 #2
Jeg får en fejlmeddelse..
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Feltet "Users.Username" kan ikke indeholde en Null-værdi, fordi egenskaben Required til dette felt er angivet til True. Indtast en værdi i dette felt.
/workspace/login/login.asp, line 30
Avatar billede babyworm Nybegynder
02. april 2004 - 19:25 #3
min kode ser sådan her ud:

<!-- #include file="conn.asp" -->
<%
If Request.Form("Action") = "Login" Then

    strUID = Trim(Replace(Request.Form("Username"),"'",""))
    strPWD = Trim(Replace(Request.Form("Password"),"'",""))

    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        openConn()

        strSQL = "SELECT UserID, Redirect, LastLogin, LoginTimes FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = connection.Execute(strSQL)

            If Not (rs.BOF Or rs.EOF) Then
           
                intUID = rs("UserID")
                strSQL = "update Users set LoginTimes = LoginTimes + 1 where UserID = " & intUID

            strSQL = "INSERT INTO Users ("
               
            strSQL = strSQL & "LastLogin) "

            strSQL = strSQL & "values ("
            strSQL = strSQL & "'" & Now & "')"

                connection.Execute(strSQL)
            Else
                strERR = "Du blev ikke godkendt af systemet"
            End If

        If Len(intUID) Then

            Session("UserID") = intUI

            Response.Redirect(rs("Redirect"))
        End If

        closeConn()

    Else
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        strErr = "<font color=red>" & strErr & "</font>"
    End If
End If
%>
<html>
<head>
<title>Login script</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form method="POST" action="login.asp">
  <h1>Angiv brugernavn og adgangskode</h2>
  <table border="0">
    <tr>
      <td width="75">Brugernavn:</td>
      <td><input type="text" name="Username" size="20" class="input"></td>
    </tr>
    <tr>
      <td width="75">Adgangskode:</td>
      <td><input type="password" name="Password" size="20" class="input"></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" value="Login" name="Action" class="knap"></td>
    </tr>
  </table>
  <p><%=strErr%></p>
</form>
</body>
</html>
Avatar billede eagleeye Praktikant
02. april 2004 - 19:27 #4
dette:

            If Not (rs.BOF Or rs.EOF) Then
           
                intUID = rs("UserID")
                strSQL = "update Users set LoginTimes = LoginTimes + 1 where UserID = " & intUID

            strSQL = "INSERT INTO Users ("
               
            strSQL = strSQL & "LastLogin) "

            strSQL = strSQL & "values ("
            strSQL = strSQL & "'" & Now & "')"

                connection.Execute(strSQL)


skal rettes til dette ellers vil den ikke lave update SQL'en:

            If Not (rs.BOF Or rs.EOF) Then
           
                intUID = rs("UserID")
                strSQL = "update Users set LoginTimes = LoginTimes + 1 where UserID = " & intUID
                connection.Execute(strSQL)

            strSQL = "INSERT INTO Users ("
               
            strSQL = strSQL & "LastLogin) "

            strSQL = strSQL & "values ("
            strSQL = strSQL & "'" & Now & "')"

                connection.Execute(strSQL)
Avatar billede babyworm Nybegynder
02. april 2004 - 19:31 #5
kommer stadig med fejlmeddelse..

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Feltet "Users.Username" kan ikke indeholde en Null-værdi, fordi egenskaben Required til dette felt er angivet til True. Indtast en værdi i dette felt.
/workspace/login/login.asp, line 30



Min kode:

<!-- #include file="conn.asp" -->
<%
If Request.Form("Action") = "Login" Then

    strUID = Trim(Replace(Request.Form("Username"),"'",""))
    strPWD = Trim(Replace(Request.Form("Password"),"'",""))

    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        openConn()

        strSQL = "SELECT UserID, Redirect, LastLogin, LoginTimes FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = connection.Execute(strSQL)

            If Not (rs.BOF Or rs.EOF) Then
           
                    intUID = rs("UserID")
                    strSQL = "update Users set LoginTimes = LoginTimes + 1 where UserID = " & intUID
                    connection.Execute(strSQL)

                    strSQL = "INSERT INTO Users ("
                    strSQL = strSQL & "LastLogin) "

                    strSQL = strSQL & "values ("
                    strSQL = strSQL & "'" & Now & "')"

                    connection.Execute(strSQL)
            Else
                strERR = "Du blev ikke godkendt af systemet"
            End If

        If Len(intUID) Then

            Session("UserID") = intUID

            Response.Redirect(rs("Redirect"))
        End If

        closeConn()

    Else
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        strErr = "<font color=red>" & strErr & "</font>"
    End If
End If
%>
<html>
<head>
<title>Login script</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form method="POST" action="login.asp">
  <h1>Angiv brugernavn og adgangskode</h2>
  <table border="0">
    <tr>
      <td width="75">Brugernavn:</td>
      <td><input type="text" name="Username" size="20" class="input"></td>
    </tr>
    <tr>
      <td width="75">Adgangskode:</td>
      <td><input type="password" name="Password" size="20" class="input"></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" value="Login" name="Action" class="knap"></td>
    </tr>
  </table>
  <p><%=strErr%></p>
</form>
</body>
</html>
Avatar billede eagleeye Praktikant
02. april 2004 - 19:32 #6
Skal det med last login ikke også være en Update, eller vil du indsætte en ny post?
Avatar billede babyworm Nybegynder
02. april 2004 - 19:33 #7
Jo...
Avatar billede eagleeye Praktikant
02. april 2004 - 19:37 #8
så kan du slå det sammen i samme SQL sætning:


            If Not (rs.BOF Or rs.EOF) Then
           
                    intUID = rs("UserID")
                    strSQL = "update Users set LoginTimes = LoginTimes + 1, LastLogin=Now() where UserID = " & intUID
                    connection.Execute(strSQL)
            Else
                strERR = "Du blev ikke godkendt af systemet"
            End If
Avatar billede babyworm Nybegynder
02. april 2004 - 19:51 #9
Tusinde tak.. gider du ligge svar???
Avatar billede eagleeye Praktikant
02. april 2004 - 19:52 #10
ok, ja det  gør jeg da :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester