Avatar billede s0mmer Nybegynder
28. november 2008 - 13:56 Der er 3 kommentarer og
1 løsning

Simpelt loginscript

Hej eksperter,

Jeg har flg loginscript:


    If Request.Form("Login") = "true" Then
        set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open "Provider=SQLOLEDB;Data Source=xxx;Initial Catalog=xxx;User Id=xxxx;Password=xxx;"

        Set rs = CreateObject("ADODB.Recordset")
        strSQL = "SELECT * FROM customers WHERE (password = '" & Request.Form("txtPassword") & "') AND (email = '" & Request.Form("txtEmail") & "')"
        Set rs = Conn.Execute(strSQL)
       
        If Not (rs.BOF or rs.EOF) Then
            loginError = "Bruger findes!!!!!"

        Else
            loginError = "Bruger findes ikke"
        End If
   
        rs.close
        set rs = Nothing
        Conn.Close
        Set Conn = Nothing
    End if


Den vil ikke finde nogen bruger, så jeg skal lige være sikker på at det er rigtig kodet?
Avatar billede softspot Forsker
28. november 2008 - 14:04 #1
Det er en lidt farlig måde at checke for loginoplysninger, da du har åbnet for SQL-injections. Benyt hellere Command-objektet til at udføre din forespørgsel:

    If Request.Form("Login") = "true" Then
        set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open "Provider=SQLOLEDB;Data Source=xxx;Initial Catalog=xxx;User Id=xxxx;Password=xxx;"

        strSQL = "SELECT * FROM customers WHERE ([password] = ? AND email = ?)"

        set cmd = Server.CreateObject("ADODB.Command")
        set cmd.ActiveConnection = Conn
        cmd.CommandType = adCmdText
        cmd.CommandText = strSQL
        cmd.Parameters.Append cmd.CreateParameter("@password", adVarChar, adParamInput, 50, Request.Form("txtPassword"))
        cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, Request.Form("txtEmail"))
        Set rs = cmd.Execute()
       
        If Not rs.EOF Then
            loginError = "Bruger findes!!!!!"

        Else
            loginError = "Bruger findes ikke"
        End If
   
        rs.close
        set rs = Nothing
        Conn.Close
        Set Conn = Nothing
    End if

Du skal have flg. METADATA-element i toppen af din asp-fil:

<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4"  -->

Se i øvrigt min artikel vedr parameterisering (http://www.eksperten.dk/artikler/1250) for hjælp til at bruge Command-objektets basale funktioner.
Avatar billede s0mmer Nybegynder
01. december 2008 - 12:13 #2
softspot > perfekt :) send svar så får du points..
Avatar billede softspot Forsker
01. december 2008 - 12:17 #3
Velbekomme :)
Avatar billede softspot Forsker
08. december 2008 - 22:55 #4
Tak for point :)
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