• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 235
  • Last Modified:

Classic ASP: Prevent new Member Verify Twice after clicking verification email

Hi I am building a member  based websit written on ASP- Vb Script and database driven SQL server 2000 . I  would have people signing in through a form.asp and then they will get an email to their entered adress so their account becomes active once they click on the  link and get to a thanks.asp page thath displays they have confirmed their email and their account is now verified.  My problem is that I don't know how to prevent someone who already set their verify status to true to get the same page thanks but I want to check somehow if they have clicked that liniked before and their account is already verified so they get the proper error page.  Also I want to make this page more secure and pass a challenge cod e along the verify link. Thanks in advance.
<%@ Language = "VBScript" %>
<% level="../"%>
<% Option Explicit
 
 
 
<!--#include file="../include/intialize.inc"-->
<!--#include file="../../Connections/sqlConn1.asp" -->
set RecsetRef = conSQL.execute("Select 1 From Players where verify= 1 and referenceno="&RefNumber&"")
If recordcount > 0 Then
  responce.redirect("SubmisionError.asp")
End If
%>
 
 
<html>
<head>
<title><%=PageTitle%></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../style/style.css" rel="stylesheet" type="text/css">
</head>
<%
 
Dim RefNumer 
	RefNumber =  cint(Request.QueryString("refno"))
 
'psw="playerscores"	
	'strTemp = EnDeCrypt(RefNumber, psw)
	
	
	conSQL.execute("update Players set verify= 1 where referenceno="&RefNumber&"")
	conSQL.execute("update players set status=1 where referenceno="&RefNumber&"")
	
	' remove comment to add registered users to forum too 
	'con7.execute("update tblauthor set Active = 1 where username='"&request("SSN")&"'")
	  	    
	If Err.Number <> 0 Then
				Response.Write "Error: " & Err.Description
	end if
	End if 
	
%>

Open in new window

0
RickyGtz
Asked:
RickyGtz
  • 2
1 Solution
 
deathtospamCommented:
I obviously can't test this code out from my end, but try using something like this:
<%@ Language = "VBScript" %>
<% level="../"%>
<% Option Explicit %>
 
<!--#include file="../include/intialize.inc"-->
<!--#include file="../../Connections/sqlConn1.asp" -->
 
<%	Dim iReferenceNo, rsVerifyInfo, bIsVerified
 
	iReferenceNo = cLng(Request.QueryString("refno"))
	bIsVerified = false
	
	'// Look up the reference number to see if the player has already been verified.
	Set rsVerifyInfo = conSQL.execute("SELECT verify FROM Players WHERE referenceno = " & RefNumber)	
 
	If rsVerifyInfo.EOF Then
		'// ERROR: A player corresponding to the reference number could not be found.
		Call Response.Redirect("SubmisionError.asp")
		Call Response.End()
	Else
		'// A player corresponding to the reference number was found.  See if they've been verified yet.
		bIsVerified = (cLng(rsVerifyInfo("verify")) = "1") %>
<html>
	<head>
		<title><%=PageTitle%></title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<link href="../style/style.css" rel="stylesheet" type="text/css">
	</head>
	<body>
<%		If bIsVerfied Then
			'// The player has already been verified once before. %>
			Your account has already been verified.
<%		Else
			'// The player has not yet been verified.  Verify them now and display a welcome message.
			Call conSQL.execute("UPDATE Players SET verify=1, status=1 WHERE referenceno = " & RefNumber) %>
			Your account is now verified.  Welcome!
<%		End If %>
	</body>
</html>
<%	End If
 
	Set rsVerifyInfo = Nothing %>

Open in new window

0
 
RickyGtzAuthor Commented:
Hi I just test that out . It seems logical but now I am having an error on

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '='.

/members/verify.asp, line 12

      '// Look up the reference number to see if the player has already been verified.
      Set rsVerifyInfo = conSQL.execute("SELECT verify FROM Players WHERE referenceno = " &RefNumber)      

0
 
deathtospamCommented:
Woops... sorry.  I didn't consistently replace all of your old variable names.  Try the code below, or replace all instances of "RefNumber" with "iReferenceNo".
<%@ Language = "VBScript" %>
<% level="../"%>
<% Option Explicit %>
 
<!--#include file="../include/intialize.inc"-->
<!--#include file="../../Connections/sqlConn1.asp" -->
 
<%      Dim iReferenceNo, rsVerifyInfo, bIsVerified
 
        iReferenceNo = cLng(Request.QueryString("refno"))
        bIsVerified = false
        
        '// Look up the reference number to see if the player has already been verified.
        Set rsVerifyInfo = conSQL.execute("SELECT verify FROM Players WHERE referenceno = " & iReferenceNo)        
 
        If rsVerifyInfo.EOF Then
                '// ERROR: A player corresponding to the reference number could not be found.
                Call Response.Redirect("SubmisionError.asp")
                Call Response.End()
        Else
                '// A player corresponding to the reference number was found.  See if they've been verified yet.
                bIsVerified = (cLng(rsVerifyInfo("verify")) = "1") %>
<html>
        <head>
                <title><%=PageTitle%></title>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                <link href="../style/style.css" rel="stylesheet" type="text/css">
        </head>
        <body>
<%              If bIsVerfied Then
                        '// The player has already been verified once before. %>
                        Your account has already been verified.
<%              Else
                        '// The player has not yet been verified.  Verify them now and display a welcome message.
                        Call conSQL.execute("UPDATE Players SET verify=1, status=1 WHERE referenceno = " & iReferenceNo) %>
                        Your account is now verified.  Welcome!
<%              End If %>
        </body>
</html>
<%      End If
 
        Set rsVerifyInfo = Nothing %>

Open in new window

0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now