Advertisement
LautaroSanchez

c.registrophp

May 1st, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.29 KB | None | 0 0
  1. <?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
  2. /**
  3. * Modelo para el control del registro de usuarios
  4. *
  5. * @name c.registro.php
  6. * @author PHPost Team
  7. */
  8. class tsRegistro{
  9.  
  10. // INSTANCIA DE LA CLASE
  11. public static function &getInstance(){
  12. static $instance;
  13.  
  14. if( is_null($instance) ){
  15. $instance = new tsRegistro();
  16. }
  17. return $instance;
  18. }
  19. /**
  20. * @name checkUserEmail($pid)
  21. * @access public
  22. * @param
  23. * @return string
  24. */
  25. public function checkUserEmail(){
  26. global $tsCore;
  27. // Variables
  28. $username = strtolower($_POST['nick']);
  29. $email = strtolower($_POST['email']);
  30. $which = empty($username) ? 'email' : 'nick';
  31. // MENSAJE
  32. $valid = '1: El '.$which.' est&aacute; disponible.'; // DEFAULT
  33. //
  34. if(!empty($username) || !empty($email)){
  35. $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_id` FROM `u_miembros` WHERE '. ( !empty($username) ? 'LOWER(user_name) = \''.$tsCore->setSecure($username).'\'' : 'LOWER(user_email) = \''.$tsCore->setSecure($email).'\'' ) .' LIMIT 1');
  36. if(db_exec('num_rows', $query) > 0) $valid = '0: El '.$which.' ya se encuentra registrado.'; // EXISTE
  37. if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT id FROM w_blacklist WHERE (type = \'3\' && value = \''.$tsCore->setSecure(strstr($email, '@')).'\') || (type = \'4\' && value = \''.$tsCore->setSecure(strstr($email, '@', true)).'\') || (type = \'4\' && value = \''.$tsCore->setSecure($username).'\') LIMIT 1'))) $valid = '0: Parte del '.$which.' no est&aacute; permitida';
  38.  
  39. } else $valid = '0: Faltan datos y no se puede procesar tu solicitud.';
  40. // retornar valor
  41. return $valid;
  42. }
  43. /**
  44. * @name registerUser()
  45. * @access public
  46. * @param
  47. * @return string
  48. */
  49. function registerUser(){
  50. global $tsCore, $tsUser;
  51. // DATOS NECESARIOS
  52. $tsData = array(
  53. 'user_nick' => $tsCore->parseBadWords($_POST['nick']),
  54. 'user_password' => $tsCore->parseBadWords($_POST['password']),
  55. 'user_email' => $_POST['email'],
  56. 'user_dia' => $_POST['dia'],
  57. 'user_mes' => $_POST['mes'],
  58. 'user_anio' => $_POST['anio'],
  59. 'user_sexo' => $_POST['sexo'] == 'f' ? '0' : 1,
  60. 'user_pais' => strtoupper($_POST['pais']),
  61. 'user_estado' => $_POST['estado'],
  62. 'user_terminos' => $_POST['terminos'],
  63. 'user_registro' => time(),
  64. );
  65. // ERRORS
  66. $errors = array(
  67. 'default' => 'El campo es requerido',
  68. 'nick' =>'El nombre de usuario ya se encuentra registrado.',
  69. 'password' => 'La contrase&ntilde;a tiene que ser distinta que el nick',
  70. 'email' => 'El formato es incorrecto',
  71. 'email_2' => 'El email ya est&aacute; en uso',
  72. 'captacha' => 'El c&oacute;digo es incorrecto'
  73. );
  74. // COMPROBAR VACIOS
  75. foreach($tsData as $key => $val){
  76. if($val == '') {
  77. $key_error = str_replace('user_','',$key);
  78. return $key_error.': '.$errors['default'];
  79. }
  80. }
  81. // CAPTACHA
  82. require(TS_EXTRA . 'recaptchalib.php');
  83. $ch = curl_init();
  84. curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
  85. curl_setopt($ch, CURLOPT_POST, 1);
  86. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
  87. 'secret' => "AQUI TU CLAVE SECRETA",
  88. 'response' => $_POST['g-recaptcha-response'],
  89. ]));
  90. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  91. $data = curl_exec($ch);
  92. curl_close($ch);
  93. $response = @json_decode($data);
  94. if(empty($response) || !$response->success) return 'recaptcha: Demuestra que no eres un robot!';
  95.  
  96. // COMPROBAR QUE EL NOMBRE DE USUARIO SEA VÁLIDO
  97. if( !preg_match("/^[a-zA-Z0-9_-]{4,16}$/", $tsData['user_nick']) ) {
  98. die('nick: Nombre de usuario inv&aacute;lido');
  99. }
  100.  
  101. // COMPROBAR NUEVAMENTE QUE EL USUARIO O EMAIL NO SE ENCUENTREN REGISTRADOS
  102. $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_name`,`user_email` FROM `u_miembros` WHERE LOWER(user_name) = \''.$tsCore->setSecure($tsData['user_nick']).'\' OR LOWER(user_email) = \''.$tsCore->setSecure($tsData['user_email']).'\' LIMIT 1');
  103. if(db_exec('num_rows', $query) > 0 || !filter_var($tsData['user_email'], FILTER_VALIDATE_EMAIL) || $tsCore->settings['c_reg_active'] == 0) die('0: Hubo problemas al intentar registrarle, hay campos vac&iacute;os, inv&aacute;lidos o no se le permite el registro.');
  104.  
  105. // PASAMOS BIEN... AHORA INSERTAR DATOS
  106. $key = md5(md5($tsData['user_password']).strtolower($tsData['user_nick']));
  107. //
  108. if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_miembros` (`user_name`, `user_password`, `user_email`, `user_rango`, `user_registro`) VALUES (\''.$tsCore->setSecure($tsData['user_nick']).'\', \''.$tsCore->setSecure($key).'\', \''.$tsCore->setSecure($tsData['user_email']).'\', '.(empty($tsCore->settings['c_reg_rango']) ? 3 : $tsCore->settings['c_reg_rango']).', \''.$tsData['user_registro'].'\')')){
  109. $tsData['user_id'] = db_exec('insert_id');
  110. // INSERTAMOS EL PERFIL
  111. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_perfil` (`user_id`, `user_dia`, `user_mes`, `user_ano`, `user_pais`, `user_estado`, `user_sexo`) VALUES (\''.(int)$tsData['user_id'].'\', \''.(int)$tsData['user_dia'].'\', \''.(int)$tsData['user_mes'].'\', \''.(int)$tsData['user_anio'].'\', \''.$tsCore->setSecure($tsData['user_pais']).'\', \''.$tsCore->setSecure($tsData['user_estado']).'\', \''.(int)$tsData['user_sexo'].'\')');
  112. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_portal` (`user_id`) VALUES (\''.$tsData['user_id'].'\')');
  113.  
  114. // MENSAJE PARA DAR LA BIENVENIDA BIENVENIDA
  115. $send_welcome = $tsCore->settings['c_met_welcome'];
  116. if($send_welcome > 0 && $send_welcome < 4) {
  117. $msg_bienvenida = $tsCore->parseBBCode($tsCore->settings['c_message_welcome']);
  118. $sexo = 'Bienvenid' . ($tsData['user_sexo'] == 1 ? 'o' : 'a');
  119. $b = array('[usuario]', '[welcome]', '[web]');
  120. $r = array($tsData['user_nick'], $sexo, $tsCore->settings['titulo']);
  121. $msg_bienvenida = str_ireplace($b, $r, $msg_bienvenida);
  122.  
  123. switch($send_welcome) {
  124. case 1:
  125. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_muro` (p_user, p_user_pub, p_date, p_body, p_type) VALUES (\''.(int)$tsData['user_id'].'\', \'1\', \''.time().'\', \''.$msg_bienvenida.'\', \'1\')');
  126. $m_id = db_exec('insert_id');
  127. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_monitor` (user_id,obj_user,obj_uno, not_type,not_total,not_menubar,not_monitor) VALUES (\''.(int)$tsData['user_id'].'\', \'1\', \''.$m_id.'\', \'12\', \'1\', \'1\', \'1\')');
  128. break;
  129. case 2:
  130. $preview = substr($msg_bienvenida,0,75);
  131. if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_mensajes` (`mp_to`, `mp_from`, `mp_subject`, `mp_preview`, `mp_date`) VALUES ('.$tsData['user_id'].', \'1\', \''.$sexo.' a ' .$tsCore->settings['titulo'].'\', \''.$preview.'\',\''.time().'\')')) {
  132. $mp_id = db_exec('insert_id');
  133. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_respuestas` (mp_id, mr_from, mr_body, mr_ip, mr_date) VALUES (\''.(int)$mp_id.'\', \'1\', \''.$msg_bienvenida.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.time().'\')'); }
  134. break;
  135. case 3:
  136. db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_avisos` (`user_id`, `av_subject`, `av_body`, `av_date`, `av_type`) VALUES (\''.$tsData['user_id'].'\', \''.$sexo.' a ' .$tsCore->settings['titulo'].'\', \''.$msg_bienvenida.'\', \''.time().'\', \'4\')');
  137. break;
  138. }
  139. }
  140. // ENVIAMOS EL EMAIL
  141. if(empty($tsCore->settings['c_reg_activate'])){
  142.  
  143. $key = substr(md5(time()),0,32); //La otra opción muestra más ceros de la cuenta e.e con un substr en el envío tal vez se solucione.
  144.  
  145. if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO w_contacts (user_id, user_email, time, type, hash) VALUES (\''.(int)$tsData['user_id'].'\', \''.$tsCore->setSecure($tsData['user_email']).'\', \''.time().'\', \'2\', \''.$key.'\' )')){
  146.  
  147. include(TS_ROOT.DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'class'.DIRECTORY_SEPARATOR.'c.emails.php');
  148. $tsEmail = new tsEmail('activar', 'registro');
  149. $to = $tsData['user_email'];
  150. $subject = 'Active su cuenta';
  151. $body = '<div style="background:#0f7dc1;padding:10px;font-family:Arial, Helvetica,sans-serif;color:#000">
  152. <h1 style="color:#FFFFFF; font-weight:bold; font-size:30px;">'.$tsCore->settings['titulo'].'</h1>
  153. <div style="background:#FFF;padding:10px;font-size:14px">
  154. <h2 style="font-family:Arial, Helvetica,sans-serif;color:#000;font-size:22px">Hola '.$tsData['user_nick'].'</h2>
  155. <p style="font-family:Arial, Helvetica,sans-serif;color:#000">&iexcl;Te damos la bienvenida a '.$tsCore->settings['titulo'].'!</p>
  156. <p>Para finalizar con el proceso de registro, confirma tu direcci&oacute;n de email accediendo a <a href="'.$tsCore->settings['url'].'/validar/'.$key.'/2/'.$tsCore->setSecure($tsData['user_email']).'">este enlace</a>
  157. </p><br /> <br />
  158. <p>Posteriormente podr&aacute; acceder con las siguientes credenciales:</p>
  159. <p>Usuario: '.$tsData['user_nick'].' <br /> Contrase&ntilde;a: '.$tsData['user_password'].'</p><br />
  160. <p>Antes de empezar a interactuar con la comunidad, te recomendamos que visites el <a target="_blank" href="http://'.$tsCore->settings['url'].'/pages/protocolo/">Protocolo</a> del sitio.</p>
  161. <p>Esperamos que disfrutes enormemente tu visita.</p>
  162. <p>&iexcl;Te damos la bienvenida a Muchas gracias!</p>
  163. <p>Staff de '.$tsCore->settings['titulo'].'.</p>
  164. <div style="border-top:#CCC solid 1px;padding:10px 0">
  165. <span style="color:#666;font-size:11px">
  166. <center>El staff de <strong>'.$tsCore->settings['titulo'].'</strong></center>
  167. </span>
  168. </div>
  169. </div>
  170. </div>';
  171. // <--
  172. $tsEmail->emailTo = $to;
  173. $tsEmail->emailSubject = $subject;
  174. $tsEmail->emailBody = $body;
  175. $tsEmail->emailHeaders = $tsEmail->setEmailHeaders();
  176. $tsEmail->sendEmail($from, $to, $subject, $body) or die('0: Hubo un error al intentar procesar lo solicitado');
  177. return '1: <div class="box_cuerpo" style="padding: 12px 20px; border-top:1px solid #CCC">Te hemos enviado un correo a <b>'.$to.'</b> con los &uacute;ltimos pasos para finalizar con el registro.<br><br>Si en los pr&oacute;ximos minutos no lo encuentras en tu bandeja de entrada, por favor, revisa tu carpeta de correo no deseado, es posible que se haya filtrado.<br><br>&iexcl;Muchas gracias!</div>';
  178. }else{
  179. return '0: <div class="box_cuerpo" style="padding: 12px 20px; border-top:1px solid #CCC">Ocurri&oacute; un error, int&eacute;ntelo de nuevo.</div>';
  180. }
  181. } else {
  182. $tsUser->userActivate($tsData['user_id'],md5($tsData['user_registro']));
  183. $tsUser->loginUser($tsData['user_nick'], $tsData['user_password'], true);
  184. return '2: <div class="box_cuerpo" style="padding: 12px 20px; border-top:1px solid #CCC">Bienvenido a <b>'.$tsCore->settings['titulo'].'</b>, Ahora estas registrado y tu cuenta ha sido activada, podr&aacute;s disfrutar de esta comunidad inmediatamente.<br><br>&iexcl;Muchas gracias! :)</div>';
  185. }
  186. } else return '0: Ocurrio un error, intentalo ma&aacute;s tarde.';
  187. }
  188. /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement