Posted By

danideu on 02/21/11


Tagged

mysql php tutorial


Versions (?)

REGISTRAR USUARIOS EN PHP CON VALIDACION DE DATOS Y ACTIVACIÓN POR MAIL - 5


 / Published in: PHP
 

URL: http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-56

Registro de usuario en PHP con validación y activación por mail

  1. <?php
  2.  
  3. //FUNCION PARA INSERTAR EL REGISTRO EN LA TABLA users_temp
  4. function insertarReg($name_, $username_, $password1_, $email_){
  5. /*Teneis que declarar las variables $servidor, $usuario,$password y
  6. $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
  7. $servidor = "localhost";
  8. $usuario = "root";
  9. $password = "";
  10. $sdb = "prueba1";
  11.  
  12. $ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
  13. mysql_select_db($sdb,$ilink3);
  14.  
  15. $inserta= "insert into users_temp (nombre,usersTemp,password,email,fecAlta) values ('$name_','$username_','$password1_','$email_',CURDATE())";
  16. $resultado3=mysql_query($inserta,$ilink3) or die (mysql_error());
  17.  
  18. if (!$resultado3)
  19. return false;
  20. else
  21. return true;
  22. }
  23.  
  24. /*function validateName($name){
  25. //NO cumple longitud minima
  26. if(strlen($name) < 5)
  27. return false;
  28. //SI longitud pero NO solo caracteres A-z
  29. else if(!preg_match("/^[a-zA-Z]+$/", $name))
  30. return false;
  31. // SI longitud, SI caracteres A-z
  32. else
  33. return true;
  34. }*/
  35.  
  36. function validateName($name){
  37. $permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
  38. $caracter1KO = 0;
  39. if(strlen($name) < 5):
  40. return false;
  41. else:
  42. for ($i=0; $i<strlen($name); $i++){
  43. if (strpos($permitidos, substr($name,$i,1))===false){
  44. $caracter1KO = 1;
  45. }
  46. }
  47. endif;
  48. if ($caracter1KO == 1 || strlen($name) <= 4):
  49. return false;
  50. else:
  51. return true;
  52. endif;
  53. }
  54.  
  55. function validateUsername($username){
  56. $permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
  57. $caracterKO = 0;
  58. if(strlen($username) < 5):
  59. return false;
  60. else:
  61. for ($i=0; $i<strlen($username); $i++){
  62. if (strpos($permitidos, substr($username,$i,1))===false){
  63. $caracterKO = 1;
  64. }
  65. }
  66. endif;
  67. if ($caracterKO == 1 || strlen($username) <= 4):
  68. return false;
  69. else:
  70. return true;
  71. endif;
  72. }
  73.  
  74.  
  75. function validateExistUsername($username){
  76. /*Teneis que declarar las variables $servidor, $usuario,$password y
  77. $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
  78. $servidor = "localhost";
  79. $usuario = "root";
  80. $password = "";
  81. $sdb = "prueba1";
  82.  
  83. $ilink=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
  84.  
  85. mysql_select_db($sdb,$ilink);
  86. $consulta= "select usersTemp from users_temp where usersTemp = '$username'";
  87. $resultado=mysql_query($consulta,$ilink) or die (mysql_error());
  88. if (mysql_num_rows($resultado)>0)
  89. return false;
  90. else
  91. return true;
  92. }
  93.  
  94. function validatePassword1($password1){
  95. //NO tiene minimo de 5 caracteres o mas de 12 caracteres
  96. if(strlen($password1) < 5 || strlen($password1) > 12)
  97. return false;
  98. // SI longitud, NO VALIDO numeros y letras
  99. else if(!preg_match("/^[0-9a-zA-Z]+$/", $password1))
  100. return false;
  101. // SI rellenado, SI email valido
  102. else
  103. return true;
  104. }
  105.  
  106. function validatePassword2($password1, $password2){
  107. //NO coinciden
  108. if($password1 != $password2)
  109. return false;
  110. else
  111. return true;
  112. }
  113.  
  114. function validateEmail($email){
  115.  
  116. if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
  117. if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
  118. //miro si tiene caracter .
  119. if (substr_count($email,".")>= 1){
  120. //obtengo la terminacion del dominio
  121. $term_dom = substr(strrchr ($email, '.'),1);
  122. //compruebo que la terminación del dominio sea correcta
  123. if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
  124. //compruebo que lo de antes del dominio sea correcto
  125. $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
  126. $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
  127. if ($caracter_ult != "@" && $caracter_ult != "."){
  128. $mail_correcto = 1;
  129. }
  130. }
  131. }
  132. }
  133. }
  134. if ($mail_correcto)
  135. return true;
  136. else
  137. return false;
  138. }
  139.  
  140. function validateExistMail($mail){
  141. /*Teneis que declarar las variables $servidor, $usuario,$password y
  142. $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
  143. $servidor = "localhost";
  144. $usuario = "root";
  145. $password = "";
  146. $sdb = "prueba1";
  147.  
  148. $ilink2=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
  149. mysql_select_db($sdb,$ilink2);
  150. $consulta2= "select id_usersTemp from users_temp where email = '$mail'";
  151. $resultado2=mysql_query($consulta2,$ilink2) or die (mysql_error());
  152. if (mysql_num_rows($resultado2)>0)
  153. return false;
  154. else
  155. return true;
  156. }
  157.  
  158.  
  159. //Comprobacion de datos
  160. //variables valores por defecto
  161. $name = "";
  162. $nameValue = "";
  163. $username = "";
  164. $usernameValue = "";
  165. $password1 = "";
  166. $password2 = "";
  167. $passwordValue = "";
  168. $email1 = "";
  169. $emailValue = "";
  170. $existusername = "";
  171. $existEmail = "";
  172.  
  173. //Validacion de datos enviados
  174. if(isset($_POST['send'])){
  175. if(!validateName($_POST['name']))
  176. $name = "error";
  177. if(!validateUsername($_POST['username']))
  178. $username = "error";
  179. if(!validateExistUsername($_POST['username']))
  180. $existusername = "error";
  181. if(!validatePassword1($_POST['password1']))
  182. $password1 = "error";
  183. if(!validatePassword2($_POST['password1'], $_POST['password2']))
  184. $password2 = "error";
  185. if(!validateEmail($_POST['email']))
  186. $email1 = "error";
  187. if(!validateExistMail($_POST['email']))
  188. $existEmail = "error";
  189. //Guardamos valores para que no tenga que reescribirlos
  190. $nameValue = $_POST['name'];
  191. $usernameValue = $_POST['username'];
  192. $emailValue = $_POST['email'];
  193. $passwordValue = $_POST['password2'];
  194.  
  195.  
  196. //Comprobamos si todo ha ido bien
  197. if($name != "error" && $username != "error" && $password1 != "error" && $password2 != "error" && $email1 != "error"){
  198. if($existusername == "error"){
  199. $existeU = 1;
  200. }
  201. if($existEmail == "error"){
  202. $existeE = 1;
  203. }
  204. if (!$existeU && !$existeE){
  205. $status = 1;
  206. }
  207. }
  208.  
  209.  
  210. }
  211.  
  212.  
  213. ?>
  214.  
  215. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  216. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">
  217. <head>
  218. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  219. <title>Formulario de registro utilizando PHP y Javascript (jQuery) para validar | COLORATE</title>
  220. <link rel="stylesheet" href="main.css" type="text/css" media="screen" />
  221. </head>
  222. <body>
  223. <div class="wrapper">
  224. <div class="section">
  225. <?php if(!isset($status)): ?>
  226.  
  227. <h1>Formulario de Registro</h1>
  228.  
  229. <form id="form1" action="formulario_2.php" method="post">
  230. <label for="name">Nombre <?php if ($name == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>A-z, mínimo 5 caracteres</span></label>
  231. <input tabindex="1" name="name" id="name" type="text" class="text <?php echo $name ?>" value="<?php echo $nameValue ?>" />
  232.  
  233. <label for="username">Nombre de usuario
  234. <?php
  235. if ($username == "error" || $existusername == "error"):
  236. if ($existusername == "error"):
  237. echo "<span style=color:red>El usuario " . $usernameValue . " ya existe";
  238. else:
  239. echo "<span style=color:red>Caracteres de A-z, mínimo 5 caracteres (No números)";
  240. endif;
  241. else:
  242. echo "<span style=color:green>Caracteres de A-z, mínimo 5 caracteres (No números)</span>";
  243. endif; ?>
  244. </label>
  245.  
  246. <input tabindex="2" name="username" id="username" type="text" class="text <?php if ($existeU == 1): echo $existusername; else: echo $username; endif;?>" value="<?php echo $usernameValue;?>" />
  247.  
  248. <label for="password1">Contraseña <?php if ($password1 == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>Mínimo 5 caracteres, máximo 12 caracteres, letras y números</span></label>
  249. <input tabindex="3" name="password1" id="password1" type="password" class="text <?php echo $password1 ?>" value="" />
  250.  
  251. <label for="password2">Repetir Contraseña <?php if ($password2 == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>Debe ser igual a la anterior</span></label>
  252. <input tabindex="4" name="password2" id="password2" type="password" class="text <?php echo $password2 ?>" value="" />
  253.  
  254. <label for="email">Email <span>
  255. <?php
  256. if ($email1 == "error" || $existEmail == "error"):
  257. if ($existEmail == "error"):
  258. echo "<span style=color:red>El email " . $emailValue . " ya existe";
  259. else:
  260. echo "<span style=color:red>Escribe un email válido por favor";
  261. endif;
  262. else:
  263. echo "<span style=color:green>Escribe un email válido por favor</span>";
  264. endif; ?>
  265. </label>
  266. <input tabindex="5" name="email" id="email" type="text" class="text <?php echo $email1 ?>" value="<?php echo $emailValue ?>" />
  267. <div>
  268. <input tabindex="6" name="send" id="send" type="submit" class="submit" value="Enviar formulario" />
  269. </div>
  270. </form>
  271.  
  272. <?php else: ?>
  273. <?php
  274. if(insertarReg($nameValue, $usernameValue, $passwordValue, $emailValue)):?>
  275. <h1>Registro introducido correctamente en la base de datos</h1>
  276.  
  277. <div class="respuesta_insert">
  278. <p>Gracias por registrarte en COLORATE.</p>
  279. <p>Te hemos mandado un mail a <span style="color:green"><?php echo $emailValue; ?></span> para que confirmes el alta. Si no lo recibes comprueba la bandeja de correo no deseado</p>
  280. <p>Gracias!</p>
  281. <p>Administrador Colorate</p>
  282. <p>Tutorial "Registro de Usuarios en PHP y MySql con validación y activación por mail".</p>
  283. </div>
  284. <?php else: ?>
  285. <?php if ($respuesta == 1) ?>
  286. <h1 style="font-color: red">No se ha podido insertar el registro en nuestra base de datos</h1>
  287. <!--<h1>¡Formulario enviado con éxito!</h1>-->
  288. <?php endif; ?>
  289. <?php endif; ?>
  290. </div>
  291. </div>
  292. </body>
  293. </html>

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: ferdan87 on June 13, 2013

Hola, que tal buen dia, muy buena ayuda tal lo que estaba yo byscando. pero necesito un favorsote, necesito saber como activar el email, despues de que me llega el correo de activacion le doy activar y me manda a una pagina que me da error necesito ayuda, gracias..

Posted By: gsl on November 28, 2013

Me interesa tomar este curso, para poder ampliar mis conocimientos en cuanto a Diseño y desarrollo de Sitios Web Accesibles, para el desarrollo de actividades en lugares de trabajo. Mi ubicación geográfica es el municipio de Rivera departamento del Huila en Colombia. Código postal 413001 Mi pasatiempos es trabajar en mi finca con ganado y además también me gusta la lectura ya que la carrera me exige leer para estar actualizado.

Posted By: lucasmdq47 on January 12, 2014

no entiendo en donde pongo los datos de mi tabla en la base de datos sql

You need to login to post a comment.