create.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. require 'app.php';
  3. function check_captcha($response) {
  4. $url = 'https://www.google.com/recaptcha/api/siteverify';
  5. $data = array('secret' => '6Ldd1SUTAAAAAClOiQ45MFW7j6FxUjmdG57a9Aqk', 'response' => $response);
  6. // use key 'http' even if you send the request to https://...
  7. $options = array(
  8. 'http' => array(
  9. 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
  10. 'method' => 'POST',
  11. 'content' => http_build_query($data)
  12. )
  13. );
  14. $context = stream_context_create($options);
  15. $result = file_get_contents($url, false, $context);
  16. if ($result === FALSE) {
  17. /* Handle error */
  18. queue_message(new Message("Error checking recaptcha.", "danger"));
  19. return false;
  20. }
  21. $json_result = json_decode($result);
  22. return $json_result->{'success'};
  23. }
  24. function create_user() {
  25. global $conn;
  26. $fields = array('g-recaptcha-response', 'user', 'pass', 'mail');
  27. foreach ($fields as $field)
  28. if (!(isset($field))) {
  29. queue_message(new Message("Missing field: $field", "danger"));
  30. return;
  31. }
  32. // Handle captcha
  33. if (!check_captcha($_POST['g-recaptcha-response'])) {
  34. queue_message(new Message("Incorrect recaptcha answer, try again!", "warning"));
  35. return;
  36. }
  37. // Hash password
  38. $pass_hashed = password_hash($_POST['pass'], PASSWORD_DEFAULT);
  39. $user = $_POST['user'];
  40. $mail = $_POST['mail'];
  41. // Create user
  42. $sql = "INSERT INTO Users (User, Password) VALUES ('$user', '$pass_hashed')";
  43. if ($conn->query($sql)) {
  44. // Send activation e-mail
  45. new_activation($user, "Email", $mail);
  46. queue_message(new Message("User created successfully.", "success"));
  47. header("Location: ../index.php");
  48. } else {
  49. queue_message(new Message("Error inserting into database, please contact site administrator.<br /> " . $conn->error, "danger"));
  50. }
  51. }
  52. create_user();
  53. ?>