1 #!/usr/bin/perl -w
2 # File: html_form.pl
3 # Author: Tom Large - tlarge@thelug.org
4 # Location: http://www.thelug.org/docs/
5 # Description: A simple perl based web form. It loops
6 # in itself, and allows error checking.
7
8 use CGI qw(:standard :html3 :param);
9
10 my $null = ();
11 my $state = 0;
12 my $good = 0;
13 my $bad = 0;
14 my $page = new CGI;
15 my $other_host = "host.name.domain";
16 my $other_date = "01-JAN-1970";
17 my $date = param('date');
18 my $host = param('host');
19 my $ip = param('ip');
20 my $correct = param('correct');
21
22 #######################################################################
23 # Determine State. This script loops itself with state counters.
24 # The states are:
25 # 0-New, get info.
26 # 1-Got info, it is good.
27 # 11-Errors with user input.
28 #######################################################################
29 if ($host eq $other_host)
30 {
31 $em = $null;
32 if ($date eq $date)
33 {
34 $good++;
35 }
36 else
37 {
38 $em = $em . "<LI>Date ($date) was bad.</LI>";
39 $bad++;
40 }
41 if ($host eq $other_host)
42 {
43 $good++;
44 }
45 else {
46 $em = $em . "<LI>Host ($host) was bad.</LI>";
47 $bad++;
48 }
49 if ($bad > 0) {
50 $state = 11;}
51 if (($bad < 1) && ($good > 0)) {
52 $state =1;}}
53 else
54 {
55 $state = 0;
56 }
57 if ($correct ne $null)
58 {
59 if ($correct eq "yes")
60 {
61 $state = 2;
62 }
63 else
64 {
65 $state = 0;
66 }
67 }
68
69 #######################################################################
70 # State 0: New, Get Info
71 #######################################################################
72 if ($state == 0)
73 {
74 print $page->header();
75 print <<END_OF_TEXT;
76 <HTML><HEAD><TITLE>"Some Form"</TITLE></HEAD><BODY>
77 <H1 ALIGN=CENTER>Some Form Page</H1>
78 <form action="/cgi-bin/html_form.pl" method="post">
79
80 <TABLE WIDTH=400>
81 <tr>
82 <td width=200>Date (e.g. DD-MON-YYYY)</td>
83 <td width=200><INPUT TYPE='text' NAME='date' SIZE='11' MAXLENGTH='11'></td>
84 </tr>
85 <td width=200>Host (e.g. host.domain.tld)</td>
86 <td width=200><INPUT TYPE='text' NAME='host' SIZE='11' MAXLENGTH='11'></td>
87 </tr>
88 </TABLE>
89 <input type="reset" value="Clear Form">
90 <input type="submit" value="Submit Request">
91 <BR><BR></BODY></HTML>
92 END_OF_TEXT
93 }
94
95
96 #######################################################################
97 # State 1: Got info, it is good.
98 #######################################################################
99 if ($state == 1)
100 {
101 print $page->header();
102 print <<END_OF_TEXT;
103 <HTML><HEAD><TITLE>"Some Form"</TITLE></HEAD><BODY>
104 <H1 ALIGN=CENTER>Some Form Page</H1>
105 <TABLE WIDTH="400">
106 <tr>
107 <td WIDTH="200"><B>Date:</B></td>
108 <td WIDTH="200">$date</td>
109 </tr>
110 <tr>
111 <td WIDTH="200"><B>Host:</B></td>
112 <td WIDTH="200">$host</td>
113 </tr>
114 </TABLE>
115 <BR><BR></BODY></HTML>
116 END_OF_TEXT
117 }
118
119 #######################################################################
120 # State 11: Errors with user input.
121 #######################################################################
122 if ($state == 11)
123 {
124 print $page->header();
125 print <<END_OF_TEXT;
126 <HTML><HEAD><TITLE>"Some Form"</TITLE></HEAD><BODY>
127 <H1 ALIGN=CENTER>Some Form Page</H1>
128 <form action="/cgi-bin/html_form.pl" method="post">
129
130 <input type="hidden" name="date" value="$date">
131 <input type="hidden" name="host" value="$host">
132
133 <BR>
134 There were errors in your date.<BR>
135 <BR>
136 <UL>$em</UL>
137 <BR>
138 <form action="/cgi-bin/blockform.cgi" method="post">
139 <input type="hidden" name="date" value="$nc_date">
140 <input type="hidden" name="host" value="$nc_host">
141 <input type="submit" value="New Form">
142 <BR><BR></BODY></HTML>
143 END_OF_TEXT
144 }
syntax highlighted by Code2HTML, v. 0.9.1