[ASP] Hoofdlettergevoeligheid doet vreemd

Pagina: 1
Acties:

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Op mijn site kan je je registreren om lid te worden van de members. Stel dat je username Piet is dan kan je gewoon inloggen als piet (zonder hoofdletter dus). Dit zou niet mogen zijn, want piet of Piet is een verschil. Door deze "fout" kan ik sommige dingen niet programmeren. Heeft iemand een idee hoe ik ervoor kan zorgen dat asp het verschil ziet tussen piet en Piet ?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Hoe controleer je de username?

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Ik ben nog een beetje beginneling met asp maar zo controleer ik het:
gebr=Request.querystring("Gebruikersnaam")
wachtw=Request.querystring("Wachtwoord")

mySQL="SELECT * FROM Spelers where Gebruikersnaam='" & gebr & "' and Wachtwoord='"&wachtw&"'"

myDSN="DRIVER=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("Sof2.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open(myDSN)
Set RS = Conn.Execute(mySQL)

If RS.EOF and RS.BOF Then
%><body bgcolor="#CCCCFF"><%
Response.Write("<h2>Ongeldige Loginnaam of wachtwoord!!</h2>")
Else

if RS.fields("Gebruikersnaam")<>gebr and RS.fields("Wachtwoord")<>wachtw then
response.end
else

......
Als dit niet de juiste manier is mag je altijd de juiste code geven B)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Met de StrComp functie:
code:
1
StrComp(string1, string2, [compare])

Met compare 0 vergelijkt ie binary.

Exact expert nodig?


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

De code die je post is niet echt efficient :)

Als je die SQL query uitvoert, krijg je sowieso 1 resultaat, of geen. Als er 1 resultaat komt, dan zijn de username en password al goed.

Dus, in pseudo:

If Recordset.BOF = True and recordset.EOF = True then
'//username en/of pass is verkeerd
Else
'//minimaal 1 record.. username & pass zijn goed!
End if

nb: Deze Select query is altijd hoofdletter gevoelig!

Edit:

Als je de database in een dir zet waar hij ook op het www beschikbaar is, zou ik de naam voor de zekerheid complexer maken, want inprincipe kan iedereen dus de DB dan downloaden.

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Ik heb nu dus
//verbinding met database zoals boven beschreven

If RS.BOF = True and RS.EOF = True then
//Hier geeft ie bij mij nu een bericht dat gebr en wachtw verkeerd zijn
Else
// de rest van de code als ie inlog

End if
Maar ik kan nog steeds inloggen zoals ik wil :?
als ik nu piet of Piet doe, het maakt nog steeds niet uit.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Humm.. dat is wel erg vaag. Weet je zeker dat je geen twee x een piet i nde database hebt? :)

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
dat was als voorbeeld bedoelt :P
zijn nu 5 users of zo geregistreerd om te testen.
En bij geen enkele pakt ie de hoofdletters.
Mijn login is DDkiller en ik kan gewoon ddkiller invoeren (met bijbehorend paswoord natuurlijk ;)

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Zelfde idee, geen andere namen in de DB?

kijk eens wat voor namen er door de query heen gaan, voor username en password...

Je weet overigens zeker dat het database gedeelte goed werkt?

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
als ik ddkiller invul dan vind ie gewoon DDKiller in mijn database. Dat gedeelte is niks mis mee :? misschien eens via die StrComp(string1, string2, [compare]) die Crazy_D zegt proberen ? :?

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
ehm.. is het probleem niet gewoon dat jet SQL niet hoofdletter gevoelig is?
je moet misschien met de resultaten van je recordset nog een keer controleren op case...

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Bedankt allemaal , het werkt nu met die StrComp(string1,string2,[compare])

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

ddkiller0900 schreef op 09 augustus 2002 @ 21:00:
Bedankt allemaal , het werkt nu met die StrComp(string1,string2,[compare])
En ik altijd maar denken dat databases hoofdlettergevoelig zijn :?. In VB heet het bij StrComp niets voor niets "Databasecompare" als je hoofdlettergevoeligheid wil hebben..(!)

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
OK, het werkt dus niet helemaal
ik snap er niks meer van
als ik nu DDKiller of ddkiller intyp dat ziet hij wel als een verschil. bij ddkiller geeft hij aan dat het een verkeerde login is. Maar als ik Ddkiller (niet DDkiller) intyp dan kom ik wel ingelogd. Ook met namen zoals onbekend pakt hij maar ook onbekenD is goed als gebruikersnaam :?

edit:


Heeft iemand een oplossing die waterdicht is?


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Met stringcompare moet de return waarde 0 zijn voor een perfecte match, andere getallen geven aan dat het een 'groter' of 'kleiner' woord is (in VB dan). Dat misschien een oplossing?

btw, op http://www.planetsourcecode.com -> ASp, kun je zoeken op "Basic authentication". Daar vind je een stuk code van mij wat precies hetzelfde doet als jij ongeveer doet :) (versie II is het beste)

Verwijderd

ben geen ASP expert, maar je moet nooit

"SELECT * ...." gebruiken! (select sterretje.... :) )

het is aan te raden om (kolomnaam 1 voor 1 te noemen):
"SELECT USERID, PASSW WHERE USERID = " & username_request & "PASSW = " password_request

peace out

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

dodol heeft idd gelijk..tenzij je uiteraard de rest van de database velden gaat gebruiken op dezelfde pagina.

Maar is het gelukt met m'n code van PSC, als je daar naar gekeken hebt?

Verwijderd

je kunt dit proberen (van mijn eigen ASP project-je....no big a deal though):
<%
Session.timeout = 60
myname=request.form("inlognaam")
mypassword=request.form("password")

set conntemp=server.createobject("adodb.connection")
conntemp.open "setiForum" <-- DB defenitie voor System DSN onder ODBC

sqltemp="select userid, passw, username, email, phone, country from [user] where userid='"
sqltemp=sqltemp & myname & "'"
set rstemp=conntemp.execute(sqltemp)

%>
<html>
<head>
<TITLE>login</TITLE>
<LINK href="theme/black.css" rel="stylesheet" type="text/css">

</head>
<%
If rstemp.eof then%>
<body bgcolor=550055>
<div align="center">Gebruiker met naam: <i><%=myname%></i> is bij ons database
ONBEKEND!<br>

Probeer opnieuw <A href='index.html'>inloggen</a>
<%response.end
end if
If rstemp("passw")=mypassword then
session("userid")=rstemp("userid")
respons.redirect("https://jouwwebsite.nl/securestuff/index_secure.asp")
Session("passw") = mypassword
Session("userid") = myname

%>
<TABLE BORDER=0 ALIGN=CENTER width=50%>
<TR>
<Td align=center>
welcome
</Td>
</TR>
</TABLE>
<%
else%><body>
<center>Onbekend Password <br>
Probeer opnieuw <A href='index.html'>inloggen</a> </center>
<%response.end
end if
rstemp.close
conntemp.close
set rstemp=nothing
set conntemp=nothing
%>
</div>
</body></html>
mijn ervaring is dit wel case sensitive. het log niet wanneer ik verkeerde hoofdletter heb getypt.

peace out
Pagina: 1