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?
36 svar · 822 visningar · startad av Sico · sida 2 av 2
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 →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?
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 :)
...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>"
det stämmer bra om jag skriver ut det som skickas från formuläret med den kod du skrev.
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,
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
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
På min kod eller Jörgens?
Måste vara din snabelkillen, jag ville bara veta vad som skickades in i SQL-frågan :)
@nders... ditt fungerade nu... men hur ska jag göra för att stor lr liten bokstav inte ska ha nån betydelse?
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,
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
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?
Nej, så länge du bara använder det vid jämförelser och inte vid tilldelningar så ändrar du ingenting.
Mvh,
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