register-exec.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?php
  2. /*
  3. *
  4. * OGP - Open Game Panel
  5. * Copyright (C) 2008 - 2018 The OGP Development Team
  6. *
  7. * http://www.opengamepanel.org/
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License
  11. * as published by the Free Software Foundation; either version 2
  12. * of the License, or any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22. *
  23. */
  24. //Open Game Panel Free User Registration Add On By
  25. // MarkDogg18769
  26. function checkEmail($email) {
  27. if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email))
  28. {
  29. return true;
  30. }
  31. return false;
  32. }
  33. require_once("includes/functions.php");
  34. function exec_ogp_module()
  35. {
  36. global $db,$view,$settings;
  37. $adminEmailList = '';
  38. // Get email address of all admins to inform him when a user has registered.
  39. $admins = $db->getAdmins();
  40. if(is_array($admins) && count($admins) > 0){
  41. foreach($admins as $admin){
  42. if($admin['user_receives_emails']){
  43. $adminEmail = $admin['users_email'];
  44. $adminEmailList .= $adminEmail . ',';
  45. }
  46. }
  47. }
  48. //Array to store validation errors
  49. $errmsg_arr = array();
  50. //Array to store input values
  51. $input = array();
  52. //Validation error flag
  53. $errflag = false;
  54. //Function to sanitize values received from the form. Prevents SQL injection
  55. function clean($str) {
  56. $str = @trim($str);
  57. if(get_magic_quotes_gpc_wrapper()) {
  58. $str = stripslashes($str);
  59. }
  60. return $str;
  61. }
  62. //Sanitize the POST values
  63. $users_fname = sanitizeInputStr($_POST['users_fname']);
  64. $users_lname = sanitizeInputStr($_POST['users_lname']);
  65. $users_login = sanitizeInputStr($_POST['login_name']);
  66. $users_passwd = clean($_POST['users_passwd']);
  67. $users_cpasswd = clean($_POST['users_cpasswd']);
  68. $users_email = clean($_POST['users_email']);
  69. $users_comment = clean($_POST['users_comment']);
  70. $gRecaptchaResponse = clean($_POST['g-recaptcha-response']);
  71. if( !empty($users_fname) ) {
  72. $input['users_fname'] = $users_fname;
  73. }
  74. if( !empty($users_lname) ) {
  75. $input['users_lname'] = $users_lname;
  76. }
  77. if( !empty($users_login) ) {
  78. $input['users_login'] = $users_login;
  79. }
  80. if( !empty($users_email) ) {
  81. $input['users_email'] = $users_email;
  82. }
  83. $lang_switch = (isset($_GET['lang']) AND $_GET['lang'] != "-" )? "lang=".$_GET['lang'] : "";
  84. //Input Validations
  85. if($users_fname == '') {
  86. $errmsg_arr[] = get_lang('err_first_name');
  87. $errflag = true;
  88. }
  89. if($users_lname == '') {
  90. $errmsg_arr[] = get_lang('err_last_name');
  91. $errflag = true;
  92. }
  93. if( $users_email == '' OR !checkEmail($users_email) ) {
  94. $errmsg_arr[] = get_lang('err_email_address');
  95. $errflag = true;
  96. }
  97. elseif($db->getUserByEmail($users_email) != FALSE)
  98. {
  99. $user = $db->getUserByEmail($users_email);
  100. $errmsg_arr[] = get_lang_f('err_email_address_already_in_use_by',$user['users_login']);
  101. $errflag = true;
  102. }
  103. if($users_login == '') {
  104. $errmsg_arr[] = get_lang('err_login_name');
  105. $errflag = true;
  106. }
  107. if($users_passwd == '') {
  108. $errmsg_arr[] = get_lang('err_password');
  109. $errflag = true;
  110. }else{
  111. // 6 char password minimum
  112. if(strlen($users_passwd) < 6){
  113. $errmsg_arr[] = get_lang('passwd_len');
  114. $errflag = true;
  115. }
  116. }
  117. if($users_cpasswd == '') {
  118. $errmsg_arr[] = get_lang('err_confirm_password');
  119. $errflag = true;
  120. }
  121. if( strcmp($users_passwd, $users_cpasswd) != 0 ) {
  122. $errmsg_arr[] = get_lang('err_password_mismatch');
  123. $errflag = true;
  124. }
  125. if(!empty($settings['recaptcha_site_key']) && !empty($settings['recaptcha_secret_key'])){
  126. $sitekey = $settings['recaptcha_site_key'];
  127. $secretkey = $settings['recaptcha_secret_key'];
  128. }else{
  129. require_once('captchakeys.php');
  130. }
  131. require('includes/classes/recaptcha/autoload.php');
  132. $recaptcha = new \ReCaptcha\ReCaptcha($secretkey);
  133. $resp = $recaptcha->verify($gRecaptchaResponse, $_SERVER["REMOTE_ADDR"]);
  134. if (empty($gRecaptchaResponse) || !$resp->isSuccess())
  135. {
  136. $errmsg_arr[] = get_lang('err_captcha');
  137. $errflag = true;
  138. }
  139. //Create INSERT query
  140. if( !$errflag )
  141. {
  142. if(!$db->addUser($users_login,$users_passwd,"user",$users_email) )
  143. {
  144. $errmsg_arr[] = get_lang('err_login_name');
  145. $errflag = true;
  146. }
  147. else
  148. {
  149. $user = $db->getUser($users_login);
  150. $user_id = $user['user_id'];
  151. $fields['users_fname'] = $users_fname;
  152. $fields['users_lname'] = $users_lname;
  153. $fields['users_comment'] = $users_comment;
  154. if(isset($_GET['lang']))
  155. $fields['users_lang'] = $_GET['lang'];
  156. else
  157. $fields['users_lang'] = $settings['panel_language'];
  158. if($db->editUser($fields,$user_id))
  159. {
  160. if(isset($adminEmailList) && !empty($adminEmailList)){
  161. $to = $adminEmailList . $users_email;
  162. }else{
  163. $to = $users_email;
  164. }
  165. if( empty( $settings['panel_name'] ) )
  166. $subject = get_lang_f('subject',"Open Game Panel");
  167. else
  168. $subject = get_lang_f('subject',$settings['panel_name']);
  169. $message = get_lang_f('register_message', getOGPSiteURL(), $users_login);
  170. $mail = mymail($to, $subject, $message, $settings);
  171. if($mail)
  172. {
  173. print_success(get_lang_f('your_account_details_has_been_sent_by_email_to',$users_email));
  174. $view->refresh("index.php?".$lang_switch,8);
  175. }else{
  176. $view->refresh("index.php?".$lang_switch,8);
  177. print_success(get_lang('account_created'));
  178. }
  179. }
  180. else
  181. {
  182. $user = $db->getUser($users_login);
  183. $user_id = $user['user_id'];
  184. $db->delUser($user_id);
  185. print_failure('FAILURE: Unable to set user details, try again.');
  186. $view->refresh("index.php?m=register&p=form&".$lang_switch,8);
  187. }
  188. }
  189. }
  190. //If there are input validations, redirect back to the registration form
  191. if($errflag) {
  192. $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
  193. $_SESSION['INPUT'] = $input;
  194. $view->refresh("index.php?m=register&p=form&".$lang_switch,0);
  195. }
  196. }
  197. ?>