Hej, allt detta funkar hjälpligt, prblemet är att när jag skriver en dublett på användarnamnet (username) så kommer inte mitt snälla felmeddelande upp, varför?Är denna kod ful eller går det att göra på ett annat sätt? OBS! Lång kod!
<%
Option Explicit
Dim sql,rsUser,username,password,passwordconfirm,firstname,surname,address,zip,city,country,phone,mobil,email,dob,sex,notfilled(14),badflag,count,passwordLength,calltype,icon,dobmonth,dobday,member,lastlog
Dim besok,jmail,fritext
'Assign form values to variables
username = Request.Form("username")
'Make sure they've not put any quotation marks in their username
If InStr(username,chr(34)) <> 0 or InStr(username,chr(39)) <> 0 then
errorfunction("invalidchars")
end if
'Make sure they've not put any quotation marks in their password
If InStr(password,chr(34)) <> 0 or InStr(password,chr(39)) <> 0 then
errorfunction("invalidchars")
end if
firstname = Request.Form("firstname")
surname = Request.Form("surname")
address = Request.Form("address")
zip = Request.Form("zip")
city = Request.Form("city")
country = Request.Form("country")
phone = Request.Form("phone")
mobil = Request.Form("mobil")
email = Request.Form("email")
fritext = Request.Form("fritext")
sex = Request.Form("sex")
password = Request.Form("password")
passwordconfirm = Request.Form("passwordconfirm")
dob = Request.Form("birth_day") & "/" & Request.Form("birth_month") & "/" & Request.Form("birth_year")
icon = Request.Form("icon")
member = Request.Form("member")
besok = "1"
lastlog = Request.Form("timecode")
badflag = 0
if firstname = "" then
notfilled(0) = "Förnamnet"
badflag = 1
end if
if surname = "" then
notfilled(1) = "Efternamnet"
badflag = 1
end if
if address = "" then
notfilled(2) = "Gatuadressen"
badflag = 1
end if
if zip = "" then
notfilled(3) = "Postnummret"
badflag = 1
end if
if city = "" then
notfilled(4) = "Orten"
badflag = 1
end if
if country = "" then
notfilled(5) = "Landet"
badflag = 1
end if
if phone = "" then
notfilled(6) = "Hemtelefonnummret"
badflag = 1
end if
if mobil = "" then
notfilled(7) = "Mobiltelefonnummret"
badflag = 1
end if
if email = "" then
notfilled(8) = "E-postadressen"
badflag = 1
end if
if username = "" then
notfilled(9) = "Användarnamnet"
badflag = 1
end if
if password = "" then
notfilled(10) = "Lösenordet"
badflag = 1
end if
if sex = "" then
notfilled(11) = "Könet"
badflag = 1
end if
if IsDate(dob) = "False" then
notfilled(12) = "Födelsedatumet"
badflag = 1
end if
if icon = "" then
notfilled(13) = "Ditt ikonval"
badflag = 1
end if
if badflag = 1 then
signuperror()
end if
passwordLength = Len(password)
if passwordLength < 5 or passwordLength > 15 then
errorfunction("length")
end if
if password <> passwordconfirm then
errorfunction("confirm")
end if
%>
<!--#include virtual="/cn.asp"-->
<%
UserUpdate()
Function UserUpdate()
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users", cn, 3, 3
rsUser.AddNew
rsUser("username") = username
rsUser("password") = password
rsUser("firstname") = firstname
rsUser("surname") = surname
rsUser("address") = address
rsUser("zip") = zip
rsUser("city") = city
rsUser("country") = country
rsUser("phone") = phone
rsUser("mobil") = mobil
rsUser("email") = email
rsUser("dob") = dob
rsUser("fritext") = fritext
rsUser("sex") = sex
rsUser("icon") = icon
rsUser("member") = member
rsUser("lastlogg") = lastlog
rsUser("besok") = besok
rsUser.Update
if Err.Number = -2147217887 then
Err.clear
errorfunction("badusername")
else
Set jmail = Server.CreateObject("JMail.Message")
jmail.AddRecipient "" & email & "", "" & firstname & ""
jmail.AddRecipientBCC ("jesper.trn@test.com")
jmail.From = "info@test.nu"
Jmail.Priority = 1
jmail.Subject = "Välkommen till test!"
jmail.appendHTML "<html><head></head><body><font face=tahoma,verdana size=2>"
jmail.appendHTML "<h4>Välkommen " & firstname & " "& surname &"</h4><br> "
jmail.appendHTML "Förnamn: "& firstname &"<br>"
jmail.appendHTML "Efternamn: "& surname &"<br>"
jmail.appendHTML "Adress: "& address &"<br>"
jmail.appendHTML "Postnummer:"& zip &" "
jmail.appendHTML "Postadress:"& city &"<br>"
jmail.appendHTML "Land: "& country &"<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "Födelsedata:"& dob &"<br>"
jmail.appendHTML "Hemtelefon: "& phone &"<br>"
jmail.appendHTML "Mobiltfn: "& mobil &"<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "<b>Användarnamn:</b> " & username & "<br>"
jmail.appendHTML "<b>Lösenord: </b> " & password & "<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "Det är trevligt att ha fått dig som medlem på test ... massa text kanske..<br>"
jmail.appendHTML "<br>"
jmail.appendHTML "</font></form></body></html>"
jmail.Send( "smtp.test.nu" )
Set jmail = nothing
Response.Cokies("username") = username
Response.cokies("firstname") = firstname
%>
<html>
<head>
<title>test</title><LINK href="style_main.css" rel=stylesheet>
</head>
<body bgcolor="#FFFFFF">
<table width="45%" border="0">
<tr>
<td width="24%"><img src="bilder/logo.gif" width="238" height="65"></td>
<td width="23%"> </td>
<td width="53%"> </td>
</tr>
</table>
<p><font size="4">Välkommen!</font></p>
<p><font size="2">Och tack<font color="#FFFFFF">.</font><%=firstname%><font color="#FFFFFF">.</font></font> <font size="2"><%=surname%><font color="#FFFFFF">.</font>för din anmälan om medlemskap
på test</font></p>
<form name="form1" method="post" action="visit/visit_prew.asp" onsubmit="window.open('','fonster','width=500,height=350');" target="fonster">
<input type="hidden" name="firstname" value="<%=firstname%>">
<input type="hidden" name="surname" value="<%=surname%>">
<input type="hidden" name="address" value="<%=address%>">
<input type="hidden" name="zip" value="<%=zip%>">
<input type="hidden" name="city" value="<%=city%>">
<input type="hidden" name="country" value="<%=country%>">
<input type="hidden" name="phone" value="<%=phone%>">
<input type="hidden" name="mobil" value="<%=mobil%>">
<input type="hidden" name="email" value="<%=email%>">
<font size="2"> Jag beställer samtidigt visitkort: 200 st
<input type="radio" name="antal" value="200" checked>
, 400st</font>
<input type="radio" name="antal" value="400">
<input type="submit" name="Submit" value="Granska">
</form>
<table width="423" border="0" height="288">
<tr>
<td>
</td>
</tr>
</table>
<p align="left"> </p>
<p><font size="2">Ditt användarnamn är <%=username%>, och du är nu inloggad.</font></p>
<p> </p>
<p><a href="/indext.asp"><font face="Verdana, Arial, Helvetica, sans-serif">Tillbaka
till hemsidan</font></a>
</body>
</html>
<%
rsUser.close
set rsUser = nothing
cn.close
set cn = nothing
end if
End Function%>
<%Function signuperror()%>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#FFFFFF" link="#DD0000" vlink="#DD0000" alink="#000000">
<font face="arial,helvetica" size=2>
<p><b>Du har inte fyllt i följande fält korrekt:</b></p>
<%for count = 0 to 13%>
<%if notfilled(count) <> "" then%>
<b><%=notfilled(count)%></b><br>
<%end if%>
<%next%>
<p><a href="javascript:self.history.go(-1)">Försök igen!</a></p>
</font>
</body>
</html>
<%Response.end
End Function%>
<%Function errorfunction(calltype)%>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#FFFFFF" link="#DD0000" vlink="#DD0000" alink="#000000">
<font face="arial,helvetica" size=2>
<%if calltype = "confirm" then%>
<p><b>Din lösenords bekräftelse stämmer inte! </b></p>
<p><a href="javascript:self.history.go(-1)">Försök igen!</a></p>
</font>
<%Response.end%>
<%elseif calltype = "length" then%>
<p><b>Ditt lösenord är inte mellan 5 och 12 tecken långt!</b></p>
<p><a href="javascript:self.history.go(-1)">Försök igen!</a></p>
<%Response.end%>
[b]
<%elseif calltype = "badusername" then%>
<p><b>Tyvärr, användarnamnet "<%=username%>" andvänds redan.</b></p>[/b]
<p><a href="javascript:self.history.go(-1)">Försök igen!</a></p>
<%
Response.end
rsUser.close
set rsUser = nothing
cn.close
set cn = nothing
elseif calltype = "invalidchars" then%>
<p><b>Användarnamnet kan inte innehålla några sådana tecken.</b></p>
<p><a href="javascript:self.history.go(-1)">Försök igen!</a></p>
</body>
</html>
<%Response.end%>
<%end if
End Function%>
------------------
If ASPackad date-1 then ASPerin Now
Har du skapat ett unique constraint på kolumnen username?
Jo jag har ju det!
if Err.Number = -2147217887 then
Err.clear
errorfunction("badusername")
else
Jag tog bort "on error" i denna version men jag fattar att man måste ha med det. När jag har med det så kan man "gå vidare" utan att bli medlem så att säga inget läggs till i databasen men man får access till sidorna!!! = dumt!
Jag vet inte vad som är felet?!
Username skall vara unikt och har jag med on error resume next så blir det så!
MVH Jesper
------------------
If ASPackad date-1 then ASPerin Now
<%
if Request.Co(o)kies("username") = "" then
Response.Redirect("nologin.asp?page=index.asp")
end if
session("username") = username%>
Kör jag "on error resume next" så skapas ju en kaka med användarnamnet även fast det redan finns en annan användare i databasen med samma användarnamn, det ger den personen access till sidorna en gång. Tar jag bort "on error resume next" så kommer det ett felmeddelande, men det är ju inte så snyggt ju!
MVH Jesper
------------------
If ASPackad date-1 then ASPerin Now
Kan du inte göra tillräckliga kontroller, så slipper du skapa fel?
Ex: ställ en SELECT-fråga innan du lägger till användaren. Finns användaren redan (dvs du får något annat än ett tomt recordset), så kallar du på din errorfunction.
Det är livsfarligt med on error resume next, eftersom exekveringen av koden ju fortsätter om du inte själv bryter den med if-satser innan varje viktigt statement.
SQL = "SELECT username FROM users WHERE username = "& username
Set rs = Connection.Execute(SQL)
if rs.eof then
'Lägg in i databasen!
Else
'Snubben finns redan!
errorfunction("badusername")
end if
Du får komplettera med din öppning o stängning av databasen.
I "vanliga fall" har man väl frågan överst på sidan och kör sen inläggningen med ditt script om allt är ok. (=username finns inte.) Kanske kan gå att kalla på din errorfunktion inuti if-satsen iofs.
Sök annars på tex "om post finns" eller eof el. dyl
' kod kod kod massa kod
SQL = "SELECT username FROM users WHERE username = "& username
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users", conn, 3, 3
if rsUser.eof then
rsUser.AddNew
rsUser("username") = username
rsUser("password") = password
rsUser("firstname") = firstname
rsUser("surname") = surname
rsUser("address") = address
rsUser("zip") = zip
rsUser("city") = city
rsUser("country") = country
rsUser("phone") = phone
rsUser("mobil") = mobil
rsUser("email") = email
rsUser("dob") = dob
rsUser("fritext") = fritext
rsUser("sex") = sex
rsUser("icon") = icon
rsUser("member") = member
rsUser.Update
else
Err.clear
errorfunction("badusername")
end if
' kod kod kod massa kod
MVH Jesper
------------------
If ASPackad date-1 then ASPerin Now
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/signupprocess.asp, line 126
SQL = "SELECT username FROM users WHERE username = "& username
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open SQL, conn, 3, 3 'rad 126
if rsUser.eof then
------------------
If ASPackad date-1 then ASPerin Now