/ 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
Login via database - Forskel på store/små ~
Fra : Thomas K


Dato : 17-12-04 16:02

Jeg har en database med brugere som skal logge ind på
hjemmesiden. Når de fx har tilmeldt sig med brugernavnet Mig er
det stadig muligt at lave en bruger som hedder mig. Hvordan kan
jeg undgå dette, og sørge for at brugernavnet allerede er optaget
uanset om det staves med store/små bogstaver?

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/vti_log/databasen.mdb")
Conn.Open DSN

strSQL = "Select * From bruger"
Set rs = Conn.Execute(strSQL)
strLogin = Request.Form("Login")
Do
if strLogin = rs("Login") THEN
Response.Redirect "findes.asp"
end if
rs.MoveNext
Loop While Not rs.EOF

strSQL = "Insert into bruger (Login, Password, Email, Aktiv)
values('" & Request.Form("Login") & "','" &
Request.Form("Password") & "','" & Request.Form("Email") & "','"
& 1 & "')"
Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>

--
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~ (17-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-12-04 16:16

Thomas K skrev:

> Jeg har en database med brugere som skal logge ind på
> hjemmesiden. Når de fx har tilmeldt sig med brugernavnet Mig er
> det stadig muligt at lave en bruger som hedder mig. Hvordan kan
> jeg undgå dette, og sørge for at brugernavnet allerede er optaget
> uanset om det staves med store/små bogstaver?

Lad brugernavnet være indekseret som et unikt felt. Access skelner
som standard ikke mellem store og små bogstaver, så du vil få en
fejl hvis du forsøger at indsætte "Mig" hvis "mig" findes i
forvejen.


> strSQL = "Select * From bruger"
> Set rs = Conn.Execute(strSQL)
> strLogin = Request.Form("Login")
> Do
> if strLogin = rs("Login") THEN
> Response.Redirect "findes.asp"
> end if
> rs.MoveNext

Ovenstående er meget ineffektiv kode. Brug *altid* databasens
søgefunktion i stedet for bare at bladre posterne igennem til du
finder det du leder efter - det er *mange* gange hurtigere på den
måde.

Du skal have fat i WHERE-delen af sql:

sql = "SELECT login FROM bruger WHERE login = '" & strLogin & "'"
Set rs = Conn.Execute (sql)
IF NOT rs.EOF Then
   ' Brugeren findes i forvejen
   fejl = True
End If

' Husk også at lukke og slukke før du viderestiller til en ny side
rs.close
set rs = Nothing

If fejl Then
   response.redirect "findes.asp"
End If

Eftersom Access som nævnt ikke skelner mellem store og små
bogstaver, er dit problem med forskellig versalitet også løst med
denne kode.
--
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

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

Månedens bedste
Årets bedste
Sidste års bedste