Mercurial > hg > fapweb
annotate register.inc.php @ 188:a49c5f15a273
Less strict username check.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 08 Nov 2013 20:39:35 +0200 |
parents | 1fcdc6e752f6 |
children | 988e0ab2b77e |
rev | line source |
---|---|
0 | 1 <? |
136
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
2 // |
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
3 // FAPWeb Simple Demoparty System |
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
4 // Attendee registration page |
aeebfedb5709
Add some copyright headers.
Matti Hamalainen <ccr@tnsp.org>
parents:
103
diff
changeset
|
5 // (C) Copyright 2012-2013 Tecnic Software productions (TNSP) |
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 | |
14 | |
15 function stPrintFormData($button, $mode = "start") | |
16 { | |
17 echo | |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
18 stGetFormStart("register"). |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
19 " ".stGetFormSubmitInput("continue", $button)."\n"; |
0 | 20 |
21 stPrintFormHiddenInput("mode", $mode); | |
22 | |
23 foreach (array("name", "groups", "email", "oneliner", "hash", "botcheck") as $name) | |
24 stPrintFormHiddenInput($name, stGetRequestItem($name)); | |
25 | |
26 echo "</form>\n"; | |
27 } | |
28 | |
29 | |
138 | 30 // Convert integer value to hash code |
0 | 31 function intValueToHash($val) |
32 { | |
33 global $botCheckIDs; | |
34 $str = ""; | |
35 do | |
36 { | |
37 $str = $botCheckIDs[$val & 31].$str; | |
38 $val >>= 5; | |
39 } | |
40 while ($val > 0); | |
41 return $str; | |
42 } | |
43 | |
44 | |
138 | 45 // Convert integer hash to integer value |
0 | 46 function intHashToValue($hash) |
47 { | |
48 global $botCheckIDs; | |
49 for ($val = 0, $i = 0; $i < strlen($hash); $i++) | |
50 { | |
51 $val *= 32; | |
52 $n = strpos($botCheckIDs, $hash[$i]); | |
53 if ($n !== FALSE) | |
54 $val += $n; | |
55 else | |
56 return -2; | |
57 } | |
58 return $val; | |
59 } | |
60 | |
61 | |
138 | 62 // Split hash into parts |
0 | 63 function splitHash($hash) |
64 { | |
65 global $botCheckOPs; | |
66 return preg_split("/([".$botCheckOPs."])/", $hash, -1, PREG_SPLIT_DELIM_CAPTURE); | |
67 } | |
68 | |
69 | |
70 function hashToCheckStr($hash) | |
71 { | |
72 global $botCheckOPs, $botCheckROPs; | |
73 $out = ""; | |
74 | |
75 foreach (splitHash($hash) as $val) | |
76 { | |
77 $i = strpos($botCheckOPs, $val); | |
78 if ($i !== FALSE) | |
79 $out .= " ".$botCheckROPs[$i]." "; | |
80 else | |
81 $out .= intHashToValue($val); | |
82 } | |
83 return $out; | |
84 } | |
85 | |
86 | |
87 function hashToAnswer($hash) | |
88 { | |
89 eval("\$res = ".hashToCheckStr($hash).";"); | |
90 return $res; | |
91 } | |
92 | |
138 | 93 // 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
|
94 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
|
95 |
0 | 96 // Check if registration is enabled |
97 if (!stChkSetting("allowRegister")) | |
98 { | |
182
e227e6a3d46b
Move some texts to settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
99 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
|
100 } |
c6b9041078ec
Add hard limit option for attendees, and add feature of using "0" to disable
Matti Hamalainen <ccr@tnsp.org>
parents:
48
diff
changeset
|
101 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
|
102 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
|
103 { |
182
e227e6a3d46b
Move some texts to settings.
Matti Hamalainen <ccr@tnsp.org>
parents:
138
diff
changeset
|
104 echo stGetSetting("registerLimitExceeded"); |
0 | 105 } |
106 else | |
107 if ($mode == "start") | |
108 { | |
138 | 109 // |
110 // Show registration form | |
111 // | |
112 // Generate bot-check | |
0 | 113 $botCheckHash = |
114 intValueToHash(rand(1,5)). | |
115 $botCheckOPs[rand(0,2)]. | |
116 intValueToHash(rand(1,5)). | |
117 $botCheckOPs[rand(0,2)]. | |
118 intValueToHash(5 * rand(1,5)); | |
119 | |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
120 echo |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
121 "<h1>Registration</h1>\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
122 stGetFormStart("register"). |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
123 " ".stGetFormHiddenInput("mode", "check")."\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
124 " ".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
|
125 " <table class=\"register\">\n"; |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
126 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
|
127 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
|
128 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
|
129 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
|
130 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
|
131 //" [".hashToAnswer($botCheckHash)."]". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
132 ")", 20, 20, "botcheck", "autocomplete=\"off\""); |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
133 echo |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
134 " <tr><td colspan=\"2\"></td><td>".stGetFormSubmitInput("register", "Register")."</td></tr>\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
135 " </table>\n". |
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
136 "</form>\n"; |
0 | 137 |
26
7be3f8cf1f7a
Lots of cleanups, preparing for adding entry submission support.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
138 echo stGetSetting("registerInfoText"); |
0 | 139 } |
140 else | |
141 if ($mode == "check") | |
142 { | |
138 | 143 // |
144 // Check the registrant's details | |
145 // | |
187 | 146 stChkRequestItem("name", $fake, |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
147 array(CHK_ISGT, VT_STR, 0, "Handle / name not given."), |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
148 array(CHK_ISLT, VT_STR, SET_LEN_USERNAME, "Handle / name is too long, should be less than ".SET_LEN_USERNAME." characters.")); |
0 | 149 |
187 | 150 stChkRequestItem("groups", $fake, |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
151 array(CHK_ISLT, VT_STR, SET_LEN_GROUPS, "Groups are too long, should be less than ".SET_LEN_GROUPS." characters.")); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
152 |
187 | 153 stChkRequestItem("oneliner", $fake, |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
154 array(CHK_ISLT, VT_STR, SET_LEN_ONELINER, "Oneliner is too long, should be less than ".SET_LEN_ONELINER." characters.")); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
155 |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
156 stChkRequestItem("hash", $hash, |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
157 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
|
158 |
0 | 159 |
16 | 160 $email = stGetRequestItem("email"); |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
161 if (stGetSetting("requireEMail") && strlen($email) < 4) |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
162 stError("E-mail address not given, or it is too short."); |
16 | 163 |
48 | 164 if (strlen($email) > 0 && (strpos($email, "@") === FALSE || strpos($email, ".") === FALSE)) |
16 | 165 stError("E-mail address not in proper format."); |
166 | |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
167 if (strlen($email) > SET_LEN_EMAIL) |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
168 stError("E-mail address too long, max ".SET_LEN_EMAIL." characters."); |
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
169 |
0 | 170 $answer = stGetRequestItem("botcheck"); |
171 if (hashToAnswer($hash) != intval($answer)) | |
172 stError("Incorrect answer to I.Q. / bot check."); | |
173 | |
174 if ($errorSet) | |
175 { | |
183 | 176 echo |
177 "<p>Following errors occured:</p>\n". | |
178 "<ul>\n".$errorMsg."</ul>\n"; | |
0 | 179 stPrintFormData("Go back"); |
180 } | |
181 else | |
182 { | |
183 $sql = stPrepareSQL( | |
184 "INSERT INTO attendees (regtime,name,groups,oneliner,email) VALUES (%d,%S,%S,%S,%S)", | |
185 time(), "name", "groups", "oneliner", "email"); | |
186 | |
187 if (stExecSQL($sql) !== FALSE) | |
188 { | |
183 | 189 echo stGetSetting("registerPostText"); |
16 | 190 |
184
1b30c2107e5b
Add function for validating input with different definable conditions. Use
Matti Hamalainen <ccr@tnsp.org>
parents:
183
diff
changeset
|
191 if (strlen($email) < 4) |
16 | 192 echo stGetSetting("registerPostNoEmail"); |
0 | 193 } |
194 else | |
195 { | |
183 | 196 echo |
197 "<h1>An error occured.</h1>\n". | |
198 "<p>Oh noes! SQL error happenstance!</p>"; | |
0 | 199 } |
200 } | |
201 } | |
202 ?> |