Link to home
Start Free TrialLog in
Avatar of APLIT
APLIT

asked on

Adding password validation to my registration page in ASP

Hi,

I want to be able to add a 'confirm password' field on my registration to double check a user has entered the correct password twice before completing the registration when they hit submit.

Below is my code for the registration page, can somebody show me how to do this with reference and example to my code:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/user_auth.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i


MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Redirect if username exists
MM_flag="MM_insert"
If (CStr(Request(MM_flag)) <> "") Then
  MM_dupKeyRedirect="registration_failed.asp"
  MM_rsKeyConnection=MM_user_auth_STRING
  MM_dupKeyUsernameValue = CStr(Request.Form("username"))
  MM_dupKeySQL="SELECT username FROM tbl_users WHERE username='" & MM_dupKeyUsernameValue & "'"
  MM_adodbRecordset="ADODB.Recordset"
  set MM_rsKey=Server.CreateObject(MM_adodbRecordset)
  MM_rsKey.ActiveConnection=MM_rsKeyConnection
  MM_rsKey.Source=MM_dupKeySQL
  MM_rsKey.CursorType=0
  MM_rsKey.CursorLocation=2
  MM_rsKey.LockType=3
  MM_rsKey.Open
  If Not MM_rsKey.EOF Or Not MM_rsKey.BOF Then
    ' the username was found - can not add the requested username
    MM_qsChar = "?"
    If (InStr(1,MM_dupKeyRedirect,"?") >= 1) Then MM_qsChar = "&"
    MM_dupKeyRedirect = MM_dupKeyRedirect & MM_qsChar & "requsername=" & MM_dupKeyUsernameValue
    Response.Redirect(MM_dupKeyRedirect)
  End If
  MM_rsKey.Close
End If
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "frm_register") Then

  MM_editConnection = MM_user_auth_STRING
  MM_editTable = "tbl_users"
  MM_editRedirectUrl = "login.asp"
  MM_fieldsStr  = "firstName|value|lastName|value|username|value|pwd|value|pwd1|value|address1|value"
  MM_columnsStr = "firstName|',none,''|lastName|',none,''|username|',none,''|pwd|',none,''|pwd1|',none,''|address1|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_user_auth_STRING
Recordset1.Source = "SELECT * FROM tbl_users"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://PROTECTED">
<html xmlns="http://PROTECTED">
<head>
<title>Our Company - Register</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/newland.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>
<style type="text/css">
<!--
.style1 {font-size: 14}
.style2 {color: #FF0000}
-->
</style>
</head>

<body>
<a href="#top"><img src="images/spacer.gif" alt="Skip to main page content." width="1" height="1" border="0" align="left" /></a>
<table width="762" border="0" cellpadding="3" cellspacing="0">
 <tr>
   <td width="749" class="author style1 style1"><h3 align="center">THis is a registration page working</span> </h3></td>
  <td width="1">&nbsp;</td>
 </tr>
 <tr>
   <td><div align="center"><a href="index.asp">Home</a> | <a href="login.asp">Login</a> | <a href="logout.asp">Log out</a> | <a href="help.asp">Help</a> | <a href="contactus.asp">Contact us</a> </div></td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td colspan="2">      
      <h1><br />
        <a name="top" id="top"></a>Site Registration</h1>
    <p>Please take a few moments to register for the site.</p>
    <form ACTION="<%=MM_editAction%>" METHOD="POST" name="frm_register" id="frm_register">
      <table width="95%"  border="0" cellpadding="3" cellspacing="0" bgcolor="#eeeeee">
        <tr>
          <td>First Name</td>
          <td><input name="firstName" type="text" id="firstName" /></td>
        </tr>
        <tr>
          <td>Last Name</td>
          <td><input name="lastName" type="text" id="lastName" /></td>
        </tr>
        <tr>
          <td>Email Address</td>
          <td><input name="username" type="text" id="username" size="37" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input name="pwd" type="password" id="pwd" /></td>
        </tr>
        <tr>
          <td>Confirm Password </td>
          <td><input name="pwd1" type="password" id="pwd1" /></td>
        </tr>
        <tr>
          <td>Branch Location            </td>
          <td><input name="address1" type="text" id="address1" size="55" /></td>
        </tr>
        <tr>
          <td><input name="userGroup" type="hidden" id="userGroup" value="visitor" /></td>
          <td><input name="Submit" type="submit" id="Submit" onclick="MM_validateForm('firstName','','R','lastName','','R','username','','RisEmail','pwd','','R','address1','','R','city','','R','zip_postal','','R','country','','R');return document.MM_returnValue" value="Submit" /></td>
        </tr>
      </table>
     
           
   
            <input type="hidden" name="MM_insert" value="frm_register">
</form>    </td>
 </tr>
</table>

<br />
<br />


</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
ASKER CERTIFIED SOLUTION
Avatar of sciber_dude
sciber_dude
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of APLIT
APLIT

ASKER

Hi thanks for this, I have entered the code as you mentioned but I purposely enter two different passwords and it assumes that it only needs field 'pwd' and completes the registration, my new code is as follows:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/user_auth.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i


MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Redirect if username exists
MM_flag="MM_insert"
If (CStr(Request(MM_flag)) <> "") Then
  MM_dupKeyRedirect="registration_failed.asp"
  MM_rsKeyConnection=MM_user_auth_STRING
  MM_dupKeyUsernameValue = CStr(Request.Form("username"))
  MM_dupKeySQL="SELECT username FROM tbl_users WHERE username='" & MM_dupKeyUsernameValue & "'"
  MM_adodbRecordset="ADODB.Recordset"
  set MM_rsKey=Server.CreateObject(MM_adodbRecordset)
  MM_rsKey.ActiveConnection=MM_rsKeyConnection
  MM_rsKey.Source=MM_dupKeySQL
  MM_rsKey.CursorType=0
  MM_rsKey.CursorLocation=2
  MM_rsKey.LockType=3
  MM_rsKey.Open
  If Not MM_rsKey.EOF Or Not MM_rsKey.BOF Then
    ' the username was found - can not add the requested username
    MM_qsChar = "?"
    If (InStr(1,MM_dupKeyRedirect,"?") >= 1) Then MM_qsChar = "&"
    MM_dupKeyRedirect = MM_dupKeyRedirect & MM_qsChar & "requsername=" & MM_dupKeyUsernameValue
    Response.Redirect(MM_dupKeyRedirect)
  End If
  MM_rsKey.Close
End If
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "frm_register") Then

  MM_editConnection = MM_user_auth_STRING
  MM_editTable = "tbl_users"
  MM_editRedirectUrl = "login.asp"
  MM_fieldsStr  = "firstName|value|lastName|value|username|value|pwd|value|pwd1|value|address1|value"
  MM_columnsStr = "firstName|',none,''|lastName|',none,''|username|',none,''|pwd|',none,''|pwd1|',none,''|address1|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_user_auth_STRING
Recordset1.Source = "SELECT * FROM tbl_users"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://PROTECTED">
<html xmlns="http://PROTECTED">
<head>
<title>Advanced Processing - Register</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/newland.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function Validatepwd() {
  if document.frm_register.pwd.value == document.frm_register.pwd1.value
   {  return true; }
  else {
     alert("The passwords do not match! Please input them again");
     document.frm_register.pwd.value = "";
     document.frm_register.pwd1.value = "";
     document.frm_register.pwd.focus();
     return false;
  }
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>
<style type="text/css">
<!--
.style1 {font-size: 14}
.style2 {color: #FF0000}
-->
</style>
</head>

<body>
<a href="#top"><img src="images/spacer.gif" alt="Skip to main page content." width="1" height="1" border="0" align="left" /></a>
<table width="762" border="0" cellpadding="3" cellspacing="0">
 <tr>
   <td width="749" class="author style1 style1"><h3 align="center">This is a test working with <span class="style2">Name</span> </h3></td>
  <td width="1">&nbsp;</td>
 </tr>
 <tr>
   <td><div align="center"><a href="index.asp">Home</a> | <a href="login.asp">Login</a> | <a href="logout.asp">Log out</a> | <a href="help.asp">Help</a> | <a href="contactus.asp">Contact us</a> </div></td>
  <td>&nbsp;</td>
 </tr>
 <tr>
  <td colspan="2">      
      <h1><br />
        <a name="top" id="top"></a>Site Registration</h1>
    <p>Please take a few moments to register for the site.</p>
    <form ACTION="<%=MM_editAction%>" METHOD="POST" name="frm_register" id="frm_register" onsubmit="Validatepwd()">
      <table width="95%"  border="0" cellpadding="3" cellspacing="0" bgcolor="#eeeeee">
        <tr>
          <td>First Name</td>
          <td><input name="firstName" type="text" id="firstName" /></td>
        </tr>
        <tr>
          <td>Last Name</td>
          <td><input name="lastName" type="text" id="lastName" /></td>
        </tr>
        <tr>
          <td>Email Address</td>
          <td><input name="username" type="text" id="username" size="37" /></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input name="pwd" type="password" id="pwd" /></td>
        </tr>
        <tr>
          <td>Confirm Password </td>
          <td><input name="pwd1" type="password" id="pwd1" /></td>
        </tr>
        <tr>
          <td>Branch Location            </td>
          <td><input name="address1" type="text" id="address1" size="55" /></td>
        </tr>
        <tr>
          <td><input name="userGroup" type="hidden" id="userGroup" value="visitor" /></td>
          <td><input name="Submit" type="submit" id="Submit" onclick="MM_validateForm('firstName','','R','lastName','','R','username','','RisEmail','pwd','','R','address1','','R','city','','R','zip_postal','','R','country','','R');return document.MM_returnValue" value="Submit" /></td>
        </tr>
      </table>
     
           
   
            <input type="hidden" name="MM_insert" value="frm_register">
</form>    </td>
 </tr>
</table>

<br />
<br />


</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of APLIT

ASKER

So I do not need to add this to the button code, rather the page (form) code, sorry to be blunt but what is the exact syntax  and position of where this code needs to be....

Thanks
Sorry, just add it to the form tag.  It doesn't need to be in the button tag becuase it is a submit button and it's event handler is tied to the form tag.

<p>Please take a few moments to register for the site.</p>
    <form ACTION="<%=MM_editAction%>" METHOD="POST" name="frm_register" id="frm_register" onsubmit="return Validatepwd()">

Just replace your form tag with this one and it should do the trick.

Good luck and happy coding!
@ APLIT  -

If you have received the answer, why not close this question?

:) SD
No comment has been added to this question in more than 21 days, so it is now classified as abandoned..
I will leave the following recommendation for this question in the Cleanup topic area:
Split: sciber_dude & FieldIT

Any objections should be posted here in the next 4 days. After that time, the question will be closed.

masirof
EE Cleanup Volunteer