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 ?
Ik ben nog een beetje beginneling met asp maar zo controleer ik het:
Als dit niet de juiste manier is mag je altijd de juiste code gevengebr=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
......
Met de StrComp functie:
Met compare 0 vergelijkt ie binary.
code:
1
| StrComp(string1, string2, [compare]) |
Met compare 0 vergelijkt ie binary.
Exact expert nodig?
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.
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.
Ik heb nu dus
als ik nu piet of Piet doe, het maakt nog steeds niet uit.
Maar ik kan nog steeds inloggen zoals ik wil//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
als ik nu piet of Piet doe, het maakt nog steeds niet uit.
Humm.. dat is wel erg vaag. Weet je zeker dat je geen twee x een piet i nde database hebt?
dat was als voorbeeld bedoelt 
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
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
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?
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?
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 ?
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...
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!
Bedankt allemaal , het werkt nu met die StrComp(string1,string2,[compare])
En ik altijd maar denken dat databases hoofdlettergevoelig zijnddkiller0900 schreef op 09 augustus 2002 @ 21:00:
Bedankt allemaal , het werkt nu met die StrComp(string1,string2,[compare])
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
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?
Heeft iemand een oplossing die waterdicht is?
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)
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
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
"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
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?
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):
peace out
mijn ervaring is dit wel case sensitive. het log niet wanneer ik verkeerde hoofdletter heb getypt.<%
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>
peace out
Pagina: 1