/site/www/registration.php

https://github.com/stamen/fieldpapers · PHP · 100 lines · 70 code · 26 blank · 4 comment · 10 complexity · 509ca4bd18d3917d5d4e4f327f34e7a8 MD5 · raw file

  1. <?php
  2. require_once '../lib/lib.everything.php';
  3. enforce_master_on_off_switch($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  4. $context = default_context(True);
  5. /**** ... ****/
  6. $error = '';
  7. switch($_POST['action'])
  8. {
  9. case 'register':
  10. if (!$_POST['username'])
  11. {
  12. //die('Please provide a user name.');
  13. $error = 'Please provide a user name.';
  14. break;
  15. }
  16. if (!$_POST['password1'])
  17. {
  18. $error = 'Please provide a password.';
  19. break;
  20. }
  21. if ($_POST['password1'] != $_POST['password2'])
  22. {
  23. $error = 'Passwords do not match. Please try again.';
  24. break;
  25. }
  26. $prev_registered_user = get_user_by_name($context->db, $_POST['username']);
  27. if($prev_registered_user)
  28. {
  29. $error = 'Username exists.';
  30. break;
  31. }
  32. // Verify that the email address has not been used in a previous registration.
  33. $mailsearch = "SELECT email from users WHERE email=?";
  34. $res_mailsearch = $context->db->query($mailsearch, $_POST['email']);
  35. $email_match = $res_mailsearch->fetchRow(DB_FETCHMODE_ASSOC);
  36. if ($email_match)
  37. {
  38. $error = 'Someone has already registered with that email address.';
  39. break;
  40. }
  41. $new_user = add_user($context->db);
  42. $new_user['name'] = $_POST['username'];
  43. $new_user['email'] = $_POST['email'];
  44. $new_user['password'] = $_POST['password1'];
  45. $registered_user = set_user($context->db, $new_user);
  46. if ($registered_user === false)
  47. {
  48. $error = 'User name exists.';
  49. break;
  50. }
  51. $hash = md5(rand(0,1000));
  52. $q = 'UPDATE users SET hash=? WHERE name=?';
  53. $res = $context->db->query($q, $hash, $_POST['username']);
  54. login_user_by_id($context->db, $registered_user['id']);
  55. $to = $_POST['email'];
  56. $subject = 'Field Papers Verification';
  57. $url = sprintf('http://%s%s/verify.php?email=%s&hash=%s',get_domain_name(),get_base_dir(),urlencode($_POST['email']),
  58. urlencode($hash));
  59. $message = "Thanks for signing up for Field Papers!
  60. Please verify your account: {$url}
  61. ";
  62. $headers = 'From:noreply@fieldpapers.org' . "\r\n";
  63. mail($to, $subject, $message, $headers);
  64. // redirect
  65. header('Location: ' . $_POST['redirect']);
  66. break;
  67. }
  68. if(!empty($error))
  69. {
  70. $context->sm->assign('error', $error);
  71. }
  72. header("Content-Type: text/html; charset=UTF-8");
  73. print $context->sm->fetch("registration.html.tpl");
  74. ?>