1
|
1 #!/usr/local/bin/perl
|
|
2
|
|
3 require "cgi-lib.pl";
|
|
4 use DBI;
|
|
5
|
|
6 $user = "";
|
|
7 $passwd = "";
|
|
8 $dbname = "scs";
|
|
9
|
|
10 MAIN:
|
|
11 {
|
|
12 # Read in all the variables set by the form
|
|
13 &ReadParse(*input);
|
|
14
|
|
15 print &PrintHeader;
|
|
16 print "<BODY BGCOLOR=\"#00000\" TEXT=\"#CCCCCC\" LINK=\"#00EE20\" VLINK=\"#55FF8B\" ALINK=\"#FFFF00\">";
|
|
17 print "<META HTTP-EQUIV=\"Pragma\" content=\"no-cache\">\n";
|
|
18 print "<TITLE>Edit the SCS Database</TITLE>";
|
|
19 print "<H2>Edit the SCS Database</H2>";
|
|
20
|
|
21 # print &HtmlTop ("Edit the SCS Database");
|
|
22
|
|
23 $id = $input{'id'};
|
|
24 $type = $input{'type'};
|
|
25
|
|
26 # Is this a query?
|
|
27 if ($type eq "edit") {
|
|
28
|
|
29 # Connect to the Database
|
|
30 $dbh = DBI->connect("dbi:Pg:dbname=$dbname", $user, $passwd) || bad_exit($sth->errstr);
|
|
31
|
|
32 # Prepare the select statement
|
|
33 $sth = $dbh->prepare("SELECT * FROM members WHERE memberid = $id") || bad_exit($sth->errstr);
|
|
34
|
|
35 # Execute it
|
|
36 $numrows = $sth->execute || bad_exit($sth->errstr);
|
|
37
|
|
38 # Get one row. Only one.. if there is more than one, bad things have happened :)
|
|
39 if (@array = $sth->fetchrow_array) {
|
|
40
|
|
41 # Check their password
|
|
42 if (&dtrail(@array[4]) ne &dtrail($input{'passwd'})) {
|
|
43 print "Bad password for Member ID $id<P>\n";
|
|
44 print "<A HREF=\"/scs/games/edit.html\">Try again</A>\n";
|
|
45 } else {
|
|
46 # Print out a form which allows the user to change fields
|
|
47 $memberid = dtrail(@array[0]);
|
|
48 $firstname = dtrail(@array[1]);
|
|
49 $lastname = dtrail(@array[2]);
|
|
50 $nickname = dtrail(@array[3]);
|
|
51 $pin = dtrail(@array[4]);
|
|
52 $age = dtrail(@array[5]);
|
|
53 $phone1 = dtrail(@array[6]);
|
|
54 $ph1_pub = dtrail(@array[7]);
|
|
55 $phone2 = dtrail(@array[8]);
|
|
56 $ph2_pub = dtrail(@array[9]);
|
|
57 $email = dtrail(@array[10]);
|
|
58 $email_pub = dtrail(@array[11]);
|
|
59 $address1 = dtrail(@array[12]);
|
|
60 $address2 = dtrail(@array[13]);
|
|
61 $address3 = dtrail(@array[14]);
|
|
62 $addy_pub = dtrail(@array[15]);
|
|
63 $comments = dtrail(@array[16]);
|
|
64 $joined = dtrail(@array[17]);
|
|
65 $lstmemfee = dtrail(@array[18]);
|
|
66 $lstpddate = dtrail(@array[19]);
|
|
67
|
|
68 print "<FORM METHOD=GET ACTION=\"/cgi-bin/scs/edit.pl\">\n";
|
|
69 print "<TABLE WIDTH=\"100%\">\n";
|
|
70 print "<TR><TD ALIGN=RIGHT>First Name<TD>";
|
|
71 printf("<INPUT TYPE=TEXT NAME=fname VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
72 $firstname);
|
|
73 print "<TR><TD ALIGN=RIGHT>Last Name<TD>";
|
|
74 printf("<INPUT TYPE=TEXT NAME=lname VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
75 $lastname);
|
|
76 print "<TR><TD ALIGN=RIGHT>Member ID<TD>$id";
|
|
77 printf("<INPUT TYPE=HIDDEN NAME=id VALUE=\"%d\"></TR>\n", $id);
|
|
78 printf("<TR><TD ALIGN=RIGHT>Nickname<TD>");
|
|
79 printf("<INPUT TYPE=TEXT NAME=nick VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
80 $nickname);
|
|
81 print "<TR><TD ALIGN=RIGHT>Password<TD>";
|
|
82 printf("<INPUT TYPE=PASSWORD NAME=pwd1 VALUE=\"%s\" SIZE=\"50%\">", $pin);
|
|
83 printf("<INPUT TYPE=HIDDEN NAME=passwd VALUE=\"%s\"</TR>\n", $pin);
|
|
84 print "<TR><TD ALIGN=RIGHT>And Again<TD>";
|
|
85 printf("<INPUT TYPE=PASSWORD NAME=pwd2 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
86 $pin);
|
|
87 print "<TR><TD ALIGN=RIGHT>Age<TD>";
|
|
88 printf("<INPUT TYPE=TEXT NAME=age VALUE=\"%d\" SIZE=\"50%\"></TR>\n",
|
|
89 $age);
|
|
90 print "<TR><TD ALIGN=RIGHT>Phone 1<TD>";
|
|
91 printf("<INPUT TYPE=TEXT NAME=phone1 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
92 $phone1);
|
|
93 print "<TR><TD ALIGN=RIGHT>Public number<TD>";
|
|
94 printf("<INPUT TYPE=CHECKBOX NAME=ph1_pub %s SIZE=\"50%\"></TR>\n",
|
|
95 (($ph1_pub eq "0") ? '' : 'CHECKED'));
|
|
96 print "<TR><TD ALIGN=RIGHT>Phone 2<TD>";
|
|
97 printf("<INPUT TYPE=TEXT NAME=phone2 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
98 $phone2);
|
|
99 print "<TR><TD ALIGN=RIGHT>Public number<TD>";
|
|
100 printf("<INPUT TYPE=CHECKBOX NAME=ph2_pub %s SIZE=\"50%\"></TR>\n",
|
|
101 (($ph2_pub eq "0") ? '' : 'CHECKED'));
|
|
102 print "<TR><TD ALIGN=RIGHT>Email<TD>";
|
|
103 printf("<INPUT TYPE=TEXT NAME=email VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
104 $email);
|
|
105 print "<TR><TD ALIGN=RIGHT>Public Email<TD>";
|
|
106 printf("<INPUT TYPE=CHECKBOX NAME=email_pub %s SIZE=\"50%\"></TR>\n",
|
|
107 (($email_pub eq "0") ? '' : 'CHECKED'));
|
|
108 print "<TR><TD ALIGN=RIGHT>Address 1<TD>";
|
|
109 printf("<INPUT TYPE=TEXT NAME=addy1 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
110 $address1);
|
|
111 print "<TR><TD ALIGN=RIGHT>Address 2<TD>";
|
|
112 printf("<INPUT TYPE=TEXT NAME=addy2 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
113 $address2);
|
|
114 print "<TR><TD ALIGN=RIGHT>Address 3<TD>";
|
|
115 printf("<INPUT TYPE=TEXT NAME=addy3 VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
116 $address3);
|
|
117 print "<TR><TD ALIGN=RIGHT>Public Address<TD>";
|
|
118 printf("<INPUT TYPE=CHECKBOX NAME=addy_pub %s SIZE=\"50%\"></TR>\n",
|
|
119 (($addy_pub eq "0") ? '' : 'CHECKED'));
|
|
120 print "<TR><TD ALIGN=RIGHT>Comments<TD>";
|
|
121 printf("<INPUT TYPE=TEXT NAME=comments VALUE=\"%s\" SIZE=\"50%\"></TR>\n",
|
|
122 $comments);
|
|
123 printf("<TR><TD ALIGN=RIGHT>Joined on<TD>@array[13]</TR>\n", $joined);
|
|
124 printf("<TR><TD ALIGN=RIGHT>Last Membership paid<TD>%s</TR>\n", $lstmemfee);
|
|
125 printf("<TR><TD ALIGN=RIGHT>Last Membership date<TD>%s</TR>\n", $lstpddate);
|
|
126 print "</TABLE>\n";
|
|
127 print "<INPUT TYPE=HIDDEN NAME=\"type\" VALUE=\"adjust\">\n";
|
|
128 print "<INPUT TYPE=SUBMIT VALUE=\"Update information\"><P>\n";
|
|
129 print "Or <A HREF=\"/scs/games/edit.html\">Go back to the Edit page</A>\n";
|
|
130 print "<P>";
|
|
131 }
|
|
132 } else {
|
|
133 # Couldn't find the member ID given
|
|
134 print "No such member ID $id<P>\n";
|
|
135 print "<A HREF=\"/scs/games/edit.html\">Try again</A>\n";
|
|
136 }
|
|
137
|
|
138 # Close down DB stuff
|
|
139 $sth->finish || bad_exit($sth->errstr);
|
|
140
|
|
141 $dbh->disconnect || bad_exit($sth->errstr);
|
|
142
|
|
143 # We are doing an adjust
|
|
144 } elsif ($type eq "adjust") {
|
|
145 # Connect to the Database
|
|
146 $dbh = DBI->connect("dbi:Pg:dbname=$dbname", $user, $passwd) || bad_exit($sth->errstr);
|
|
147
|
|
148 # Prepare the select statement
|
|
149 $sth = $dbh->prepare("SELECT * FROM members WHERE memberid = $id") || bad_exit($sth->errstr);
|
|
150
|
|
151 # Execute it
|
|
152 $numrows = $sth->execute || bad_exit($sth->errstr);
|
|
153
|
|
154 # Get one row. Only one.. if there is more than one, bad things have happened :)
|
|
155 if (@array = $sth->fetchrow_array) {
|
|
156
|
|
157 # Check their password
|
|
158 if (&dtrail(@array[4]) ne &dtrail($input{'passwd'})) {
|
|
159 print "Bad password for Member ID $id<P>\n";
|
|
160 print "Please report this error to <A HREF=\"mailto:darius\@dons.net.au\">\n";
|
|
161 print "the administrator</A><P>\n";
|
|
162 print "<A HREF=\"/scs/games/edit.html\">Try again</A>\n";
|
|
163 } else {
|
|
164 $fname = san_str($input{'fname'});
|
|
165 $lname = san_str($input{'lname'});
|
|
166 $nick = san_str($input{'nick'});
|
|
167 $pwd1 = san_str($input{'pwd1'});
|
|
168 $pwd2 = san_str($input{'pwd2'});
|
|
169 $age = san_num($input{'age'});
|
|
170 $phone1 = san_str($input{'phone1'});
|
|
171 $ph1_pub = (san_str($input{'ph1_pub'}) eq 'on') ? 't' : 'f';
|
|
172 $phone2 = san_str($input{'phone2'});
|
|
173 $ph2_pub = (san_str($input{'ph2_pub'}) eq 'on') ? 't' : 'f';
|
|
174 $email = san_str($input{'email'});
|
|
175 $email_pub = (san_str($input{'email_pub'}) eq 'on') ? 't' : 'f';
|
|
176 $address1 = san_str($input{'addy1'});
|
|
177 $address2 = san_str($input{'addy2'});
|
|
178 $address3 = san_str($input{'addy3'});
|
|
179 $addy_pub = (san_str($input{'addy_pub'}) eq 'on') ? 't' : 'f';
|
|
180 $comments = san_str($input{'comments'});
|
|
181
|
|
182 if ($pwd1 ne $pwd2) {
|
|
183 print "New password mismatch\n";
|
|
184 print "<A HREF=\"/scs/games/edit.html\">Try again</A>\n";
|
|
185 } else {
|
|
186 $dbh->do("UPDATE members SET firstname=\'$fname\', lastname=\'$lname\', nickname=\'$nick\', pin=\'$pwd1\', age=\'$age\', phone1=\'$phone1\', ph1_pub=\'$ph1_pub', phone2=\'$phone2\', ph2_pub=\'$ph2_pub\', email=\'$email\', email_pub=\'$email_pub\', address1=\'$address1\', address2=\'$address2\', address3=\'$address3\', addy_pub=\'$addy_pub\', comments=\'$comments\' WHERE memberid=$id;") || bad_exit($sth->errstr);
|
|
187 print "Update finished!<P>\n";
|
|
188 print "Go back to the <A HREF=\"/games/scs/edit.html\">Edit Page</A>";
|
|
189 }
|
|
190 }
|
|
191 } else {
|
|
192 # Couldn't find the member ID given
|
|
193 print "No such member ID $id<P>\n";
|
|
194 print "<A HREF=\"/scs/games/edit.html\">Try again</A>\n";
|
|
195 }
|
|
196
|
|
197 # Close down DB stuff
|
|
198 $sth->finish || bad_exit($sth->errstr);
|
|
199
|
|
200 $dbh->disconnect || bad_exit($sth->errstr);
|
|
201
|
|
202 # Something weird happened here
|
|
203 } else {
|
|
204 print "Unsupported action!<P>\n";
|
|
205 print "Please email <A HREF=\"mailto:darius\@dons.net.au\">The Administrator</A> and<BR>\n";
|
|
206 print "give a problem report. Thanks!<P>";
|
|
207 }
|
|
208
|
|
209 print &HtmlBot;
|
|
210 }
|
|
211
|
|
212 sub bad_exit
|
|
213 {
|
|
214 print "<H2>An internal error has occurred</H2><BR>";
|
|
215 print "Please mail <A HREF=\"mailto:darius\@dons.net.au\">The Administrator</A> and\n";
|
|
216 print "say the following error occured - $_[0]<P>";
|
|
217 print "<A HREF=\"/scs/games/edit.html\">Back to the Edit Page</A>\n";
|
|
218
|
|
219 print &HtmlBot;
|
|
220
|
|
221 exit(0);
|
|
222 }
|
|
223
|
|
224 sub dtrail
|
|
225 {
|
|
226 $_[0] =~ s/(\ *)$//g;
|
|
227 return $_[0];
|
|
228 }
|
|
229
|
|
230 sub san_str
|
|
231 {
|
|
232 $_[0] =~ s/\\/\\\\/g;
|
|
233 $_[0] =~ s/'/\\'/g;
|
|
234 $_[0] =~ s/"/\\"/g;
|
|
235 return $_[0];
|
|
236 }
|
|
237
|
|
238 sub san_num
|
|
239 {
|
|
240 # $_[0] =~ s/'/\\'/g;
|
|
241 return $_[0];
|
|
242 }
|