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//capturar los datos del formulario en variables
$nick = $_POST['nick'];
$pass = $_POST['pass'];
$email = $_POST['email'];
//los datos para conectar
$host = "localhost";
$user = "nombreUsiario";
$passw = "123456";
$dataBase = "baseDeDatosUsada",
$tablaValidar = "tablaValidar";
$tablaUser = "tablaUser";
//conectar con el servidor MySQL
or
die('No se puede conectar con el servidor);
//conectar con la base de datos que queremos usar
$resultado = @mysql_select_db($dataBase)
or die('no se puede conectar con la base de datos
//aqui pongo el codigo que uso para boorar los datos si no se registra antes de las dos horas
//realmente quien los borra despues las dos horas es el primer usuario que entra a la web,
//que boorar todos las registros caducados.
//cojer el tiempo en que caduca el registro
$regCaducado = time() - 7200; //borrar los registros si no se han confirmado antes de 2h
$caducado = @mysql_query("DELETE FROM $tablaValidar WHERE instante <='".$regCaducado."'");
//me salto todos los pasos de comprobar que un usuario a rellenado los campos obligatorios del form,
//si ya esta registrado con ese correo o si ya existe el nombre de usuario etc.
//para el problema con las ñ y los acentos yo uso en en mysql y en todas las paginas
//que recojan datos de los formularios
//capturamos el instante,
//crear un numero aleatorio de 10 digitos
$numAleatorio = rand(0000000000, 9999999999); //tambien se puede usar MD5()
//consulta para la tabla de registros
$consultaRegistro_db = "INSERT INTO $tablaValidar
(nick, pass, email, aleatorio, instante)
VALUES
(\"$nick\", \"$pass\", \"$email\", \"$numAleatorio\", \"$instante\")
";
//mandar la consulta a la base de datos
$enviarConsultaRegistro_db = @mysql_query($consultaRegistro_db) or
die("No se pueden guardar los registros ");
//ahora hay que mandar un correo al usuario que se registra
//enviar un correo para que confirme el email
$cabecera = "Content-type: text/html; charset=utf-8\n";
$cabecera .= "MIME-Version: 1.0\n";
$mensaje = "Recibes este mensaje por que te has registrado donde se.<br />\n";
$mensaje .= "Si no te has registrado, borra este correo<br /><br />\n";
$mensaje .= "Estos son tus datos:<br />";
$mensaje .= "Nombre: $nick<br />";
$mensaje .= "Correo: $email<br /><br />";
$mensaje .= "Confirma tu registro desde este enlace:<br />";
$mensaje .= "<a href='http://www.tuweb.com/pagina03.php?codigo=$numAleatorio'>http://www.tuweb.com/pagina03.php?codigo=$numAleatorio</a>";
$para = $email;
$sujeto = "Mensaje de confirmacion de registro";
@mail($para, $sujeto, $mensaje, $cabecera) or
die ("No se ha podido registrar correctamente ");
pagina03.php
Código PHP:
Ver original//recojer el numero aleatrorio de la URL
$numeroAleatorio = $_GET['codigo'];
//conectar con la base de datos
//no voy a poner otra vez el codigo por que es lo mismo que enpagina02.php
//recuperar los datos del usuario
//se crea la consulta y se mete en una variable
$recuperar = @mysql_query("SELECT id, nick, pass, email, instante FROM $tablaValidar WHERE aleatorio = '".$numeroAleatorio."'") or
die("No se ha podido mandar la consulta "); //se meten los datos en un array
$nick = $datosArray['nick'];
$pass = $datosArray['pass'];
$email = $datosArray['email'];
$instante = $datosArray['instante'];
//si hay un registro que guardar lo guardamos y borramos los datos del registro
@mysql_query("DELETE FROM $tablaValidar WHERE aleatorio = '".$numeroAleatorio."'LIMIT 1") or
die("no borrado ");
//una variable para guardar la consulta de introducir los datos en la tabla de la database
$consultaUser_db = "INSERT INTO $tablaUser
( nick, pass, email, instante)
VALUES
( \"$nick\", \"$pass\", \"$email\", \"$instante\")
";
$enviarConsultaUser_db = @mysql_query($consultaUser_db) or
die("Sesion caducada ");
Y creo que ya está todo lo necesario.
espero que este claro.