· 9 years ago · Oct 25, 2016, 05:36 PM
1Error:
2Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), timestamp int NOT NU' at line 1
3
4----------------------------------------------------
5My process.php
6<?php
7require_once('config.php');
8require_once('functions.php');
9require_once('../extlib/vdaemon/vdaemon.php');
10require_once('../extlib/recaptchalib.php');
11
12/*Checks the CAPTCHA*/
13$resp = recaptcha_check_answer (R_PRIVATE,
14 $_SERVER["REMOTE_ADDR"],
15 $_POST["recaptcha_challenge_field"],
16 $_POST["recaptcha_response_field"]);
17
18if (!$resp->is_valid) {
19 die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
20 "(reCAPTCHA said: " . $resp->error . ")");
21}
22
23
24/*Check to see if the form was submitted from the installed domain. If so,
25process the data. If not, kill the script. Obviously, you can disable this, but
26it's strongly recommended that you keep this check in place.*/
27$domain = $_SERVER['HTTP_HOST'];
28$uri = parse_url($_SERVER['HTTP_REFERER']);
29$r_domain = $uri['host'];
30
31if ( $domain == $r_domain ) {
32
33 /*Open the connection to our database use the info from the config file.*/
34 $link = f_sqlConnect(DB_USER, DB_PASSWORD, DB_NAME);
35
36 /*This cleans our &_POST array to prevent against SQL injection attacks.*/
37 $_POST = f_clean($_POST);
38
39 /*These are the main variables we'll use to process the form.*/
40 $table = $_POST['formID'];
41 $keys = implode(", ", (array_keys($_POST)));
42 $values = implode("', '", (array_values($_POST)));
43
44 /*These are variables for our redirect.*/
45 $redirect = $_POST['redirect_to'];
46 $referred = $_SERVER['HTTP_REFERER'];
47 $query = parse_url($referred, PHP_URL_QUERY);
48 $referred = str_replace(array('?', $query), '', $referred);
49
50 /*These are the extra data fields we'll collect on form submission.*/
51 $x_fields = 'timestamp, ip';
52 $x_values = time() . "', '" . f_getIP();
53
54 /*Check to see if the table exists and if it doesn't create it.*/
55 if ( !f_tableExists($table, DB_NAME) ) {
56 $sql = "CREATE TABLE $table (
57 ID int NOT NULL AUTO_INCREMENT,
58 PRIMARY KEY(ID),
59 timestamp int NOT NULL,
60 ip int NOT NULL
61 )";
62
63 $result = mysql_query($sql);
64
65 if (!$result) {
66 die('Invalid query: ' . mysql_error());
67 }
68
69 }
70
71 /*Check to see if the fields specified in the form exist and if they don't, create them.*/
72 foreach ($_POST as $key => $value) {
73 $column = mysql_real_escape_string($key);
74 $alter = f_fieldExists($table, $column, $column_attr = "VARCHAR( 255 ) NULL" );
75
76 if (!alter) {
77 echo 'Unable to add column: ' . $column;
78 }
79 }
80
81 /*Insert out values into the database.*/
82 $sql="INSERT INTO $table ($keys, $x_fields) VALUES ('$values', '$x_values')";
83
84 if (!mysql_query($sql)) {
85 die('Error: ' . mysql_error());
86 }
87
88 /*Close our database connection.*/
89 mysql_close();
90
91 /*Redirect the user after a successful form submission*/
92 if ( !empty ( $redirect ) ) {
93 header("Location: $redirect?msg=1");
94 } else {
95 header("Location: $referred?msg=1");
96 }
97} else {
98 die('You are not allowed to submit data to this form');
99}
100?>
101
102------------------------------------------------
103My /core/config.php:
104<?php
105/*Configuration Settings*/
106
107/*MySQL Settings*/
108/*Database name*/
109define('DB_NAME', 'wl');
110
111/*Database user*/
112define('DB_USER', 'wl');
113
114/*Database user password*/
115define('DB_PASSWORD', 'My user's password here');
116
117/* Chances are you won't need to change the following three
118settings. Only do so if you know what you're doing.*/
119
120/*Database host*/
121define('DB_HOST', 'localhost');
122
123/*Database character set*/
124define('DB_CHARSET', 'utf8');
125
126/*Database collation*/
127define('DB_COLLATE', '');
128
129/*RECAPTCHA Settings*/
130/*Public Key*/
131define('R_PUBLIC', 'My public key here');
132
133/*Private Key*/
134define('R_PRIVATE', 'My Private Key here');
135
136?>
137
138------------------
139my index.php
140
141<?php
142require_once(dirname(__FILE__) . '/extlib/vdaemon/vdaemon.php');
143require_once(dirname(__FILE__) . '/extlib/recaptchalib.php');
144require_once(dirname(__FILE__) . '/core/config.php');
145 ?>
146<html>
147<head>
148<style type="text/css">
149body {
150 background: #e4e4e4;
151}
152
153.form {
154 width: 600px;
155 margin: 0 auto;
156 background: #fff;
157 padding: 45px;
158 border: 1px solid #c2c2c2;
159}
160
161.error {
162 color: #AA0000
163}
164.controlerror {
165 background-color: #ffffdd;
166 border: 1px solid #AA0000;
167}
168
169.input {
170 width: 300px;
171 height: 35px;
172 margin-left: 10px;
173}
174</style>
175</head>
176<body>
177<div class="form">
178<?php
179$msg = $_GET['msg'];
180
181if ( $msg == '1' ) {
182 echo '<p>Your information was submitted successfully.</p>';
183}
184?>
185
186<form action="core/process.php" method="post" id="Hermitcraft" runat="vdaemon">
187<vlsummary class="error" headertext="Error(s) found:">
188<input type="hidden" name="redirect_to" value="http://hermitcraft.org/forum/sucess.html" />
189 Minecraft username:<br>
190 <input type="text" name="username" placeholder="Notch" required><br>
191 Email Adress:<br>
192 <input type="email" name="email" placeholder="email@mail.com" required><br>
193 Country:<br>
194 <select name="country" required>
195 <option value=""></option>
196 <option value="AFG">Afghanistan</option>
197 <option value="ALA">Ã…land Islands</option>
198 <option value="ALB">Albania</option>
199 <option value="DZA">Algeria</option>
200 <option value="ASM">American Samoa</option>
201 <option value="AND">Andorra</option>
202 <option value="AGO">Angola</option>
203 <option value="AIA">Anguilla</option>
204 <option value="ATA">Antarctica</option>
205 <option value="ATG">Antigua and Barbuda</option>
206 <option value="ARG">Argentina</option>
207 <option value="ARM">Armenia</option>
208 <option value="ABW">Aruba</option>
209 <option value="AUS">Australia</option>
210 <option value="AUT">Austria</option>
211 <option value="AZE">Azerbaijan</option>
212 <option value="BHS">Bahamas</option>
213 <option value="BHR">Bahrain</option>
214 <option value="BGD">Bangladesh</option>
215 <option value="BRB">Barbados</option>
216 <option value="BLR">Belarus</option>
217 <option value="BEL">Belgium</option>
218 <option value="BLZ">Belize</option>
219 <option value="BEN">Benin</option>
220 <option value="BMU">Bermuda</option>
221 <option value="BTN">Bhutan</option>
222 <option value="BOL">Bolivia, Plurinational State of</option>
223 <option value="BES">Bonaire, Sint Eustatius and Saba</option>
224 <option value="BIH">Bosnia and Herzegovina</option>
225 <option value="BWA">Botswana</option>
226 <option value="BVT">Bouvet Island</option>
227 <option value="BRA">Brazil</option>
228 <option value="IOT">British Indian Ocean Territory</option>
229 <option value="BRN">Brunei Darussalam</option>
230 <option value="BGR">Bulgaria</option>
231 <option value="BFA">Burkina Faso</option>
232 <option value="BDI">Burundi</option>
233 <option value="KHM">Cambodia</option>
234 <option value="CMR">Cameroon</option>
235 <option value="CAN">Canada</option>
236 <option value="CPV">Cape Verde</option>
237 <option value="CYM">Cayman Islands</option>
238 <option value="CAF">Central African Republic</option>
239 <option value="TCD">Chad</option>
240 <option value="CHL">Chile</option>
241 <option value="CHN">China</option>
242 <option value="CXR">Christmas Island</option>
243 <option value="CCK">Cocos (Keeling) Islands</option>
244 <option value="COL">Colombia</option>
245 <option value="COM">Comoros</option>
246 <option value="COG">Congo</option>
247 <option value="COD">Congo, the Democratic Republic of the</option>
248 <option value="COK">Cook Islands</option>
249 <option value="CRI">Costa Rica</option>
250 <option value="CIV">Côte d'Ivoire</option>
251 <option value="HRV">Croatia</option>
252 <option value="CUB">Cuba</option>
253 <option value="CUW">Curaçao</option>
254 <option value="CYP">Cyprus</option>
255 <option value="CZE">Czech Republic</option>
256 <option value="DNK">Denmark</option>
257 <option value="DJI">Djibouti</option>
258 <option value="DMA">Dominica</option>
259 <option value="DOM">Dominican Republic</option>
260 <option value="ECU">Ecuador</option>
261 <option value="EGY">Egypt</option>
262 <option value="SLV">El Salvador</option>
263 <option value="GNQ">Equatorial Guinea</option>
264 <option value="ERI">Eritrea</option>
265 <option value="EST">Estonia</option>
266 <option value="ETH">Ethiopia</option>
267 <option value="FLK">Falkland Islands (Malvinas)</option>
268 <option value="FRO">Faroe Islands</option>
269 <option value="FJI">Fiji</option>
270 <option value="FIN">Finland</option>
271 <option value="FRA">France</option>
272 <option value="GUF">French Guiana</option>
273 <option value="PYF">French Polynesia</option>
274 <option value="ATF">French Southern Territories</option>
275 <option value="GAB">Gabon</option>
276 <option value="GMB">Gambia</option>
277 <option value="GEO">Georgia</option>
278 <option value="DEU">Germany</option>
279 <option value="GHA">Ghana</option>
280 <option value="GIB">Gibraltar</option>
281 <option value="GRC">Greece</option>
282 <option value="GRL">Greenland</option>
283 <option value="GRD">Grenada</option>
284 <option value="GLP">Guadeloupe</option>
285 <option value="GUM">Guam</option>
286 <option value="GTM">Guatemala</option>
287 <option value="GGY">Guernsey</option>
288 <option value="GIN">Guinea</option>
289 <option value="GNB">Guinea-Bissau</option>
290 <option value="GUY">Guyana</option>
291 <option value="HTI">Haiti</option>
292 <option value="HMD">Heard Island and McDonald Islands</option>
293 <option value="VAT">Holy See (Vatican City State)</option>
294 <option value="HND">Honduras</option>
295 <option value="HKG">Hong Kong</option>
296 <option value="HUN">Hungary</option>
297 <option value="ISL">Iceland</option>
298 <option value="IND">India</option>
299 <option value="IDN">Indonesia</option>
300 <option value="IRN">Iran, Islamic Republic of</option>
301 <option value="IRQ">Iraq</option>
302 <option value="IRL">Ireland</option>
303 <option value="IMN">Isle of Man</option>
304 <option value="ISR">Israel</option>
305 <option value="ITA">Italy</option>
306 <option value="JAM">Jamaica</option>
307 <option value="JPN">Japan</option>
308 <option value="JEY">Jersey</option>
309 <option value="JOR">Jordan</option>
310 <option value="KAZ">Kazakhstan</option>
311 <option value="KEN">Kenya</option>
312 <option value="KIR">Kiribati</option>
313 <option value="PRK">Korea, Democratic People's Republic of</option>
314 <option value="KOR">Korea, Republic of</option>
315 <option value="KWT">Kuwait</option>
316 <option value="KGZ">Kyrgyzstan</option>
317 <option value="LAO">Lao People's Democratic Republic</option>
318 <option value="LVA">Latvia</option>
319 <option value="LBN">Lebanon</option>
320 <option value="LSO">Lesotho</option>
321 <option value="LBR">Liberia</option>
322 <option value="LBY">Libya</option>
323 <option value="LIE">Liechtenstein</option>
324 <option value="LTU">Lithuania</option>
325 <option value="LUX">Luxembourg</option>
326 <option value="MAC">Macao</option>
327 <option value="MKD">Macedonia, the former Yugoslav Republic of</option>
328 <option value="MDG">Madagascar</option>
329 <option value="MWI">Malawi</option>
330 <option value="MYS">Malaysia</option>
331 <option value="MDV">Maldives</option>
332 <option value="MLI">Mali</option>
333 <option value="MLT">Malta</option>
334 <option value="MHL">Marshall Islands</option>
335 <option value="MTQ">Martinique</option>
336 <option value="MRT">Mauritania</option>
337 <option value="MUS">Mauritius</option>
338 <option value="MYT">Mayotte</option>
339 <option value="MEX">Mexico</option>
340 <option value="FSM">Micronesia, Federated States of</option>
341 <option value="MDA">Moldova, Republic of</option>
342 <option value="MCO">Monaco</option>
343 <option value="MNG">Mongolia</option>
344 <option value="MNE">Montenegro</option>
345 <option value="MSR">Montserrat</option>
346 <option value="MAR">Morocco</option>
347 <option value="MOZ">Mozambique</option>
348 <option value="MMR">Myanmar</option>
349 <option value="NAM">Namibia</option>
350 <option value="NRU">Nauru</option>
351 <option value="NPL">Nepal</option>
352 <option value="NLD">Netherlands</option>
353 <option value="NCL">New Caledonia</option>
354 <option value="NZL">New Zealand</option>
355 <option value="NIC">Nicaragua</option>
356 <option value="NER">Niger</option>
357 <option value="NGA">Nigeria</option>
358 <option value="NIU">Niue</option>
359 <option value="NFK">Norfolk Island</option>
360 <option value="MNP">Northern Mariana Islands</option>
361 <option value="NOR">Norway</option>
362 <option value="OMN">Oman</option>
363 <option value="PAK">Pakistan</option>
364 <option value="PLW">Palau</option>
365 <option value="PSE">Palestinian Territory, Occupied</option>
366 <option value="PAN">Panama</option>
367 <option value="PNG">Papua New Guinea</option>
368 <option value="PRY">Paraguay</option>
369 <option value="PER">Peru</option>
370 <option value="PHL">Philippines</option>
371 <option value="PCN">Pitcairn</option>
372 <option value="POL">Poland</option>
373 <option value="PRT">Portugal</option>
374 <option value="PRI">Puerto Rico</option>
375 <option value="QAT">Qatar</option>
376 <option value="REU">Réunion</option>
377 <option value="ROU">Romania</option>
378 <option value="RUS">Russian Federation</option>
379 <option value="RWA">Rwanda</option>
380 <option value="BLM">Saint Barthélemy</option>
381 <option value="SHN">Saint Helena, Ascension and Tristan da Cunha</option>
382 <option value="KNA">Saint Kitts and Nevis</option>
383 <option value="LCA">Saint Lucia</option>
384 <option value="MAF">Saint Martin (French part)</option>
385 <option value="SPM">Saint Pierre and Miquelon</option>
386 <option value="VCT">Saint Vincent and the Grenadines</option>
387 <option value="WSM">Samoa</option>
388 <option value="SMR">San Marino</option>
389 <option value="STP">Sao Tome and Principe</option>
390 <option value="SAU">Saudi Arabia</option>
391 <option value="SEN">Senegal</option>
392 <option value="SRB">Serbia</option>
393 <option value="SYC">Seychelles</option>
394 <option value="SLE">Sierra Leone</option>
395 <option value="SGP">Singapore</option>
396 <option value="SXM">Sint Maarten (Dutch part)</option>
397 <option value="SVK">Slovakia</option>
398 <option value="SVN">Slovenia</option>
399 <option value="SLB">Solomon Islands</option>
400 <option value="SOM">Somalia</option>
401 <option value="ZAF">South Africa</option>
402 <option value="SGS">South Georgia and the South Sandwich Islands</option>
403 <option value="SSD">South Sudan</option>
404 <option value="ESP">Spain</option>
405 <option value="LKA">Sri Lanka</option>
406 <option value="SDN">Sudan</option>
407 <option value="SUR">Suriname</option>
408 <option value="SJM">Svalbard and Jan Mayen</option>
409 <option value="SWZ">Swaziland</option>
410 <option value="SWE">Sweden</option>
411 <option value="CHE">Switzerland</option>
412 <option value="SYR">Syrian Arab Republic</option>
413 <option value="TWN">Taiwan, Province of China</option>
414 <option value="TJK">Tajikistan</option>
415 <option value="TZA">Tanzania, United Republic of</option>
416 <option value="THA">Thailand</option>
417 <option value="TLS">Timor-Leste</option>
418 <option value="TGO">Togo</option>
419 <option value="TKL">Tokelau</option>
420 <option value="TON">Tonga</option>
421 <option value="TTO">Trinidad and Tobago</option>
422 <option value="TUN">Tunisia</option>
423 <option value="TUR">Turkey</option>
424 <option value="TKM">Turkmenistan</option>
425 <option value="TCA">Turks and Caicos Islands</option>
426 <option value="TUV">Tuvalu</option>
427 <option value="UGA">Uganda</option>
428 <option value="UKR">Ukraine</option>
429 <option value="ARE">United Arab Emirates</option>
430 <option value="GBR">United Kingdom</option>
431 <option value="USA">United States</option>
432 <option value="UMI">United States Minor Outlying Islands</option>
433 <option value="URY">Uruguay</option>
434 <option value="UZB">Uzbekistan</option>
435 <option value="VUT">Vanuatu</option>
436 <option value="VEN">Venezuela, Bolivarian Republic of</option>
437 <option value="VNM">Viet Nam</option>
438 <option value="VGB">Virgin Islands, British</option>
439 <option value="VIR">Virgin Islands, U.S.</option>
440 <option value="WLF">Wallis and Futuna</option>
441 <option value="ESH">Western Sahara</option>
442 <option value="YEM">Yemen</option>
443 <option value="ZMB">Zambia</option>
444 <option value="ZWE">Zimbabwe</option>
445 <option value="OTH">Other</option>
446 </select>
447 <input type="checkbox" name="english"> I can speak proper English.<br>
448 Age:<br>
449 <input type="number" name="age" min="7" max="99" required><br>
450 Gender:<br>
451 <input type="radio" name="gender" value="male" checked> Male<br>
452 <input type="radio" name="gender" value="female"> Female<br>
453 <input type="radio" name="gender" value="other"> Other<br>
454 Time i play minecraft:<br>
455 <input type="number" name="TimeIPlayMinecraft" required min="0" max="100"> Years.<br>
456 <br>
457 <textarea name="Comments" placeholder="Comments" rows="3"></textarea><br>
458 If you got a youtube cannel (where you will be posting video's about the server on), place the link here:<br>
459 <input type="url" name="YoutubeChannel"><br>
460 <?php
461 echo recaptcha_get_html(R_PUBLIC);
462?>
463 <input type="submit">
464
465</form>
466</div>
467</body>
468</html>
469<?php VDEnd(); ?>
470
471-------------------------------------
472my /core/functions.php:
473<?php
474/*Checks the validity of the retrieved IP address.*/
475function f_validIP($ip) {
476
477 if (!empty($ip) && ip2long($ip)!=-1) {
478 $reserved_ips = array (
479 array('0.0.0.0','2.255.255.255'),
480 array('10.0.0.0','10.255.255.255'),
481 array('127.0.0.0','127.255.255.255'),
482 array('169.254.0.0','169.254.255.255'),
483 array('172.16.0.0','172.31.255.255'),
484 array('192.0.2.0','192.0.2.255'),
485 array('192.168.0.0','192.168.255.255'),
486 array('255.255.255.0','255.255.255.255')
487 );
488
489 foreach ($reserved_ips as $r) {
490 $min = ip2long($r[0]);
491 $max = ip2long($r[1]);
492 if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
493 }
494
495 return true;
496 } else {
497 return false;
498 }
499 }
500
501/*Gets the IP address of the current user for storage in the database.*/
502function f_getIP() {
503 if (f_validIP($_SERVER["HTTP_CLIENT_IP"])) {
504 return $_SERVER["HTTP_CLIENT_IP"];
505 }
506
507 foreach (explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"]) as $ip) {
508 if (f_validIP(trim($ip))) {
509 return $ip;
510 }
511 }
512
513 if (f_validIP($_SERVER["HTTP_X_FORWARDED"])) {
514 return $_SERVER["HTTP_X_FORWARDED"];
515 } elseif (f_validIP($_SERVER["HTTP_FORWARDED_FOR"])) {
516 return $_SERVER["HTTP_FORWARDED_FOR"];
517 } elseif (f_validIP($_SERVER["HTTP_FORWARDED"])) {
518 return $_SERVER["HTTP_FORWARDED"];
519 } elseif (f_validIP($_SERVER["HTTP_X_FORWARDED"])) {
520 return $_SERVER["HTTP_X_FORWARDED"];
521 } else {
522 return $_SERVER["REMOTE_ADDR"];
523 }
524 }
525
526
527
528/*Cleans an array to protect against injection attacks.*/
529function f_clean($array) {
530 return array_map('mysql_real_escape_string', $array);
531}
532
533/*Connects to and selects the specified database with the specified user.*/
534function f_sqlConnect($user, $pass, $db) {
535 $link = mysql_connect('localhost', $user, $pass);
536
537 if (!$link) {
538 die('Could not connect: ' . mysql_error());
539 }
540
541 $db_selected = mysql_select_db($db, $link);
542
543 if (!$db_selected) {
544 die('Can\'t use ' . $db . ': ' . mysql_error());
545 }
546}
547
548/*Checks to see if the specified table exists and if it doesn't, creates it.*/
549function f_tableExists($tablename, $database = false) {
550
551 if(!$database) {
552 $res = mysql_query("SELECT DATABASE()");
553 $database = mysql_result($res, 0);
554 }
555
556 $res = mysql_query("
557 SELECT COUNT(*) AS count
558 FROM information_schema.tables
559 WHERE table_schema = '$database'
560 AND table_name = '$tablename'
561 ");
562
563 return mysql_result($res, 0) == 1;
564
565}
566
567/*Checks to see if the specified field exists and if it doesn't, creates it.*/
568function f_fieldExists($table, $column, $column_attr = "VARCHAR( 255 ) NULL" ) {
569 $exists = false;
570 $columns = mysql_query("show columns from $table");
571 while($c = mysql_fetch_assoc($columns)){
572 if($c['Field'] == $column){
573 $exists = true;
574 break;
575 }
576 }
577 if(!$exists){
578 mysql_query("ALTER TABLE `$table` ADD `$column` $column_attr");
579 }
580}
581?>