Ver Mensaje Individual
  #24 (permalink)  
Antiguo 22/08/2012, 13:01
Avatar de nanduky
nanduky
 
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Obterner un dato unico

Perdón, no son 3 horas, son 2, pero para el caso, es lo mismo.

En la base de datos se necesita una tabla (tablaUser) con los campos nick, pass y email (yo en mi caso me gusta guardar el instante "time()")

Y otra tabla (tablaValidar) con el nick, pass, email, aleatorio y instante.

en php:

pagina01.php
un formulario con los datos de nick, pass y email (y cada uno lo que necesite)
"no creo que sea necesario poner el codigo de un form"

pagina02.php
Código PHP:
Ver original
  1. //capturar los datos del formulario en variables
  2. $nick = $_POST['nick'];
  3. $pass = $_POST['pass'];
  4. $email = $_POST['email'];
  5.  
  6. //los datos para conectar
  7. $host = "localhost";
  8. $user = "nombreUsiario";
  9. $passw = "123456";
  10. $dataBase = "baseDeDatosUsada",
  11. $tablaValidar = "tablaValidar";
  12. $tablaUser = "tablaUser";
  13.  
  14. //conectar con el servidor MySQL
  15.     $conectar = @mysql_connect($host,$user,$passw)
  16.         or die('No se puede conectar con el servidor);
  17.  
  18. //conectar con la base de datos que queremos usar
  19.     $resultado = @mysql_select_db($dataBase)
  20.         or die('no se puede conectar con la base de datos
  21.  
  22. //aqui pongo el codigo que uso para boorar los datos si no se registra antes de las dos horas
  23. //realmente quien los borra despues las dos horas es el primer usuario que entra a la web,
  24. //que boorar todos las registros caducados.
  25.  
  26. //cojer el tiempo en que caduca el registro
  27. $regCaducado = time() - 7200;
  28. //borrar los registros si no se han confirmado antes de 2h
  29. $caducado = @mysql_query("DELETE FROM $tablaValidar WHERE instante <='".$regCaducado."'");
  30.  
  31. //me salto todos los pasos de comprobar que un usuario a rellenado los campos obligatorios del form,
  32. //si ya esta registrado con ese correo o si ya existe el nombre de usuario etc.
  33.  
  34. //para el problema con las ñ y los acentos yo uso en en mysql y en todas las paginas
  35. //que recojan datos de los formularios
  36. mysql_query ("SET NAMES 'utf8'");
  37.  
  38. //capturamos el instante,
  39. $instante = time();
  40. //crear un numero aleatorio de 10 digitos
  41. $numAleatorio = rand(0000000000, 9999999999);
  42. //tambien se puede usar MD5()
  43.  
  44. //consulta para la tabla de registros
  45. $consultaRegistro_db = "INSERT INTO $tablaValidar
  46.                     (nick, pass, email, aleatorio, instante)
  47.                     VALUES
  48.                     (\"$nick\", \"$pass\", \"$email\", \"$numAleatorio\", \"$instante\")
  49.                     ";
  50.  
  51. //mandar la consulta a la base de datos
  52. $enviarConsultaRegistro_db = @mysql_query($consultaRegistro_db) or die("No se pueden guardar los registros ");
  53.  
  54. //ahora hay que mandar un correo al usuario que se registra
  55.  
  56. //enviar un correo para que confirme el email
  57. $cabecera = "Content-type: text/html; charset=utf-8\n";
  58. $cabecera .= "MIME-Version: 1.0\n";
  59. $cabecera .= "From: [email protected]\n";
  60. $cabecera .= "Reply-To: [email protected]\n\n";
  61.  
  62. $mensaje = "Recibes este mensaje por que te has registrado donde se.<br />\n";
  63. $mensaje .= "Si no te has registrado, borra este correo<br /><br />\n";
  64. $mensaje .= "Estos son tus datos:<br />";
  65. $mensaje .= "Nombre: $nick<br />";
  66. $mensaje .= "Correo: $email<br /><br />";
  67. $mensaje .= "Confirma tu registro desde este enlace:<br />";
  68. $mensaje .= "<a href='http://www.tuweb.com/pagina03.php?codigo=$numAleatorio'>http://www.tuweb.com/pagina03.php?codigo=$numAleatorio</a>";
  69.  
  70. $para = $email;
  71. $sujeto = "Mensaje de confirmacion de registro";
  72.  
  73. @mail($para, $sujeto, $mensaje, $cabecera) or die ("No se ha podido registrar correctamente ");

pagina03.php
Código PHP:
Ver original
  1. //recojer el numero aleatrorio de la URL
  2. $numeroAleatorio = $_GET['codigo'];
  3.  
  4. //conectar con la base de datos
  5. //no voy a poner otra vez el codigo por que es lo mismo que enpagina02.php
  6. mysql_query ("SET NAMES 'utf8'");
  7.  
  8. //recuperar los datos del usuario
  9. //se crea la consulta y se mete en una variable
  10. $recuperar = @mysql_query("SELECT id, nick, pass, email, instante FROM $tablaValidar WHERE  aleatorio = '".$numeroAleatorio."'") or die("No se ha podido mandar la consulta ");
  11. //se meten los datos en un array
  12. $datosArray = mysql_fetch_array($recuperar,MYSQL_ASSOC);
  13.  
  14. $nick = $datosArray['nick'];
  15. $pass = $datosArray['pass'];
  16. $email = $datosArray['email'];
  17. $instante = $datosArray['instante'];
  18.  
  19. //si hay un registro que guardar lo guardamos y borramos los datos del registro
  20.  
  21. @mysql_query("DELETE FROM $tablaValidar WHERE aleatorio = '".$numeroAleatorio."'LIMIT 1") or die("no borrado ");
  22.  
  23.  
  24. //una variable para guardar la consulta de introducir los datos en la tabla de la database
  25. $consultaUser_db = "INSERT INTO $tablaUser
  26.                     ( nick, pass, email, instante)
  27.                     VALUES
  28.                     ( \"$nick\", \"$pass\", \"$email\", \"$instante\")
  29.                     ";
  30.  
  31. $enviarConsultaUser_db = @mysql_query($consultaUser_db) or die("Sesion caducada ");

Y creo que ya está todo lo necesario.
espero que este claro.

Última edición por nanduky; 22/08/2012 a las 13:10