Mercurial > hg > fapweb
annotate pages/register.inc.php @ 1010:b3f579c33b08
Cosmetics, comments.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 04 Nov 2015 16:43:42 +0200 |
parents | ffacd904fd1f |
children | b7916209da83 |
rev | line source |
---|---|
0 | 1 <? |
136
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
2 // |
571
ce11ea112a65
Change the header blurb a bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
565
diff
changeset
|
3 // FAPWeb - Simple Web-based Demoparty Management System |
136
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
4 // Attendee registration page |
1001 | 5 // (C) Copyright 2012-2015 Tecnic Software productions (TNSP) |
136
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
6 // |
0 | 7 $mode = stGetRequestItem("mode", "start"); |
8 | |
138 | 9 // Settings for robot check hash generator |
0 | 10 $botCheckIDs = "aBcdefghIjklmnopqrsTuvxyz0123456"; |
11 $botCheckOPs = "bit"; | |
12 $botCheckROPs = "+-*"; | |
13 | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
14 $formFields = array( |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
15 "name" => "Name", |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
16 "groups" => "Group(s)", |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
17 "email" => "E-mail", |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
18 "oneliner" => "Oneliner", |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
19 "hash" => FALSE, |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
20 "botcheck" => FALSE, |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
21 ); |
0 | 22 |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
23 |
734
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
24 function stPrintFormTextInput($text1, $text2, $size, $len, $name, $extra="") |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
25 { |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
26 echo " <tr><th>".chentities($text1)."</th><td>". |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
27 stGetFormTextInput($size, $len, $name, "", "", stGetRequestItem($name), $extra). |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
28 "</td><td>".chentities($text2)."</td></tr>\n"; |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
29 } |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
30 |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
31 |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
32 function stPrintFormHiddenInput($name, $value) |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
33 { |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
34 echo " ".stGetFormHiddenInput($name, $value)."\n"; |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
35 } |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
36 |
26a168d3390f
Move functions into a more appropriate file.
Matti Hamalainen <ccr@tnsp.org>
parents:
716
diff
changeset
|
37 |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
38 function stPrintFormData($button, $mode = "start", $exclude = array()) |
0 | 39 { |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
40 global $formFields; |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
41 |
0 | 42 echo |
771
cd8a29647c09
Change the API of stGetFormStart().
Matti Hamalainen <ccr@tnsp.org>
parents:
734
diff
changeset
|
43 stGetFormStart("register", "register"). |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
44 " ".stGetFormSubmitInput("continue", $button)."\n"; |
0 | 45 |
46 stPrintFormHiddenInput("mode", $mode); | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
47 |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
48 foreach ($formFields as $name => $title) |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
49 { |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
50 if (!in_array($name, $exclude)) |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
51 stPrintFormHiddenInput($name, stGetRequestItem($name)); |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
52 } |
0 | 53 |
54 echo "</form>\n"; | |
55 } | |
56 | |
57 | |
138 | 58 // Convert integer value to hash code |
0 | 59 function intValueToHash($val) |
60 { | |
61 global $botCheckIDs; | |
62 $str = ""; | |
63 do | |
64 { | |
65 $str = $botCheckIDs[$val & 31].$str; | |
66 $val >>= 5; | |
67 } | |
68 while ($val > 0); | |
69 return $str; | |
70 } | |
71 | |
72 | |
138 | 73 // Convert integer hash to integer value |
0 | 74 function intHashToValue($hash) |
75 { | |
76 global $botCheckIDs; | |
77 for ($val = 0, $i = 0; $i < strlen($hash); $i++) | |
78 { | |
79 $val *= 32; | |
80 $n = strpos($botCheckIDs, $hash[$i]); | |
81 if ($n !== FALSE) | |
82 $val += $n; | |
83 else | |
84 return -2; | |
85 } | |
86 return $val; | |
87 } | |
88 | |
89 | |
138 | 90 // Split hash into parts |
0 | 91 function splitHash($hash) |
92 { | |
93 global $botCheckOPs; | |
94 return preg_split("/([".$botCheckOPs."])/", $hash, -1, PREG_SPLIT_DELIM_CAPTURE); | |
95 } | |
96 | |
97 | |
98 function hashToCheckStr($hash) | |
99 { | |
100 global $botCheckOPs, $botCheckROPs; | |
101 $out = ""; | |
102 | |
103 foreach (splitHash($hash) as $val) | |
104 { | |
105 $i = strpos($botCheckOPs, $val); | |
106 if ($i !== FALSE) | |
107 $out .= " ".$botCheckROPs[$i]." "; | |
108 else | |
109 $out .= intHashToValue($val); | |
110 } | |
111 return $out; | |
112 } | |
113 | |
114 | |
115 function hashToAnswer($hash) | |
116 { | |
117 eval("\$res = ".hashToCheckStr($hash).";"); | |
118 return $res; | |
119 } | |
120 | |
1010 | 121 |
138 | 122 // Check if user registration is available |
103
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
123 stCheckRegistrationAvailable(); |
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
124 |
1010 | 125 |
0 | 126 // Check if registration is enabled |
127 if (!stChkSetting("allowRegister")) | |
128 { | |
182
e227e6a3d46b
Move some texts to settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
129 echo stGetSetting("registerNotEnabled"); |
103
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
130 } |
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
131 else |
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
132 if ($maxAttendeesHard > 0 && $numAttendees >= $maxAttendeesHard) |
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
133 { |
182
e227e6a3d46b
Move some texts to settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
134 echo stGetSetting("registerLimitExceeded"); |
0 | 135 } |
136 else | |
137 if ($mode == "start") | |
138 { | |
138 | 139 // |
140 // Show registration form | |
141 // | |
142 // Generate bot-check | |
0 | 143 $botCheckHash = |
144 intValueToHash(rand(1,5)). | |
145 $botCheckOPs[rand(0,2)]. | |
146 intValueToHash(rand(1,5)). | |
147 $botCheckOPs[rand(0,2)]. | |
148 intValueToHash(5 * rand(1,5)); | |
149 | |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
150 echo |
659
1702a5e0b9c3
Add new settings for certain HTML pieces.
Matti Hamalainen <ccr@tnsp.org>
parents:
656
diff
changeset
|
151 stGetSetting("registerPageBlurb"). |
771
cd8a29647c09
Change the API of stGetFormStart().
Matti Hamalainen <ccr@tnsp.org>
parents:
734
diff
changeset
|
152 stGetFormStart("register", "register"). |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
153 " ".stGetFormHiddenInput("mode", "check")."\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
154 " ".stGetFormHiddenInput("hash", $botCheckHash)."\n". |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
155 " <table class=\"register\">\n"; |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
156 stPrintFormTextInput("Handle:", "(elite)", 20, SET_LEN_USERNAME, "name"); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
157 stPrintFormTextInput("Group(s):", "(elite crew^supahmen)", 30, SET_LEN_GROUPS, "groups"); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
158 stPrintFormTextInput("E-mail:", "(to be informed of location etc)", 30, SET_LEN_EMAIL, "email"); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
159 stPrintFormTextInput("Oneliner:", "(whatever)", 30, SET_LEN_ONELINER, "oneliner"); |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
160 stPrintFormTextInput(hashToCheckStr($botCheckHash)." = ", "(I.Q. / robot check". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
161 //" [".hashToAnswer($botCheckHash)."]". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
162 ")", 20, 20, "botcheck", "autocomplete=\"off\""); |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
163 echo |
195 | 164 " <tr><td colspan=\"2\"></td><td>".stGetFormSubmitInput("register", "Continue")."</td></tr>\n". |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
165 " </table>\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
166 "</form>\n"; |
0 | 167 |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
168 echo stGetSetting("registerInfoText"); |
0 | 169 } |
170 else | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
171 if ($mode == "check" || $mode == "register") |
0 | 172 { |
138 | 173 // |
174 // Check the registrant's details | |
175 // | |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
176 stChkRequestItem("hash", $hash, |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
177 array(CHK_GTEQ, VT_STR, 0, "Invalid data.")); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
178 |
646
2eeca16e9c96
Improve attendee adding/updating data validation.
Matti Hamalainen <ccr@tnsp.org>
parents:
594
diff
changeset
|
179 stValidateRequestUserData(FALSE, FALSE); |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
180 |
0 | 181 $answer = stGetRequestItem("botcheck"); |
182 if (hashToAnswer($hash) != intval($answer)) | |
183 stError("Incorrect answer to I.Q. / bot check."); | |
184 | |
185 if ($errorSet) | |
186 { | |
1010 | 187 // There were errors or missing data |
183 | 188 echo |
714
014244a01d17
Use header tag instead of para.
Matti Hamalainen <ccr@tnsp.org>
parents:
659
diff
changeset
|
189 "<h1>Following errors occured:</h1>\n". |
210 | 190 "<ul>\n"; |
191 | |
192 foreach ($errorMsgs as $msg) | |
193 echo " <li>".$msg."</li>\n"; | |
194 | |
195 echo "</ul>\n"; | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
196 stPrintFormData("Go back", "start", array("botcheck")); |
0 | 197 } |
198 else | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
199 if ($mode == "register") |
0 | 200 { |
1010 | 201 // Data ok, registration mode |
716 | 202 $sql = stGetAttendeeRegistrationSQL(); |
0 | 203 if (stExecSQL($sql) !== FALSE) |
204 { | |
183 | 205 echo stGetSetting("registerPostText"); |
16 | 206 |
594 | 207 if (strlen(stGetRequestItem("email")) < 4) |
16 | 208 echo stGetSetting("registerPostNoEmail"); |
0 | 209 } |
210 else | |
211 { | |
183 | 212 echo |
213 "<h1>An error occured.</h1>\n". | |
214 "<p>Oh noes! SQL error happenstance!</p>"; | |
0 | 215 } |
216 } | |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
217 else |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
218 { |
1010 | 219 // Data ok, verify |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
220 echo |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
221 "<h1>Verify your information</h1>\n". |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
222 "<p>Is the following information correct?</p>\n". |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
223 "<table class=\"register\">\n"; |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
224 |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
225 foreach ($formFields as $name => $title) |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
226 { |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
227 if ($title !== FALSE) |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
228 { |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
229 echo |
656
c6df2ea4d5bf
Use <th>-element instead of <td>.
Matti Hamalainen <ccr@tnsp.org>
parents:
646
diff
changeset
|
230 " <tr><th class=\"".$name."\">".chentities($title).":</th>". |
191
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
231 "<td>".chentities(stGetRequestItem($name))."</td></tr>\n"; |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
232 } |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
233 } |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
234 echo "</table>\n"; |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
235 |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
236 stPrintFormData("Go back", "start", array("botcheck")); |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
237 stPrintFormData("Register", "register"); |
988e0ab2b77e
Improve registration process by adding information verification phase.
Matti Hamalainen <ccr@tnsp.org>
parents:
188
diff
changeset
|
238 } |
0 | 239 } |
240 ?> |