|
| 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
| |
|
|