/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvordan gør jeg det med SQL sætningen
Fra : Flemming Jensen


Dato : 29-09-02 11:46

Hej igen...

Jeg har en fejl i følgende kode, som jeg egentlig godt ved hvad er, men kan
ikke finde ud af hvordan jeg ellers kan skrive det:

strBrugernavn = Request.Form("hmm_brugernavn")
strPassword = Request.Form("hmm_password")

strBrugernavn = Replace( strBrugernavn, "'", "''")
strPassword = Replace( strPassword, "'", "''")


'Tjekker om feltene er tomme, og hvis de er så sender den brugeren tilbage
til den side han var ved
IF strBrugernavn = "" OR strPassword = "" THEN
response.redirect(request.querystring("hvorhenne"))
ELSE
END IF

strSQL = "Select * From Brugere Where Brugernavn = '"& strBrugernavn &"' AND
Password = '"& strPassword &"' "

Set rs = Conn.Execute(strSQL)

IF rs("Brugernavn") = strBrugernavn AND rs("Password") = strPassword THEN
Session("Login") = True
response.redirect(request.querystring("hvorhenne"))
ELSE
Session("Login") = False
response.redirect(request.querystring("hvorhenne"))
ELSE
END IF

Hvis felterne Brugernavn og Password er tomme(Bliver sendt fra en anden
side) så bliver brugeren bare sendt tilbage som intet var sket, hvilket også
er meningen, så det virker i hvert fald. Hvis brugeren så indtaster et
brugernavn og password som findes i databasen, logger den også på, som så
også virker, men hvis brugeren skriver noget i felterne som ikke findes i
databasen får jeg en fejl: Fejltype: (0x80020009) Undtagelse opstod. Som
henfører til linien:

IF rs("Brugernavn") = strBrugernavncheck AND rs("Password") =
strPasswordcheck THEN

Det er jo klart nok for rs("Brugernavn") er jo tom eller hvad nu man skal
sige. Altså hvis den ikke kan finde en bruger ved det givne brugernavn og
password kan den jo ikke sætte det = det indtastet. Der må være en måde
hvorpå den tjekker om den fandt noget i databasen der svarer til
strBrugernavn AND strPassword, og hvis den ikke gør så Response.Write("Fejl
i indtastning") eller bare request.querystring("hvorhenne"), hvor
hvorhenne=den sidste side man befandt sig på, før man prøvede at logge på.

Hvordan laver jeg det så sådan at hvis det indtastet ikke er fundet i
databasen, skal den bare skrive at brugeren ikke er fundet.?

Er min metode egentlig god nok, eller skal jeg gøre det på en anden måde?

1000-tak endnu en gang
__
Flemming Jensen



 
 
Jakob Andersen (29-09-2002)
Kommentar
Fra : Jakob Andersen


Dato : 29-09-02 11:59

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote

--
Jakob Andersen
> IF rs("Brugernavn") = strBrugernavn AND rs("Password") = strPassword THEN

Da du allerede i SQL sætningen har sammenlignet brugernavnet fra databasen
med det indtastede er der ingen grund til det, så du kan istedet blot bruge
følgende sætning som tjekker om der er returneret nogle poster overhovedet

If Not objRS.EOF Then
'Rigtigt brugernavn og password
Else
'Forkert brugernavn
End If

--
Jakob Andersen



Flemming Jensen (29-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 29-09-02 12:02

Jakob Andersen skrev

> Da du allerede i SQL sætningen har sammenlignet brugernavnet fra databasen
> med det indtastede er der ingen grund til det, så du kan istedet blot
bruge
> følgende sætning som tjekker om der er returneret nogle poster overhovedet
>
> If Not objRS.EOF Then
> 'Rigtigt brugernavn og password
> Else
> 'Forkert brugernavn
> End If

Lige hvad jeg tænkte på, kendte bare en denne funktion. Damn der er meget at
lære endnu! Du da du har fået min kode, er den så ikke sikker nok? Jeg
replacer jo ' med '' :D

__
Flemming Jensen



Flemming Jensen (29-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 29-09-02 12:31

Jakob Andersen skrev:

> If Not objRS.EOF Then
> 'Rigtigt brugernavn og password
> Else
> 'Forkert brugernavn
> End If

Mener du forresten ikke bare rs.EOF i stedet for objRS.EOF?



Jakob Andersen (29-09-2002)
Kommentar
Fra : Jakob Andersen


Dato : 29-09-02 12:35

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Mener du forresten ikke bare rs.EOF i stedet for objRS.EOF?

Jo undskyld. Jeg havde ikke lige set at du kaldte dit recordset for "rs".

--
Jakob Andersen



Flemming Jensen (29-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 29-09-02 12:42

Jakob Andersen skrev:

> Jo undskyld. Jeg havde ikke lige set at du kaldte dit recordset for "rs".

Kunne jo også godt selv regne det ud, men ville bare lige understrege det :)
Du svarede bare aldrig på om koden var sikker nok?

__
Flemming Jensen



Lars Hoffmann (29-09-2002)
Kommentar
Fra : Lars Hoffmann


Dato : 29-09-02 13:01

Flemming Jensen escribió / skrev

> Du svarede bare aldrig p† om koden var sikker nok?

Selve koden er, alt andet lige, så sikker som den kan være


Jakob Andersen (29-09-2002)
Kommentar
Fra : Jakob Andersen


Dato : 29-09-02 13:31

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Du svarede bare aldrig på om koden var sikker nok?

Det vi har set er sikkert nok, du skal blot huske på alle de sider der skal
være beskyttet at have noget ala:

If Not Session( "Login" ) Then
Response.Redirect( "du_er_ikke_logget_ind.asp" )
End If

--
Jakob Andersen



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste