webForumDet fria alternativet

Kolla om mailen redan finns i databasen vid registrering

ASP

36 svar · 822 visningar · startad av Sico · sida 2 av 2

Frågan, av Sico

Set RSUser = Server.CreateObject("ADODB.Recordset") SQL = "SELECT fMail FROM tAdministrators" If Request.Form("txtmail") = RSConn("fMail") Then Response.Write "Du har redan registrerat dig med den mailen förut. " ElseIf RSConn.Addnew RSConn("fMail") = Request.Form("txtmail") RSConn.Update RSConn.Close End If skrev på fri hand så jag har inte testat den än, men stämmer det?

Läs frågan i sin helhet →
Medlem sedan feb. 20012 412 inlägg
#21

Ursprungligen av Sico men det går inte att skapa en ny användare om mailen redan finns.

Men så skulle det väl vara?

Heter formulärnamnet verkligen txtAnvandare?

Medlem sedan maj 20002 597 inlägg
#22

mjo mailspärren funkar ju, men inte användarspärren.
jepp det heter txtAnvandare. använder ctrl+c för att va på säkra sidan :)

Medlem sedan feb. 20012 412 inlägg
#23

...och vad får du för resultat om du skriver ut det du tar emot från formuläret:

response.write "<p>" & Request.Form("txtmail") &"  och " &  Request.Form("txtAnvandare") &" </p>"
Medlem sedan maj 20002 597 inlägg
#24

det stämmer bra om jag skriver ut det som skickas från formuläret med den kod du skrev.

Medlem sedan juni 200032 967 inlägg
#25

Jag skulle vilja be dig testa denna kod:

<%
if not isnull(Request.Form("txtmail")) then strmail = Cstr(Request.Form("txtmail"))
if not isnull(Request.Form("txtAnvandare")) then strAnvandare = Cstr(Request.Form("txtAnvandare"))

SQL = "SELECT f_Mail, f_User FROM t_Administrators where f_mail = '" & strmail & "' OR f_User = '" & strAnvandare & "'"
intError = 0
set rsconn = connect.execute(sql)
If not Rsconn.eof Then
	while not Rsconn.eof
		if rsconn("f_mail") =  strmail then 
			intError = intError + 1
			strError = "mailen var upptagen"
		end if
		if rsconn("f_User") = strAnvandare then 
			intError = intError + 1
			strError = "namnet var upptagen"
		end if
		Rsconn.movenext
	wend
	if intError = 1 then Response.Write strError else response.write "båda var upptagna"
else
	anvandare = Request.Form( "txtAnvandare" )
	losenord = Request.Form("txtLosen")
	mail = Request.Form( "txtMail" )

	strSQL = "INSERT INTO t_Administrators "
	strSQL = strSQL & "( f_User, f_Mail, f_Password ) "
	strSQL = strSQL & "VALUES( '" & anvandare & "', '" & mail & "', '" & losenord & "' )"

	Connect.Execute( strSQL )

	Response.Redirect "login.asp?registrera=tack"
End If

%>

Mvh,

Medlem sedan feb. 20012 412 inlägg
#26

Vad skriver den ut nu då?


if not isnull(Request.Form("txtmail")) then

strmail = Cstr(Request.Form("txtmail"))

elseif not isnull(Request.Form("txtAnvandare")) then

strAnvandare = Cstr(Request.Form("txtAnvandare"))

end if

SQL = "SELECT f_Mail, f_User FROM t_Administrators where f_mail = '" & strmail & "' OR f_User = '" & strAnvandare & "'"

response.write "sql-fråga: " & SQL & " "

set rsconn = connect.execute(sql)

If not Rsconn.eof Then

if rsconn("f_mail") =  strmail then

response.write "mailen var upptagen"

elseif rsconn("f_User") = strAnvandare then

response.write "namnet var upptagen"

elseif rsconn("f_User") =  strAnvandare and rsconn("f_mail") =  strmail then

response.write "båda var upptagna"

else

response.write "ett fel uppstod"

end if

Else
	anvandare = Request.Form( "txtAnvandare" )
	losenord = Request.Form("txtLosen")
	mail = Request.Form( "txtMail" )

	strSQL = "INSERT INTO t_Administrators "
	strSQL = strSQL & "( f_User, f_Mail, f_Password ) "
	strSQL = strSQL & "VALUES( '" & anvandare & "', '" & mail & "', '" & losenord & "' )"

	Connect.Execute( strSQL )

	Response.Redirect "login.asp?registrera=tack"
End If
Medlem sedan maj 20002 597 inlägg
#27

1. samma namn på användare som redan finns = båda var upptagna
2. lika dan mail som finns reggad = mailen var upptagen
3. både mail och användare samma = mailen var upptagen

Medlem sedan juni 200032 967 inlägg
#28

På min kod eller Jörgens?

Medlem sedan feb. 20012 412 inlägg
#29

Måste vara din snabelkillen, jag ville bara veta vad som skickades in i SQL-frågan :)

Medlem sedan maj 20002 597 inlägg
#30

@nders... ditt fungerade nu... men hur ska jag göra för att stor lr liten bokstav inte ska ha nån betydelse?

Medlem sedan juni 200032 967 inlägg
#31

Du kan använda antingen LCase() eller UCase() för att göra om strängarna till gemener resp. versaler i jämförelsen.

if LCase(rsconn("f_mail")) =  LCase(strmail) then

Mvh,

Medlem sedan maj 20002 597 inlägg
#32

jag ska nog läsa lite om dom, har glömt bort en del :( tack för all hjälp.. fasen va krångligt det skulle vara då :h

Medlem sedan feb. 20012 412 inlägg
#33

Tackar och bockar @nders ;)

Tänkte ju inte på att det kunde finnas många kombinationer :r

Medlem sedan juni 200032 967 inlägg
#34

En vassegodar! :)

Mvh,

Medlem sedan maj 20002 597 inlägg
#35

Jag vill ju att man ska kunna registrera sig med stora bokstäver. Men det inte ska spela nån roll om det är en användare registrerad som "Sico" så ska det inte gå att registrera en ny som "sico" ... Med LCase gör man ju alla bokstäver små och då försvinner ju funktionern att ha stor bokstav i namnet. Eller har jag helt fel?

Medlem sedan juni 200032 967 inlägg
#36

Nej, så länge du bara använder det vid jämförelser och inte vid tilldelningar så ändrar du ingenting.

Mvh,

Medlem sedan maj 20002 597 inlägg
#37

jag fortsätter på denna tråden...

If not isnull(Request.Form("txtMail")) Then strMail = Cstr(Request.Form("txtMail"))
[b]If not isnull(Request.Form("txtLosen")) Then strLosen = Cstr(Request.Form("txtLosen"))[/b]
If not isnull(Request.Form("txtAnvandare")) Then strAnvandare = Cstr(Request.Form("txtAnvandare"))

SQL = "SELECT f_Mail, f_User, f_Password FROM t_Administrators where f_mail = '" & strmail & "' OR f_User = '" & strAnvandare & "' OR f_Password = '" & strLosen & "'"
intError = 0
set rsconn = connect.execute(sql)
If not RSConn.eof Then
	While not Rsconn.eof
		If LCase(RSConn("f_Mail")) =  LCase(strMail) Then
			intError = intError + 1
			strError = "Mailen är redan använd. <a href=""login.asp?reqlosen"">Glömt bort lösenordet?</a>" & _
			"<br><a href=""login.asp?registrera"">Försök igen</a>"
		End If
		If LCase(RSConn("f_User")) =  LCase(strAnvandare) Then
			intError = intError + 1
			strError = "Användarnamnet är upptaget<br><a href=""login.asp?registrera"">Försök igen</a>"
		End If
		[b]If Len(strLosen) < 4 Then
			intError = intError + 1
			strError = "Lösenordet måste vara minst 4 tecken.<br><a href=""login.asp?registrera"">Försök igen</a>"
		End If[/b]
		RSConn.movenext
	Wend
	If intError = 1 Then Response.Write strError Else response.write "Både mailen och användarnamnet är upptaget" & _
			"<br><a href=""login.asp?registrera"">Försök igen</a>"
Else

lägg till allt till databasen

Jag la till en koden med fet stil för att kolla minimumlängden på lösenordet. Men den klagar inte om man har mindre än 4 tecken. varför?

R/ ändrade en del fel jag såg

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)