Toon posts:

[ASP] Username controleren in DB

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goeieavond,

Mijn registratie scriptje, moet de username controleren die de gebruiker heeft opgegegeven. Als de username voorkomt in de database, dan geeft ie een error code.

Wordt de username niet gevonden in de database, dan kan het doorgaan met de registratie. Simpel, dacht ik zo..

Toch niet. :'( Nu geeft ie iedere keer een 'Exception Occured' aan als de username NIET is gevonden. Maar hij geeft gewoon mijn eigen 'Username has already been taken'-fout aan, als ie WEL voorkomt. Ik gebruik het volgende script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Set cnDB = Server.CreateObject("ADODB.Connection")
cnDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"_
& "Data source = D:\Accounts\DSAccounts\creepsworld\creepsworld.com\db\database.mdb"
cnDB.Open

Set rsUser = Server.CreateObject("ADODB.RecordSet")
rsUser.Open "SELECT * FROM users_login WHERE Username = '" & Request.Form("Username") & "'", cnDB

If Request.Form("Username") = rsUser("Username") Then
Response.Write "That name has already been taken! Please go back and try another one!"

Else
   
Set rsQuery = Server.CreateObject("ADODB.RecordSet")
rsQuery.Open "SELECT * FROM users_login", cnDB, 2, 2
      
rsQuery.AddNew
rsQuery("Username") = Request.Form("Username")
rsQuery("Password") = Request.Form("Password")
rsQuery("Email")    = Request.Form("Email")
rsQuery("IPAdress") = Request.Form("IPADRESS")
rsQuery("Status")   = "Active"
rsQuery.Update
rsQuery.Close
rsUser.Close
cnDB.Close

End If

Ik krijg dan een fout op Line 37, line 37:
If Request.Form("Username") = rsUser("Username") Then

Hier is toch niks mis mee, toch?

Help AUB.

Verwijderd

Toch wel stel je user bestaad nog niet, krijg je geen recordset terug, en dan wijst rsUser("username") dus ook nergnes naar wat idd 'n mooie foutmelding opleverd als je 'r een vergelijking op loslaat :Y)

Verwijderd

Topicstarter
Juist, maar hoe vang ik die error dan goed op, zodat ie 'm dan toch toevoegt? Ik denk ik gebruik dan 'Else' want dan gaat ie bij alle andere voorwaardes de record toevoegen.

Verwijderd

euh iets als :
code:
1
2
3
4
5
if ruser.bof and ruser.eof then
  'user not found
else
  'user found
end if

niet getest maar werkt vast wel ?

Verwijderd

Topicstarter
Nope, werkt niet.

Lijkt me ook logisch, want hij kan 'm niet vergelijken met Request.Form("Username")

Hij maakt nu een account aan, hoe dan ook. Of de username er nou wel of niet is.

Verwijderd

Op donderdag 11 juli 2002 20:13 schreef Wiegje het volgende:
Lijkt me ook logisch, want hij kan 'm niet vergelijken met Request.Form("Username")
is dat nodig dan? je hebt in je query al 'n vergelijking zitten op username, vind ie 'm niet krijg je een lege recordset, vind ie 'm wel krijg je recordsetje terug,beetje zinloos om dan nog es met Request.Form("Username") tevergelijken..

Verwijderd

Wanneer rsUser.EOF direct na 't openen True is, betekent 't dat je geen resultset hebt teruggekregen.

Je zou ook kunnen checken of rsUser.RecordCount groter dan 0 is, maar over 't algemeen is die EOF check een stuk sneller: RecordCount forceert een "fetch all" van de resultset, en bij grote resultsets is dat niet wat je wil...

Verwijderd

Topicstarter
Doh! Sorry.. dacht ik ff niet aan!

EDIT:

HIJ WERKT! :) Dank jullie wel!!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Omgebouwd zou ik het zo doen:
code:
1
2
3
4
5
6
7
8
9
10
11
Dim strUsername
strUsername = Replace(Request.Form("UserName"),"'","''")

rsUser.Open "SELECT * FROM users_login WHERE Username = '" & strUsername & "'", cnDB

If RSUser.Eof Then
    Response.Write "That name has already been taken! Please go back and try another one!"

Else
    (...)
End if

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Op donderdag 11 juli 2002 20:22 schreef gorgi_19 het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
Dim strUsername
strUsername = Replace(Request.Form("UserName"),"'","''")

rsUser.Open "SELECT * FROM users_login WHERE Username = '" & strUsername & "'", cnDB

If RSUser.Eof Then
    Response.Write "That name has already been taken! Please go back and try another one!"

Else
    (...)
End if
ehm.... je checkt of een usernaam bestaat middels het SQL-statement en wanner er geen record wordt gevonden zeg je dat er al een record is met dezelfde usernaam? Lijkt mij niet helemaal correct... of kijk ik ergens overheen?

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Op donderdag 11 juli 2002 20:44 schreef I-eye het volgende:

[..]

ehm.... je checkt of een usernaam bestaat middels het SQL-statement en wanner er geen record wordt gevonden zeg je dat er al een record is met dezelfde usernaam? Lijkt mij niet helemaal correct... of kijk ik ergens overheen?
Inderdaad, zou meer zo moeten zijn:
code:
1
2
3
4
5
If RSUser.Eof Then
    ...
Else
    Response.Write "That name has already been taken!"
End if

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Op donderdag 11 juli 2002 20:44 schreef I-eye het volgende:

[..]

ehm.... je checkt of een usernaam bestaat middels het SQL-statement en wanner er geen record wordt gevonden zeg je dat er al een record is met dezelfde usernaam? Lijkt mij niet helemaal correct... of kijk ik ergens overheen?
Had ik ook, zijn tweede lus mist een controle opvang voor als er geen user is. Zoals hierboven

if rsUser.eof then
'jij komt nog niet voor in de db,registreren jij!~
else
if
'controle lus login en paswoord
else
'foute login of paswoord manneke!
end if
end if

simpele weergave natuurlijk maar ja
Pagina: 1