ASP Form validation (including required and optional fields and reverse MX lookup for e-mail address - not sure why)
1
2 <head>
3 <title>Implemented Form Validation</title>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 </head>
6 <style>
7 .errorMessage {
8 color :
9 }
10 .errorItem {
11 background :
12 }
13 </style>
14 <body>
15 <!--Settings-->
16 <%
17 '=================================
18 'All fields are acted as required
19 ' except those the NAME of which
20 ' is in this string variable:
21 '=================================
22 exceptions = Array("address")
23
24 '=================================
25 'NAME of the e-mail field is
26 ' stored in this string variable:
27 '=================================
28 emailField = "email"
29
30 '=================================
31 'Variables
32 '=================================
33 dim errorMessage, badItem, inputArray() : badItem=-1
34 redim inputArray(50,2)
35
36 '=================================
37 'Get all what is submitted
38 '=================================
39 IF request.Form.Count > 0 THEN
40 execute("const numberOfFields =" & request.Form.Count)
41 execute("redim inputArray("&numberOfFields&",2)")
42 FOR i = 1 TO request.Form.Count
43 inputArray(i,1) = request.Form.Key(i)
44 inputArray(i,2) = request.Form.Item(i)
45 NEXT
46 validate
47 ELSEIF request.QueryString.Count > 0 THEN
48 execute("const numberOfFields =" & request.QueryString.Count)
49 execute("redim inputArray("&numberOfFields&",2)")
50 FOR i = 1 TO request.QueryString.Count
51 inputArray(i,1) = request.QueryString.Key(i)
52 inputArray(i,2) = request.QueryString.Item(i)
53 NEXT
54 validate
55 END IF
56
57 SUB validate
58 '=================================
59 'Check for empty fields
60 '=================================
61 FOR i = 1 TO numberOfFields
62 isException = False
63 IF inputArray(i,2)="" THEN
64 FOR j = 0 to UBound(exceptions)
65 IF inputArray(i,1) = exceptions(j) THEN isException = TRUE
66 NEXT
67 IF NOT isException THEN
68 badItem = i
69 errorMessage = "At least one of the required fields is left empty."
70 EXIT SUB
71 END IF
72 END IF
73 isException = False
74 NEXT
75
76 '=================================
77 'Check email address for basic
78 ' errors
79 '=================================
80 FOR i = 1 TO numberOfFields
81 IF emailField=inputArray(i,1) THEN
82 validationResult = validateEmail(inputArray(i,2))
83 IF validationResult <> "" THEN
84 errorMessage = validationResult
85 badItem = i
86 END IF
87 END IF
88 NEXT
89 END SUB
90
91 FUNCTION validateEmail(strAddress)
92 IF InStr(strAddress,"@") < 2 THEN
93 validateEmail = "Email address must contain ""@"" sign."
94 ELSEIF InStr(Right(strAddress,Len(strAddress)-InStr(strAddress,"@")),".") < 2 OR InStr(Right(strAddress,Len(strAddress)-InStr(strAddress,"@")),".") = Len(strAddress)-InStr(strAddress,"@") THEN
95 validateEmail = "Email address must contain ""."" sign."
96 ELSE
97 host = Right(strAddress,Len(strAddress)-InStr(strAddress,"@"))
98 IF NOT MXLookUp(host) THEN validateEmail = "Bad email address."
99 END IF
100 END FUNCTION
101
102 FUNCTION MXLookUp(host)
103 MXLookUp = False
104 Dim objXMLHTTP,strResult
105 Set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
106 objXMLHTTP.Open "Get", _
107 "http://examples.softwaremodules.com/IntraDns.asp?domainname=" & host & "&Submit=Submit&t_mx=1", False
108 objXMLHTTP.Send
109 strResult = objXMLHTTP.ResponseText
110 strResult = Mid(strResult,InStr(strResult,"(MX) for <strong>"),100)
111 strResult = Mid(strResult,Instr(strResult,"</strong>. Items Returned: <strong>")+35,1)
112 IF CInt(strResult) > 0 THEN
113 MXLookUp = TRUE
114 ELSE
115 MXLookUp = FALSE
116 END IF
117 END FUNCTION
118 %>
119 <h2>Form Validator</h2>
120 <%
121 IF errorMessage<>"" THEN
122 %>
123 <p class="errorMessage">There was an error with your form: <b><%=errorMessage%></b></p>
124 <%
125 ELSEIF request.form.count = 0 THEN
126 %>
127 <h3>Please fill in the form:</h3>
128 <%
129 ELSE
130 %>
131 <h3>Thank you!</h3>
132 </body>
133 </html>
134 <%
135 response.End
136 END IF
137 %>
138
139 <form action="default.asp" method="post">
140
141 <p>Name: <font color="#FF0000">*</font>
142 <input name="name" type="text" id="name" value="<%=inputArray(1,2)%>" <%IF badItem=1 THEN response.write "class=""errorItem"""%>/>
143 </p>
144
145 <p>Address:
146 <input name="address" type="text" id="address" value="<%=inputArray(2,2)%>" <%IF badItem=2 THEN response.write "class=""errorItem"""%>/>
147 </p>
148
149 <p>Email: <font color="#FF0000">*</font>
150 <input name="email" type="text" id="email" value="<%=inputArray(3,2)%>" <%IF badItem=3 THEN response.write "class=""errorItem"""%>/>
151 </p>
152
153 <p>
154 <input type="submit" value="Submit" />
155 </p>
156
157 </form>
158
159 </body>