|
| HJælp mit login ?? hvad er forkert Fra : JonZ |
Dato : 21-05-05 11:48 |
|
Når jeg prøver at logge på, bliver jeg sendt til fejlsiden uanset
hvad, nogen der kan se hvad der er galt. ??
Default.asp
-----------
<html>
<title>tid og dato</title>
<head>
</head>
<body>
<form method="post" action="login.asp">
Login: <input type="text" name="bruger"><br>
Kodeord: <input type="password" name="pass"><br>
<input type="submit" value="Hjælp jeg vil ind">
</form>
</body>
</html>
Login.asp
------------------------
<html>
<title>Tejk login</title>
<head>
</head>
<body>
<%
' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("databaser/navne.mdb")
Conn.Open DSN
dim DSN
dim strSQL
dim rs
On Error Resume Next
'' SQL forespørgsel
strSQL = "Select from personer Where BrugerNavn = '" &
Request.Form("bruger") &"'"
'' Udfør forespørgsel
Set rs = Conn.Execute(strSQL)
' Løkken starter
Do
If rs.EOF Then
Session("login") = "NEJ"
Session.Timeout = 30
Response.Redirect "fejl.asp"
else
if Request.Form("bruger") = rs("Brugernavn") and
Request.Form("pass") = rs("password") Then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = rs("brugernavn")
Response.Redirect "loggetin.asp"
else
Session("login") = "NEJ"
Session.Timeout = 30
Response.Redirect "fejl.asp"
end if
end if
' Næste Record i rs
rs.MoveNext
' Køre løkke
Loop While Not rs.EOF
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>
</dl>
</body>
</html>
Håber der er nogen der kan hjælpe mig.
Hilsen JonZ
--- Hvis 1 synkronsvømmer drukner, drunker de så allesammen--
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
David Trasbo (21-05-2005)
| Kommentar Fra : David Trasbo |
Dato : 21-05-05 12:00 |
|
JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
> Når jeg prøver at logge på, bliver jeg sendt til fejlsiden uanset
> hvad, nogen der kan se hvad der er galt. ??
Nej.
> Default.asp
<Snip>En masse ubrugelig kode</Snip>
> Login.asp
<Snip>En masse ubrugelig kode</Snip>
> Håber der er nogen der kan hjælpe mig.
Hvis jeg var dig ville jeg bruge et script der fungerer, som det på
Hjemmesideskolen:
< http://hjemmesideskolen.dk/scripts/asppass/default.asp>
Jeg vil anbefale dig at lade være med at fylde dit indlæg med
ubrugelig kode. Det er der ikke mange der kan overskue.
Jeg vil anbefale dig at læse: < http://usenet.dk/netikette>.
--
David Trasbo.
Vær en god Usenet bruger. Læs < http://usenet.dk/netikette>.
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
JonZ (21-05-2005)
| Kommentar Fra : JonZ |
Dato : 21-05-05 12:02 |
|
David Trasbo wrote in dk.edb.internet.webdesign.serverside.asp:
> JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
> > Når jeg prøver at logge på, bliver jeg sendt til fejlsiden uanset
> > hvad, nogen der kan se hvad der er galt. ??
>
> Nej.
>
>
Hvis du ikke kan hjlæpe snip så snip bare lade være at svare snip.
men tak for linket
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
David Trasbo (21-05-2005)
| Kommentar Fra : David Trasbo |
Dato : 21-05-05 12:22 |
|
> Hvis du ikke kan hjlæpe snip så snip bare lade være at svare snip.
[-&. Ikke forstået. Mente du "Hvis du ikke kan hjælpe så lad bare være med
at svare"?
> men tak for linket
Selv tak. Her kommer endnu et:
< http://usenet.dk/netikette/citatteknik.html#klip>. Læs under "Hvad gør
man så".
"<Snip>" er almindeligt brugt på Usenet og bruges til at fortælle hvad der
er klippet væk for overskuelighedens skyld.
--
David Trasbo.
Vær en god Usenet bruger. Læs < http://usenet.dk/netikette>.
(Nedenfor: Autosignatur fra min Usenet udbyder.)
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
JonZ (21-05-2005)
| Kommentar Fra : JonZ |
Dato : 21-05-05 20:14 |
|
David Trasbo wrote in dk.edb.internet.webdesign.serverside.asp:
> > Hvis du ikke kan hjlæpe snip så snip bare lade være at svare snip.
>
> [-&. Ikke forstået. Mente du "Hvis du ikke kan hjælpe så lad bare være med
> at svare"?
>
> > men tak for linket
>
> Selv tak. Her kommer endnu et:
> < http://usenet.dk/netikette/citatteknik.html#klip>. Læs under "Hvad gør
> man så".
>
> "<Snip>" er almindeligt brugt på Usenet og bruges til at fortælle hvad der
> er klippet væk for overskuelighedens skyld.
>
> --
> David Trasbo.
> Vær en god Usenet bruger. Læs < http://usenet.dk/netikette>.
> (Nedenfor: Autosignatur fra min Usenet udbyder.)
>
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials
Ja jeg mente at hvis du ikke kan hjælpe, så lad være med at svare, måske kan
du, men gider ikke, og fair nok, så lad være med at svare, jeg er total ny på
asp, tænkte at det måske var nemmere at hjælpe hvis jeg postede hele koden.
Hvad <snip> betyder kunne ikke bekymre mig mindre, jeg kommer med et indlæg
og forventer i det mindste at blive svaret på en pæn måde. Måske du selv
skulle følge dette link:
Vær en god Usenet bruger. Læs < http://usenet.dk/netikette>.
<snip>
Med venlig hilsen JonZ
</snip>
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Tomasz Otap (21-05-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 21-05-05 18:44 |
|
David Trasbo wrote:
> <Snip>En masse ubrugelig kode</Snip>
>
> Hvis jeg var dig ville jeg bruge et script der fungerer, som det på
> Hjemmesideskolen:
> < http://hjemmesideskolen.dk/scripts/asppass/default.asp>
>
Godt svaret, med en snært af arrogance, kryddet med en del overlegenhed.
Lader man smagen dvæle ved, er der også tydelige undertoner af
ignorans. Ovenstående script, der ellers er glimrende, indeholder også
en SQL-injection sårbarhed, som påpeget af Carsten Bang i tråden
"Sikkerhedshul i loginscripts" (begrænset under Access, mere seriøs
under MSSQL).
> Jeg vil anbefale dig at læse: < http://usenet.dk/netikette>.
Ja, der er en masse gode råd, som f.eks.:
"Overordnet handler det nok om at holde sig til netiketten og om at
skrive i et høfligt sprog som man kan være bekendt overfor fremmede,
ligesindede mennesker."
t
| |
NoMoreSpam (21-05-2005)
| Kommentar Fra : NoMoreSpam |
Dato : 21-05-05 16:48 |
|
"JonZ"
> Do
>
> If rs.EOF Then
>
> Session("login") = "NEJ"
>
> Session.Timeout = 30
>
> Response.Redirect "fejl.asp"
>
> else
>
> if Request.Form("bruger") = rs("Brugernavn") and
> Request.Form("pass") = rs("password") Then
>
> Session("login") = "JA"
>
> Session.Timeout = 30
>
> Session("username") = rs("brugernavn")
>
> Response.Redirect "loggetin.asp"
>
> else
>
> Session("login") = "NEJ"
>
> Session.Timeout = 30
>
> Response.Redirect "fejl.asp"
>
> end if
>
> end if
>
>
> ' Næste Record i rs
>
> rs.MoveNext
>
>
> ' Køre løkke
>
> Loop While Not rs.EOF
Du looper igennem et recordset og undersøger om hver post
er et hit. Hvis du får et hit midt i recordsettet vil du aldrig opdage
det fordi du løber samtlige igennem Det eneste du kan finde ud af
er om sidste record er et hit.
Inden du gennemløber recordsettet laver du en variabel der hedder
bolFundet og sætter den til false. Når du så får et hit ændrer du den
til true og når recordsettet er gennemløbet undersøgen du værdien af
bolFundet.
--
Med venlig hilsen
Tom Jensen
Læs mere om databaser og asp her:
http://www.FFSoft.dk
| |
Casper Bang (21-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 21-05-05 17:16 |
|
[SNIP kode]
Her er et forslag, som bygger på din kode - men som nok er mere praktisk :)
Du er velkommen til at spørge nærmere om det.
dim DSN, strSQL, rs
' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("databaser/navne.mdb")
Conn.Open DSN
'' SQL forespørgsel
strSQL = "Select password, brugernavn from personer Where BrugerNavn = '" &
replace(Request.Form("bruger"), "'", "'') &"'"
'' Udfør forespørgsel
Set rs = Conn.Execute(strSQL)
'her tester vi om password er korrekt:
if Request.Form("pass") = rs("password") Then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = rs("brugernavn")
Response.Redirect "loggetin.asp"
else 'forkert password
Session("login") = "NEJ"
Session.Timeout = 30
Response.Redirect "fejl.asp"
end if
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
| |
Christian Kragh (21-05-2005)
| Kommentar Fra : Christian Kragh |
Dato : 21-05-05 20:43 |
|
Hej.
Ifølge din kode er der et sikkerhedshul som måske lige skal overvejes...
Du finder alle felter fra databasen med brugernavnet fra forrige side.
Du erstatter alle ping (') med ingen ting...
Det mangler du også at gøre i forespørgelsen på koden...
> if Request.Form("pass") = rs("password") Then
> if replace(Request.Form("pass"), "'", "'') = rs("password") Then
Christian
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (21-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 21-05-05 21:15 |
|
> Ifølge din kode er der et sikkerhedshul som måske lige skal overvejes...
Njaa, både og...
> Du finder alle felter fra databasen med brugernavnet fra forrige side.
>
> Du erstatter alle ping (') med ingen ting...
Ikke helt - jeg havde skrevet " efterfulgt af to gange '
Det ville give en kompilerfejl, så et sikkerhedshul ville der ikke komme ud
af det; koden kan ikke køres som den ser ud.
Den linie skulle have været:
strSQL = "Select password, brugernavn from personer Where BrugerNavn = '" &
replace(Request.Form("bruger"), "'", "''") &"'"
Altså et stk. " efter det der stod der i forvejen.
> Det mangler du også at gøre i forespørgelsen på koden...
>> if Request.Form("pass") = rs("password") Then
>
>> if replace(Request.Form("pass"), "'", "'') = rs("password") Then
Det har du til gengæld ikke ret i Christian.
' betyder ikke noget når det er ASP der sammenligner det, hvilket det er når
det er trukket ud af databasen og ned i et recordset.
Det er kun i SQL sætninger som bliver sendt til databasen at ' kan give
problemer.
Men tak fordi du pointerede fejlen :) Håber JonZ læser det, før han får for
mange problemer med det.
~Casper
| |
Tomasz Otap (21-05-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 21-05-05 21:09 |
|
Casper Bang wrote:
> '' Udfør forespørgsel
> Set rs = Conn.Execute(strSQL)
>
> 'her tester vi om password er korrekt:
> if Request.Form("pass") = rs("password") Then
> Session("login") = "JA"
> Session.Timeout = 30
> Session("username") = rs("brugernavn")
> Response.Redirect "loggetin.asp"
> else 'forkert password
> Session("login") = "NEJ"
> Session.Timeout = 30
> Response.Redirect "fejl.asp"
> end if
Godt eksempel - men man bør også lige teste for, hvorvidt rs returnerer
noget overhovedet (dvs. om BrugerNavn findes i databasen). Ellers løber
man hurtigt ind i en ASP-fejl, hvis rs er tom og man spørger efter
rs("password"). Man kan lige sætte en "if not rs.eof then..." ind i koden.
Og hvis man alligevel checker for det, kan man måske overlade hele
arbejdet til SQL-serveren og blot skrive:
--------
' SQL forespørgsel
strSQL = "select password,brugernavn from personer where BrugerNavn='"&_
replace(Request.Form("bruger"),"'","''") & "' and password='" &_
replace(Request.Form("pass"),"'","''") & "'"
Set rs = Conn.Execute(strSQL)
' her tester vi, om brugeren findes
if not rs.eof then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = rs("brugernavn")
Response.Redirect "loggetin.asp"
else 'ingen bruger med denne login & password
Session("login") = "NEJ"
Session.Timeout = 30
Response.Redirect "fejl.asp"
end if
---------
t
| |
Casper Bang (21-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 21-05-05 22:41 |
|
> Godt eksempel - men man bør også lige teste for, hvorvidt rs returnerer
> noget overhovedet (dvs. om BrugerNavn findes i databasen). Ellers løber
> man hurtigt ind i en ASP-fejl, hvis rs er tom og man spørger efter
> rs("password"). Man kan lige sætte en "if not rs.eof then..." ind i koden.
Ja, det havde jeg helt glemt.
> Og hvis man alligevel checker for det, kan man måske overlade hele
> arbejdet til SQL-serveren og blot skrive:
Ulempen ved den metode, er at man ikke kan se om det er kodeordet eller
brugernavnet der er forkert...
I nogle systemer er det rart at kunne udskrive fejlmeddelelsen afhængigt af
dette - men i det JonZ lagde op til, har du helt ret. Jeg ville dog i det
tilfælde nok lave en COUNT på tabellen i stedet; at returnere brugernavn og
password er lige gyldigt når de data ikke bruges til noget.
Noget andet jeg havde overset (hold da op noget slamkode jeg kom frem med i
det eksempel), er at databasenconnectionen ikke bliver lukket. Du redirekter
før den lukkes.
Kan løses med:
if not rs.eof then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = rs("brugernavn")
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.Redirect "loggetin.asp"
else 'ingen bruger med denne login & password
Session("login") = "NEJ"
Session.Timeout = 30
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
Response.Redirect "fejl.asp"
end if
JonZ, hvis du vil have eksempel genskrevet med de forskellige ændringer vi
har lavet undervejs, må du lige sige til.
| |
JonZ (22-05-2005)
| Kommentar Fra : JonZ |
Dato : 22-05-05 00:36 |
|
>
> JonZ, hvis du vil have eksempel genskrevet med de forskellige ændringer vi
> har lavet undervejs, må du lige sige til.
>
>
Hej Casper
Det vil jeg meget gerne, hvis du kan skrive hvor i scriptet det med "replace"
skal stå vil det være fint. For jeg har selv prøvet det, men det virker ikke
rigtig.
Og mange tak for hjælpen.
Hej JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (22-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 22-05-05 11:58 |
|
> Det vil jeg meget gerne, hvis du kan skrive hvor i scriptet det med
> "replace"
> skal stå vil det være fint. For jeg har selv prøvet det, men det virker
> ikke
> rigtig.
Jeg har prøvet at samle de forslag vi har snakket om i tråden.
Det her burde virke - hvis det ikke gør må du lige sige til.
dim DSN, strSQL, rs, RedirectPage
' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("databaser/navne.mdb")
Conn.Open DSN
' SQL forespørgsel
strSQL = "Select COUNT(brugernavn) from personer Where BrugerNavn = '" &
replace(Request.Form("bruger"), "'", "''") &"' AND PassWord = '" &
replace(Request.Form("pass"), "'", "''") &"'"
' Udfør forespørgsel
Set rs = Conn.Execute(strSQL)
'her tester vi om password er korrekt:
if rs(0) = 1 Then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = Request.Form("bruger")
RedirectPage = "loggetin.asp"
else 'forkert password ELLER brugernavn
Session("login") = "NEJ"
Session.Timeout = 30
RedirectPage = "fejl.asp"
end if
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
'efter databaseforbindelsen er lukket ned, videresender vi til den korrekte
side.
response.redirect(RedirectPage)
> Og mange tak for hjælpen.
Det var så lidt. Vi kom i gang med nogle forskellige interessante emner.
| |
JonZ (22-05-2005)
| Kommentar Fra : JonZ |
Dato : 22-05-05 14:45 |
|
Casper Bang wrote in dk.edb.internet.webdesign.serverside.asp:
> > Det vil jeg meget gerne, hvis du kan skrive hvor i scriptet det med
> > "replace"
> > skal stå vil det være fint. For jeg har selv prøvet det, men det virker
> > ikke
> > rigtig.
>
> Jeg har prøvet at samle de forslag vi har snakket om i tråden.
> Det her burde virke - hvis det ikke gør må du lige sige til.
>
> dim DSN, strSQL, rs, RedirectPage
>
> ' Databaseforbindelse
> Set Conn = Server.CreateObject("ADODB.Connection")
> DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
> DSN = DSN & "DBQ=" & Server.MapPath("databaser/navne.mdb")
> Conn.Open DSN
>
> ' SQL forespørgsel
> strSQL = "Select COUNT(brugernavn) from personer Where BrugerNavn = '" &
> replace(Request.Form("bruger"), "'", "''") &"' AND PassWord = '" &
> replace(Request.Form("pass"), "'", "''") &"'"
>
> ' Udfør forespørgsel
> Set rs = Conn.Execute(strSQL)
>
> 'her tester vi om password er korrekt:
> if rs(0) = 1 Then
> Session("login") = "JA"
> Session.Timeout = 30
> Session("username") = Request.Form("bruger")
> RedirectPage = "loggetin.asp"
> else 'forkert password ELLER brugernavn
> Session("login") = "NEJ"
> Session.Timeout = 30
> RedirectPage = "fejl.asp"
> end if
>
> rs.Close
> Set rs = Nothing
> Conn.Close
> Set Conn = Nothing
>
> 'efter databaseforbindelsen er lukket ned, videresender vi til den korrekte
> side.
> response.redirect(RedirectPage)
>
>
>
>
> > Og mange tak for hjælpen.
>
> Det var så lidt. Vi kom i gang med nogle forskellige interessante emner.
>
>
Tusind tak for hjælpen Casper.
Jeg ved ikke hvad der er galt. Nu kan jeg godt logge ind, men det er lige
meget hvad jeg skriver og om jeg skriver noget overhovedet.
Jeg har ændret min database til at hedder "medlemmer" i stedet for "personer"
det har jeg ændret i det du skrev, men ?¿
Men tak for hjælpen alligevel. Det ender nok med at jeg må "låne" et script
fra en, men det var nu sjovere at lave et selv.
Hilsen
JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (22-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 22-05-05 15:21 |
|
> Jeg ved ikke hvad der er galt. Nu kan jeg godt logge ind, men det er lige
> meget hvad jeg skriver og om jeg skriver noget overhovedet.
Skriver noget hvor? I login-felterne, eller...?
> Jeg har ændret min database til at hedder "medlemmer" i stedet for
> "personer"
> det har jeg ændret i det du skrev, men ?¿
Burde ikke have betydning
> Men tak for hjælpen alligevel. Det ender nok med at jeg må "låne" et
> script
> fra en, men det var nu sjovere at lave et selv.
Naa, giv ikke op endnu - forklar dit problem lidt nærmere, og vi skal nok
finde problemet.
| |
JonZ (22-05-2005)
| Kommentar Fra : JonZ |
Dato : 22-05-05 15:26 |
|
Casper Bang wrote in dk.edb.internet.webdesign.serverside.asp:
> > Jeg ved ikke hvad der er galt. Nu kan jeg godt logge ind, men det er lige
> > meget hvad jeg skriver og om jeg skriver noget overhovedet.
>
> Skriver noget hvor? I login-felterne, eller...?
>
>
> > Jeg har ændret min database til at hedder "medlemmer" i stedet for
> > "personer"
> > det har jeg ændret i det du skrev, men ?¿
>
> Burde ikke have betydning
>
>
> > Men tak for hjælpen alligevel. Det ender nok med at jeg må "låne" et
> > script
> > fra en, men det var nu sjovere at lave et selv.
>
> Naa, giv ikke op endnu - forklar dit problem lidt nærmere, og vi skal nok
> finde problemet.
>
Der hvor man skal skrive sit brugernavn og sit password, hvis jeg skriver
noget der, bliver man logget ind uanset hvad man skriver, jeg kan ikke selv
lige se hvad der er galt, har kigget på om det er fordi der er byttet om på
brugernavn og pass, men det er der ikke.
Hilsen
Jonz
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (22-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 22-05-05 21:17 |
|
> Der hvor man skal skrive sit brugernavn og sit password, hvis jeg skriver
> noget der, bliver man logget ind uanset hvad man skriver, jeg kan ikke
> selv
> lige se hvad der er galt, har kigget på om det er fordi der er byttet om
> på
> brugernavn og pass, men det er der ikke.
Det kræver nok lidt fejlfinding.
Efter linien:
Set rs = Conn.Execute(strSQL)
indsætter du følgende linier:
response.write(rs(0))
response.end
prøv nu at logge ind først med forkert bruger/password, derefter med et
korrekt. Skriv her hvad du fik af resultat de to gange.
| |
JonZ (22-05-2005)
| Kommentar Fra : JonZ |
Dato : 22-05-05 21:40 |
|
> Det kræver nok lidt fejlfinding.
> Efter linien:
> Set rs = Conn.Execute(strSQL)
> indsætter du følgende linier:
> response.write(rs(0))
> response.end
>
> prøv nu at logge ind først med forkert bruger/password, derefter med et
> korrekt. Skriv her hvad du fik af resultat de to gange.
>
>
Hej Casper
Ved forkert login fik jeg
0
Ved rigtig login fik jeg
1
Gad nok vide hvad det siger dig
Ved ikke om jeg har sagt at jeg er pæn ny i dette .asp
Hilsen JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (23-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 23-05-05 07:16 |
|
> Ved forkert login fik jeg
>
> 0
>
> Ved rigtig login fik jeg
>
> 1
>
> Gad nok vide hvad det siger dig
> Ved ikke om jeg har sagt at jeg er pæn ny i dette .asp
Prøv at fjerne de to nye linier du indsatte før, og ændre linien:
if rs(0) = 1 Then
til:
if rs(0)*1 = 1 Then
Jeg er ikke sikker på om det hjælper, men har en anelse om at din ASP-side
ikke opdager at det er et tal din database leverer tilbage.
Skriv om det hjælper :)
Hvis det ikke gør, så prøv at smide HELE sidens kode herind. Det kunne være
din redirect som er forkert, men det kan jeg nemmest se når jeg har det hele
:)
| |
JonZ (23-05-2005)
| Kommentar Fra : JonZ |
Dato : 23-05-05 09:38 |
|
> Jeg er ikke sikker på om det hjælper, men har en anelse om at din ASP-side
> ikke opdager at det er et tal din database leverer tilbage.
> Skriv om det hjælper :)
> Hvis det ikke gør, så prøv at smide HELE sidens kode herind. Det kunne være
> din redirect som er forkert, men det kan jeg nemmest se når jeg har det hele
> :)
>
>
Hej Casper
Det gav det samme resultat, jeg prøver at smide hele koden.
<%
dim DSN
dim strSQL
dim rs
dim RedirectPage
' Databaseforbindelse
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("databaser/navne.mdb")
Conn.Open DSN
' SQL forespørgsel
strSQL = "Select count (brugernavn) from medlemmer Where BrugerNavn = '" &
replace(Request.Form("UserID"), "'", "''") &"' AND PassWord = '" &
replace(Request.Form("pass"), "'", "''") &"'"
' Udfør forespørgsel
Set rs = Conn.Execute(strSQL)
'response.write(rs(0))
'response.end
'password tjek
if rs(0)*1 = 1 Then
Session("login") = "JA"
Session.Timeout = 30
Session("username") = Request.Form("UserID")
RedirectPage = "loggetind.asp"
else
'forkert password ELLER brugernavn
Session("login") = "NEJ"
Session.Timeout = 30
RedirectPage = "fejl.asp"
end if
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
'efter databaseforbindelsen er lukket ned, videresender vi til den korrekte
side.
response.redirect "loggetind.asp"
%>
Hilsen JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Tomasz Otap (23-05-2005)
| Kommentar Fra : Tomasz Otap |
Dato : 23-05-05 10:06 |
|
JonZ wrote:
> 'efter databaseforbindelsen er lukket ned, videresender vi til den korrekte
> side.
> response.redirect "loggetind.asp"
> %>
Aha - nemt nok, når man ser det hele. Bemærk, at du i sidste linie
sender folk videre til loggetind.asp uanset hvad resultatet blev. Den
sidste linie skal naturligvis være:
response.redirect RedirectPage
t
| |
JonZ (23-05-2005)
| Kommentar Fra : JonZ |
Dato : 23-05-05 11:15 |
|
Tomasz Otap wrote in dk.edb.internet.webdesign.serverside.asp:
> JonZ wrote:
> > 'efter databaseforbindelsen er lukket ned, videresender vi til den korrekte
> > side.
> > response.redirect "loggetind.asp"
> > %>
>
> Aha - nemt nok, når man ser det hele. Bemærk, at du i sidste linie
> sender folk videre til loggetind.asp uanset hvad resultatet blev. Den
> sidste linie skal naturligvis være:
>
> response.redirect RedirectPage
>
> t
Tusind tak Thomas
Nu virker det. )
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
JonZ (23-05-2005)
| Kommentar Fra : JonZ |
Dato : 23-05-05 11:18 |
|
Hej Casper
Ham Thomas kunne lige se hvad der var galt, det kunne du sikkert også hvis du
havde set hele koden, men du skal have mange tusind tak for hjælpen. Var godt
nok lige ved at opgive.
Et sidste spørgsmål, jeg kunne godt tænke mig at blive lidt bedre til det her
asp, har du et godt råd eller måske en bog du selv synes kunne være mig en
hjælp?
Men igen tusind tak for hjælpen.
Hilsen JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Casper Bang (23-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 23-05-05 15:09 |
|
> Ham Thomas kunne lige se hvad der var galt, det kunne du sikkert også hvis
> du
> havde set hele koden, men du skal have mange tusind tak for hjælpen. Var
> godt
> nok lige ved at opgive.
:)
> Et sidste spørgsmål, jeg kunne godt tænke mig at blive lidt bedre til det
> her
> asp, har du et godt råd eller måske en bog du selv synes kunne være mig en
> hjælp?
Mit bedste råd er at blive ved med at lege med det.
Nu vil jeg tro at du efterhånden har lidt styr på databaseadgang - leg mere
med det. Begynd eventuelt at programmere en gæstebog - bare for at lære det.
Af bøger... jeg er ikke den store tilhænger af bøger; fortrækker at finde et
eksempel eller to på nettet. Men mon ikke en anden i gruppen kender nogle
gode bøger.
Held og lykke med det.
| |
Jens Gyldenkærne Cla~ (22-05-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 22-05-05 08:00 |
|
Casper Bang skrev:
> Ulempen ved den metode, er at man ikke kan se om det er
> kodeordet eller brugernavnet der er forkert...
Det er sikkerhedsmæssigt en god ting. Hvis en hacker kan se at han
har fat i et gyldigt brugernavn, vil han have langt lettere ved at
skaffe sig adgang (nu skal der kun gættes én kode).
Jeg kender ingen større sites der afslører om det er brugernavnet
eller adgangskoden man har tastet forkert.
> Jeg ville dog i det tilfælde nok lave en COUNT på
> tabellen i stedet; at returnere brugernavn og password er lige
> gyldigt når de data ikke bruges til noget.
Jeg er enig i at der ikke er nogen grund til at hente brugernavn og
adgangskode i select-listen, hvis man bruger dem i where-listen.
Jeg henter til gengæld ofte andre oplysninger - fx brugerens navn,
brugerID eller evt. rettigheder med den forespørgsel der tjekker
login. Disse oplysninger er ofte rare at have fast tilgængelige (fx
i en sessionvariabel), og de kan lige så godt hentes med det samme.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Casper Bang (22-05-2005)
| Kommentar Fra : Casper Bang |
Dato : 22-05-05 11:52 |
|
> Jeg kender ingen større sites der afslører om det er brugernavnet
> eller adgangskoden man har tastet forkert.
Nej, det kan du godt have ret i :)
| |
Jens Gyldenkærne Cla~ (22-05-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 22-05-05 22:42 |
|
JonZ skrev:
> Gad nok vide hvad det siger dig
Vis os hellere hvilken sql-sætning du kører (prøv at skrive strSQL
i stedet for rs(0))
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
JonZ (23-05-2005)
| Kommentar Fra : JonZ |
Dato : 23-05-05 09:41 |
|
> Vis os hellere hvilken sql-sætning du kører (prøv at skrive strSQL
> i stedet for rs(0))
Hvis jeg gør det får jeg følgende fejl:
Typer stemmer ikke overens: '[string: "Select count (bruger"]'
/eget/login.asp, line 23
Hilsen JonZ
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jens Gyldenkærne Cla~ (23-05-2005)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 23-05-05 10:31 |
|
JonZ skrev:
> Hvis jeg gør det får jeg følgende fejl:
> Typer stemmer ikke overens: '[string: "Select count (bruger"]'
> /eget/login.asp, line 23
Udskriv sql-sætningen før du kører den (du kan evt. bare udkommentere
linjen her:
' Set rs = Conn.Execute(strSQL)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
|
|