Avatar billede Slettet bruger
14. marts 2006 - 23:07 Der er 21 kommentarer og
1 løsning

Login check fejl (ASP/Js) Hjælp

Jeg får en HTTP fejl siden kan ikke vises når jeg kører mit login igennem dette script... det er hovedsageligt sket efter jeg prøvede at bruge Replace for at lukke sikkerhedshullet...

Nogen der kan spore fejlen?

---------------------------------------------

<% @language=javascript %>
<%

navn = Replace(Request.Form("brugernavn"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

conn = Server.CreateObject("ADODB.Connection");
DBPath = "DBQ=" + Server.mappath("db/database.mdb");
conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; " + DBPath);

rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );

if(!rs.EOF){
Response.Cookies("bruger")= rs.fields('BRUGERNAVN');
Response.Redirect("login_ok.asp");
  } else{
    Response.Redirect("login_fejl.asp");
    }



conn.Close();   
%>
Avatar billede keysersoze Ekspert
14. marts 2006 - 23:51 #1
funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"

så får du nok en fejlbesked du kan bruge til noget
Avatar billede Slettet bruger
15. marts 2006 - 00:24 #2
Microsoft JScript runtime error '800a138f'

Object expected

/login_check.asp, line 4


---

Der?
Avatar billede busschou Praktikant
15. marts 2006 - 06:59 #3
Nu kører du JScript, og jeg er kun vandt til VBScript, hos mig ville jeg skulle sætte "Set" ind følgende steder
set conn = Server.CreateObject("ADODB.Connection");
set rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );
Avatar billede eagleeye Praktikant
15. marts 2006 - 08:05 #4
Prøv at sætte var foran conn = ...:

var conn = Server.CreateObject("ADODB.Connection");
Avatar billede eagleeye Praktikant
15. marts 2006 - 08:11 #5
hmm der står det er i line 4 der er fejl.. Hvilken er linie 4?
Avatar billede keysersoze Ekspert
15. marts 2006 - 09:13 #6
javascript-asp er bestemt heller ikke min stærke - men mon ikke det har noget at gøre med at man i javascript skal replace således;

Request.Form("brugernavn").Replace("'", "''")

... eller deromkring.
Avatar billede softspot Forsker
15. marts 2006 - 10:15 #7
Når du så er kommet videre med den fejlrettelse (den med replace), får du nok fejl i denne linie:

rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );

Her skal du nok overveje at bruge + i stedet for & til at flette brugernavn og adgangskode ind i sql-sætningen:

rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='" + navn + "' AND PASSWORD='" + pass + "'" );

Det er i øvrigt god skik at erklære alle variable med var foran, samt at afslutte sine sætninger med semikolon (;) - også selvom det måske ikke er strengt nødvendigt...
Avatar billede eagleeye Praktikant
15. marts 2006 - 13:59 #8
omkring jscript:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/29f83a2c-48c5-49e2-9ae0-7371d2cda2ff.asp

Ja det er replace som driller det skal så være med små bogstaver:

navn = Request.Form("brugernavn").replace("'", "''");

og hvis ikke den vil lave replace på request.form så prøv:
navn = Request.Form("brugernavn");
navn = navn.replace("'", "''");
Avatar billede Slettet bruger
15. marts 2006 - 14:10 #9
Har prøvet det sidste... begge løsninger giver en js fejl...

Microsoft JScript runtime error '800a01b6'

Object doesn't support this property or method

/login_check.asp, line 5


---------------------------------

Måske jeg burde få det her spørgsmål over i javascript katagorien istedet? :-D
Avatar billede Slettet bruger
15. marts 2006 - 14:12 #10
busschou > Kigger vi på det øverste eksempel på siden så er linie 4 ved:
navn = Replace(Request.Form("brugernavn"), "'", "''")
Avatar billede Slettet bruger
15. marts 2006 - 14:14 #11
Måske man kunne benytte nået andet end replace? Grunden til jeg fik det ind i min kode i første omgang var fordi der var tegn ved login siden ' '1-&& ...nået som kunne snyde databasen og give brugeren lov til at logge ind. Det sikkerhedshul vil jeg gerne have lukket.
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:29 #12
Så prøv lige at rette de to linier til:

navn = string Request.Form("brugernavn");
navn = navn.replace("'", "''");
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:29 #13
doh det skal være med stort S og () omkring..:

navn = String(Request.Form("navn"));
navn = navn.replace("'","''");
Avatar billede Slettet bruger
15. marts 2006 - 16:34 #14
Ok nu kommer der nået længere nede....

fejlen:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.

/login_check.asp, line 14




Koden:


<% @language=javascript %>      <- Linie1
<%

navn = String(Request.Form("brugernavn"));
navn = navn.replace("'","''");

pass = String(Request.Form("password"));
pass = pass.replace("'","''");

conn = Server.CreateObject("ADODB.Connection");
DBPath = "DBQ=" + Server.mappath("db/database.mdb");
conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; " + DBPath);

rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );

if(!rs.EOF){
Response.Cookies("bruger")= rs.fields('BRUGERNAVN');
Response.Redirect("login_ok.asp");
  } else{
    Response.Redirect("login_fejl.asp");
    }



conn.Close();   
%>
Avatar billede softspot Forsker
15. marts 2006 - 16:35 #15
se 15/03-2006 10:15:44
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:38 #16
Ja og husk klammer omkring [] PASSWORD kolonnen da password er det reserveret ord i access:

rs = conn.Execute("SELECT BRUGERNAVN, [PASSWORD], NAVN FROM BRUGER WHERE BRUGERNAVN='"+navn+"' AND [PASSWORD]='"+pass+"'" );
Avatar billede Slettet bruger
15. marts 2006 - 16:51 #17
Tak for det så virkede det.... :-)

Eagleeye du får point for at løse replace problemet...

Ved ik om det er muligt at give softspot lidt af pointsne? Ellers skal han ihf. også ha tak.....

;-)
Avatar billede softspot Forsker
15. marts 2006 - 16:54 #18
Bare giv dem til eagleeye, det var trods alt ham der var mest aktiv i denne tråd. Tak for buddet alligevel og velbekomme :)
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:54 #19
Ja vi laver bare begge et svar, så kan du dele point imellem os som du ønsker :)
Avatar billede softspot Forsker
15. marts 2006 - 16:56 #20
...du har i øvrigt en syntaksfejl i ordet "pointsne" - point er både ental og flertal og skal derfor ikke ændres... ;D
Avatar billede Slettet bruger
15. marts 2006 - 17:00 #21
Softspot > Hahaha det har du sku vist ret i.. nå men endnu engang tak ihvertfald, dejligt det virker..! :-D
Avatar billede Slettet bruger
15. marts 2006 - 17:01 #22
Og der var points. ;-)
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