<% function EncryptString(string) Dim x, i, tmp For i = 1 To Len( string ) x = Mid( string, i, 1 ) tmp = tmp & Chr( Asc( x ) + 1 ) Next tmp = StrReverse( tmp ) EncryptString = tmp end function function DecryptString(encryptedstring) Dim x, i, tmp encryptedstring = StrReverse( encryptedstring ) For i = 1 To Len( encryptedstring ) x = Mid( encryptedstring, i, 1 ) tmp = tmp & Chr( Asc( x ) - 1 ) Next DecryptString = tmp end function sub insert_or_update_user ':: called when a user attempts to register set rs=cn.Execute("SELECT user_id, user_name FROM Users WHERE email=" & to_sql(email,"text")) if rs.EOF then '' new user db_insert_register else '' email already exists user_id=rs("user_id") if isNull(rs("user_name")) or rs("user_name")="" then '' allow update of existing user account db_update_register else '' do not allow update if user_name is not empty b_error = true user_id = "" end if end if if not b_error then set rs = cn.Execute("SELECT * FROM Newsletters WHERE new_user_default = 1") if not rs.EOF then sender_name=NULL sender_address=NULL retv = SendAppEmail(rs("newsletter_id"),to_sql(email,"text"),NULL,to_sql(email,"text")) end if response.redirect "login.asp?action=logout&msg=Thanks.+please+login" else error_list.add "reg", "You missed a required field OR the username or email is already registered." error_list.add "reg1", "Click here to find a lost password." end if rs.Close end sub %> <% ' ::::::::: BEGIN COPYRIGHT and LICENSE ::::::::::::::::::::::::::::::::::::::::::::: ' Removal of this section is a violation of license and terms of use. ' Source code Copyright 2000-2002 Iatek (http://www.iatek.com). All Rights Reserved. ' Generated by ASPapp.com. More information can be obtained at http://www.aspapp.com ' This script can be installed and run on 1 Web site. Copying or redistribution ' is prohibited unless additional site licenses for this script are purchased. ' ::::::::: END COPYRIGHT and LICENSE :::::::::::::::::::::::::::::::::::::::::::::: ':::: page structure '-- variables are declared (dim) '-- the "request_" and "validate_" subroutines for form output '-- the "db_" subroutines for database SQL statements '-- key database fields are requested '-- the action variable is requested and handled '-- main section (this ignores value of action variable) '-- HTML begins: The 'i_header.asp' include file is displayed '-- forms and content are displayed '-- HTML ends: The 'i_footer.asp' include file is displayed '-- close database resources ':::: recommended DATABASE SCHEMA for this page ' Users: ' user_id: int identity|int: 4 ' user_type_id: smallint: 2 ' group_id: int identity|int: 4 ' user_name: text|varchar: 50 ' f_name: text|varchar: 50 ' l_name: text|varchar: 70 ' email: text|varchar: 60 ' password: text|varchar: 50 ' addr1: text|varchar: 100 ' addr2: text|varchar: 50 ' city: text|varchar: 50 ' state: text|varchar: 50 ' postalcode: text|varchar: 50 ' country: text|varchar: 50 ' phone: text|varchar: 40 ' fax: text|varchar: 40 ' notes: longtext|memo: 536870910 ' selfemp: byte: 1 ' dtinserted: datetime: 8 ' dtmodified: datetime: 8 ' dtlast: datetime: 8 ' accesslevel: int identity|int: 4 ' mailing_list: byte: 1 ' util_val: int identity|int: 4 ' util_flag: byte: 1 ' account_no: text|varchar: 40 ' homepage_url: text|varchar: 70 ' signature: text|varchar: 255 ' image: text|varchar: 30 ' refered_by: text|varchar: 30 ' confirmed: byte: 1 ' last_ip: text|varchar: 30 dim email_address dim confirm_email_sql dim content_field dim reg_code dim dtInserted dim accesslevel dim user_id dim user_name dim f_name dim l_name dim email dim password dim addr1 dim addr2 dim city dim state dim postalcode dim country dim phone dim mailing_list dim notes dim register_sql sub request_confirm_email ''' request form inputs from this form email_address = request("email_address") end sub sub request_register ''' request form inputs from this form reg_code = request("reg_code") dtInserted = request("dtInserted") accesslevel = request("accesslevel") user_id = request("user_id") user_name = request("user_name") f_name = request("f_name") l_name = request("l_name") email = request("email") password = request("password") addr1 = request("addr1") addr2 = request("addr2") city = request("city") state = request("state") postalcode = request("postalcode") country = request("country") phone = request("phone") mailing_list = request("mailing_list") notes = request("notes") end sub sub validate_confirm_email ''' request and validate data entered from this form email_address = trim(request("email_address")) end sub sub validate_register ''' request and validate data entered from this form reg_code = trim(request("reg_code")) dtInserted = trim(request("dtInserted")) if dtInserted <> "" AND (not isdate(dtInserted)) then error_list.add "661656date"," must be a valid date (MM/DD/YY)." b_error = true end if accesslevel = trim(request("accesslevel")) user_id = trim(request("user_id")) user_name = trim(request("user_name")) if user_name = "" then error_list.add "661643","Desired username must be specified." b_error = true end if f_name = trim(request("f_name")) l_name = trim(request("l_name")) email = trim(request("email")) if email = "" then error_list.add "661646","Email must be specified." b_error = true end if password = trim(request("password")) if password = "" then error_list.add "661647","Password must be specified." b_error = true end if addr1 = trim(request("addr1")) addr2 = trim(request("addr2")) city = trim(request("city")) state = trim(request("state")) postalcode = trim(request("postalcode")) country = trim(request("country")) phone = trim(request("phone")) mailing_list = trim(request("mailing_list")) notes = trim(request("notes")) end sub sub get_defaults_register ''' set default values for this form accesslevel = 1 country = "United States" mailing_list = 1 end sub sub db_select_confirm_email end sub sub db_insert_confirm_email sql = "" 'response.write sql on error resume next cn.Execute(sql) if err.Number <> 0 then b_error = true else end if on error goto 0 end sub sub db_update_confirm_email sql = "" 'response.write sql on error resume next cn.execute(sql) if err.number <> 0 then b_error = true end if on error goto 0 end sub sub db_delete_confirm_email sql = "" 'response.write sql on error resume next cn.Execute(sql) if err.number <> 0 then b_error = true end if on error goto 0 end sub sub db_select_register sql = "SELECT " & _ "dtInserted, " & _ "accesslevel, " & _ "user_id, " & _ "user_name, " & _ "f_name, " & _ "l_name, " & _ "email, " & _ "password, " & _ "addr1, " & _ "addr2, " & _ "city, " & _ "state, " & _ "postalcode, " & _ "country, " & _ "phone, " & _ "mailing_list, " & _ "notes FROM Users" & _ " WHERE " & _ "Users.user_id = " & to_sql(user_id,"number") & "" on error resume next set rs = cn.Execute(sql) if err.number <> 0 then b_error = true error_list.add "select_data_register", "The data selection failed. " & err.description elseif rs.EOF then b_results = false msg_list.add "select_data_register", "The record was removed from the database." else reg_code = rs("reg_code") dtInserted = rs("dtInserted") accesslevel = rs("accesslevel") user_id = rs("user_id") user_name = rs("user_name") f_name = rs("f_name") l_name = rs("l_name") email = rs("email") password = rs("password") addr1 = rs("addr1") addr2 = rs("addr2") city = rs("city") state = rs("state") postalcode = rs("postalcode") country = rs("country") phone = rs("phone") mailing_list = rs("mailing_list") notes = rs("notes") end if rs.Close on error goto 0 end sub sub db_insert_register sql = "INSERT INTO Users" & _ "(" & _ "user_name," & _ "f_name," & _ "l_name," & _ "[email]," & _ "[password]," & _ "addr1," & _ "addr2," & _ "city," & _ "[state]," & _ "postalcode," & _ "country," & _ "phone," & _ "[notes]," & _ "dtInserted," & _ "dtModified," & _ "accesslevel," & _ "confirmed," & _ "mailing_list" & _ ") VALUES (" & _ "" & to_sql(user_name,"text") & "," & _ "" & to_sql(f_name,"text") & "," & _ "" & to_sql(l_name,"text") & "," & _ "" & to_sql(email,"text") & "," & _ "" & to_sql(password,"text") & "," & _ "" & to_sql(addr1,"text") & "," & _ "" & to_sql(addr2,"text") & "," & _ "" & to_sql(city,"text") & "," & _ "" & to_sql(state,"text") & "," & _ "" & to_sql(postalcode,"text") & "," & _ "" & to_sql(country,"text") & "," & _ "" & to_sql(phone,"text") & "," & _ "" & to_sql(notes,"text") & "," & _ "" & to_sql(now,"date") & "," & _ "" & to_sql(now,"date") & "," & _ "1," & _ "1," & _ "" & to_sql(mailing_list,"number") & ")" 'response.write sql on error resume next cn.Execute(sql) if err.Number <> 0 then b_error = true error_list.add "db_insert_register" & err.Number ,"The database insert failed. " & err.Description else set rs = cn.Execute("SELECT @@IDENTITY") user_id = rs(0) rs.Close msg_list.add "db_insert_register","The database insert was successful." end if on error goto 0 end sub sub db_update_register sql = "UPDATE Users SET " & _ "dtInserted = " & to_sql(now(),"date") & ", " & _ "user_name = " & to_sql(user_name,"text") & ", " & _ "f_name = " & to_sql(f_name,"text") & ", " & _ "l_name = " & to_sql(l_name,"text") & ", " & _ "[email] = " & to_sql(email,"text") & ", " & _ "[password] = " & to_sql(password,"text") & ", " & _ "addr1 = " & to_sql(addr1,"text") & ", " & _ "addr2 = " & to_sql(addr2,"text") & ", " & _ "city = " & to_sql(city,"text") & ", " & _ "state = " & to_sql(state,"text") & ", " & _ "postalcode = " & to_sql(postalcode,"text") & ", " & _ "country = " & to_sql(country,"text") & ", " & _ "phone = " & to_sql(phone,"text") & ", " & _ "mailing_list = " & to_sql(mailing_list,"number") & ", " & _ "notes = " & to_sql(notes,"text") & " WHERE " & _ "user_id = " & to_sql(user_id,"number") & "" 'response.write sql on error resume next cn.execute(sql) if err.number <> 0 then b_error = true error_list.add "db_update_register" & err.Number ,"The database update failed. " & err.Description else end if on error goto 0 end sub sub db_delete_register sql = "DELETE FROM Users" & _ " WHERE " & _ "user_id = " & to_sql(user_id,"number") & "" 'response.write sql on error resume next cn.Execute(sql) if err.number <> 0 then b_error = true error_list.add "db_delete_register" & err.Number ,"The database deletion failed. " & err.Description else msg_list.add "db_delete_register","The record was removed." end if on error goto 0 end sub do_search = request("do_search") sortby = request("sortby") ''' request form keys and inputs email_address = request("email_address") user_id = request("user_id") reg_code = request("reg_code") email = request("email") ':: request action action = lcase(request("action")) ':: handle the action select case action case "select_confirm_email" ' select the requested key record from database if email_address <> "" then db_select_confirm_email else b_error = true error_list.add "edit_confirm_email", "Specify record to select." end if case "insert_confirm_email" ' request form data and insert a new record into database validate_confirm_email if not b_error then db_insert_confirm_email end if case "update_confirm_email" ' request form data and update an existing database record validate_confirm_email if not b_error then if email_address <> "" then db_update_confirm_email else b_error = true error_list.add "update_confirm_email", "Specify record to update." end if end if case "delete_confirm_email" ' delete the requested key database record if email_address <> "" then db_delete_confirm_email response.redirect request.servervariables("script_name") & "?msg=The+record+was+deleted." else b_error = true error_list.add "delete_confirm_email", "Specify record to delete." end if case "select_register" ' select the requested key record from database if user_id <> "" then db_select_register else b_error = true error_list.add "edit_register", "Specify record to select." end if case "insert_register" ' request form data and insert a new record into database validate_register if not b_error then ':: compare decrypted reg_code with email if application("enable_regcode") AND reg_code<>"" AND (lcase(email) <> lcase(DecryptString(reg_code))) then b_error = true error_list.add "bademail", "Please specify the same email address as requested with your registration code" else ':: call sub in page load section insert_or_update_user end if end if case "update_register" ' request form data and update an existing database record validate_register if not b_error then if user_id <> "" then db_update_register else b_error = true error_list.add "update_register", "Specify record to update." end if end if case "delete_register" ' delete the requested key database record if user_id <> "" then db_delete_register response.redirect request.servervariables("script_name") & "?msg=The+record+was+deleted." else b_error = true error_list.add "delete_register", "Specify record to delete." end if case "send_reg_code" ':: send validation email to the requested email address ':: encrypt email string to create reg_code reg_code = EncryptString(email_address) ':: compose message with return link site_root = application("site_root") user_name = email_address email = email_address subject = "Registration Code" body = "Click the link below to complete your registration:" & chr(10) ':: (text only) body = body + site_root + "register.asp?reg_code=" & reg_code body = body + "
complete my registration for '" & email & "'..." ':: send mail retv = SendMail(NULL, user_name, email, sender_name, sender_address, subject, body) if retv = 1 then msg_list.add "mailsent", "Your registration code has been sent to " & email_address display_regcode_sent = true else b_error = true error_list.add "sendfailed", "Error: A registration code was not sent." end if end select ':: handle the default case(s) (ignores value of action parameter) if application("enable_regcode") AND reg_code="" AND email="" then display_confirm_email = TRUE elseif user_id <> "" then ':: select existing record to populate form db_select_register else get_defaults_register end if %> <% display_errs display_msg %> <% if display_confirm_email then %> <% ':: check if hide form var was set if not b_hide_confirm_email then %>
Obtain a registration code
update<% else %>insert<%end if %>_confirm_email">
enter your email address
  <% if email_address <> "" then %><% end if %>
<% ':: end hide form if end if %> <% elseif display_regcode_sent then %> <% else %> <% ':: check if hide form var was set if not b_hide_register then %>
<% =application("lbl_register") %>
update<% else %>insert<%end if %>_register">
Desired username
First name
Last name
Email
Password
Address
City
State / Province
Postal Code
Country
Phone
Subscribe to mailing list? <% if mailing_list = "" then mailing_list = false %> checked<% end if %> name="mailing_list" value="1">
Comments
  <% if user_id <> "" then %><% end if %> <% if user_id = "" then %><% end if %>  
<% ':: end hide form if end if %> <% end if %> <% ':: assure that any db resources are freed on error resume next rs.Close set rs = NOTHING cn.Close set cn = NOTHING user_cn.Close set user_cn = NOTHING on error goto 0 %>