Tabla de contenidos
Temario
- Tema 1: Introducción y requerimientos
- Tema 2: Instalar Appserv o Wamp
- Tema 3: Crear la base de datos
- Tema 4: Creación y validación del formulario de registro
- Tema 5: Registrar Usuarios en PHP
- Tema 6: Envío de correo para activar usuario
- Tema 7: Activación de usuairo y registro en tabla USUARIOS
- Tema 8: Finalización y posibles mejoras
Activación de usuario en PHP y Mysql
Este es la parte 7 de 8 del tutorial sobre «Registros de usuarios en Php y Mysql con validación de campos y activación por mail».
En el capítulo anterior vimos como enviar un mail para activar un usuario en PHP, en cual incluía un enlace del estilo «activar.php?id=textoaleatorio» donde hacer clic para que el archivo activar.php iniciara el siguiente proceso:
- Recoger la variable pasada por GET.
- Comprobar que esa clave existe en la tabla users_temp
- Dar de alta en la tabla final USUARIO
- Eliminar el registro en la tabla users_temp
- Envio de correo electrónico informando del registro definitivo.
En esta página activar.php haremos todo el proceso, así que, vamos manos al a obra!!.
Recoger la variable pasada por GET
Al usuario le hemos enviado un mail con un enlace en el que tendrá que hacer clic. Dicho enlace tiene la siguiente estructura:
activar.php?id=textoaleatorio
Como véis, estamos creando un enlace para que la página activar.php recoja los valores con el método GET. Podríamos enviar tantos parámetros como nos hiciera falta, pero en este caso solo nos interesa la clave que añadimos en la tabla users_temp llamada txt_Activ.
En el caso que nos hicieran falta más parámetros, bastaría con añadir más variables al enlace. Por ejemplo, en el caso de que quisiéramos pasar además de la clave, el usuario, podríamos hacerlo de la siguiente manera:
activar.php?id=textoaleatorio&usuario=nombredeusuario
Lo único que se hace es añadir variables concatenándolas con el carácter &.
Siguiendo con nuestro caso, en el que sólo nos hace falta recuperar la clave (es decir, la variable ID), para lo que tendríamos que crear es el archivo “activar.php” y recoger el valor con la siguiente línea:
[php]
$clave = $_GET[‘id’];
[/php]
Con el método GET y recuperando el ID que hemos pasado por URL, nos guardamos el valor en una variable, que utilizaremos en este archivo, llamada clave.
Comprobar que esa clave existe en la tabla users_temp
Por seguridad, vamos a comprobar que el ID pasado por URL (clave) existe en la base de datos, realizando un acceso a MySQL y filtrando en la sentencia por txt_Activ.
[php]
/*Conectamos con la base de datos. Acuerdate de cambiar los valores por tus datos de acceso*/
$servidor = «localhost»;
$usuario = «root»;
$password = «»;
$sdb = «prueba1»;
$ienlace=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
mysql_select_db($sdb,$ienlace);
//Contruimos la sentencia para la cónsulta
$sql = «select * from users_temp where txt_Activ = ‘$clave'»;
//Comprobamos el resultado de la consulta
$resultado=mysql_query($sql,$ienlace) or die (mysql_error());
[/php]
Nota: Esto lo podríamos completar (dándole más segururidad), pasando por GET el mail del usuario y después comprobar que el ID y el mail existen en la base de datos users_temp.
Con esto comprobamos si existe el ID en la tabla users_temp. En caso de que el ID exista, vamos a guardarnos los datos del registro que hemos seleccionado para poder dar de alta esos mismos datos en la tabla definitiva USUARIO.
El código después de hacer el select quedaría de la siguiente manera:
[php]
/*Recorremos los campos del registro que hemos recuperado de la tabla users_temp*/
while ($registro = mysql_fetch_array($resultado)) {
$nombre = $registro[‘nombre’];
$username = $registro[‘users_Temp’];
$password = $registro[‘password’];
$email = $registro[‘email’];
} // fin del bucle de ordenes
//Liberamos los registros de la tabla
mysql_free_result($resultado);
//cierra la conexión con la base de datos
mysql_close($resultado);
[/php]
Ya hemos recuperado los datos del usuario que teníamos en la tabla users_temp con los que se dio de alta en el formulario, ahora los vamos a utilizar para volcarlos en la tabla final USUARIOS.
Dar de alta en la tabla final USUARIO
Si habéis seguido el tutorial completo, os acordaréis que utilizamos una función para dar de alta el usuario en la tabla users_temp, la cual llamamos insertarRegiAct.
Vamos a aprovechar esta función para dar de alta el usuario en la nueva tabla USUARIO. Así que definiremos en este archivo otra función que llamaremos insertarRegiAct2:
[php]
//Le pasamos los parámetros: name, username, password1, email.
function insertarRegiAct2($name_, $username_, $password1_, $email_){
/*Teneis que declarar las variables $servidor, $usuario,$password y $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
$servidor = «localhost»;
$usuario = «root»;
$password = «»;
$sdb = «prueba1»;
//Conectamos
$ilink4=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
//Seleccionamos la base de datos
mysql_select_db($sdb,$ilink4);
//Sentencia para inserter el registro
$inserta= «insert into usuarios (nombre,usuario,password,email,fecAlta) values (‘$name_’,’$username_’,’$password1_’,’$email_’,CURDATE())»;
$resultado4=mysql_query($inserta,$ilink4) or die (mysql_error());
//Comprobamos si el resultado ha ido bien
if (!$resultado4)
return false;
else
return true;
}
[/php]
La función al igual que la que vimos en el anterior tutorial, nos devuelve true si todo ha ido bien y false si ha habido algún error.
Ahora nos queda llamar a esta función pasándole los parámetros que espera, que son ni más ni menos que los que hemos recuperado al comprobar si el usuario existe en la tabla users_temp.
Después de cerrar la conexión con la base de datos en la consulta anterior, incluiremos este código:
[php]
/*LLamamos a la función*/
if(insertarRegiAct2($nombre, $username, $password, $email)){
echo »
Tu cuenta ha sido activada correctamente
«;
}
else
echo »
Tu cuenta NO ha sido activada correctamente.
«;
[/php]
Como veis, en este trozo de código, en una sola línea hacemos la llamada a la función y la comprobación de si ha devuelto true o false, y en cualquiera de los casos, informamos al usuario de cómo ha ido el proceso.
Eliminar el registro en la tabla users_temp
Una vez el usuario se da de alta en la tabla definitiva USUARIOS, podríamos crear un script para eliminarlo de la tabla users_temp, pero como crearemos un proceso en el que pasados 4 días del alta de un usuario se eliminará automáticamente (esto lo hacemos seleccionando todos los registros de la tabla users_temp cuya fecha actual menos fecha de alta (fecAlta) sea mayor a 3 días.
Envío de correo para activar usuario en PHP
Si todo ha ido correctamente y tenemos nuestro usuario dado de alta en la tabla USUARIOS, tan sólo nos queda mandarle un mail dando la bienvenida.
Esto lo podemos incluir la llamada a la función insertarRegAct2 de la siguiente manera:
[php]
if(insertarRegiAct2($nombre, $username, $password, $email)){
echo »
Tu cuenta ha sido activada correctamente
«;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
//envioMail_regis();
}
else
echo »
Tu cuenta NO ha sido activada correctamente
«;
[/php]
La función envioMail_regis como veis está comentada. Esto es porque quiero dejaros a vosotros esta tarea, que después de haber seguido el tutorial completo, seguro sabréis hacer.
Con esto, hemos terminado por completo la aplicación de «Registros de usuarios en Php y Mysql con validación de campos y activación por mail«.
Ahora sólo quedará una parte 8 en la que explicaré algunas posibles mejoras en esta pequeña aplicación en PHP que vosotros mismos podríais añadir.
Aquellos que quieran tener todos los archivos de este completo tutorial, por favor, poneros en contacto conmigo a través del formulario de contacto del blog.
Temario
- Tema 1: Introducción y requerimientos
- Tema 2: Instalar Appserv o Wamp
- Tema 3: Crear la base de datos
- Tema 4: Creación y validación del formulario de registro
- Tema 5: Registrar Usuarios en PHP
- Tema 6: Envío de correo para activar usuario
- Tema 7: Activación de usuairo y registro en tabla USUARIOS
- Tema 8: Finalización y posibles mejoras
71 comentarios
hola piensas hacer el zip para descargarlo esta muy bueno
HOla Carlos, como decía en el post, aquellos que quieran los archivos, poneros en contacto conmigo a través de la zona de contacto del blog y os lo enviaré.
Saludos.
Buenos días, tengo un problema, me llega el correo:
Activa tu usuario, u al seleccionar el enlace me sale en la URL:
target%3D_blank
No se como activar el usuario.
¿Podríais darme la clave.?
Un saludo y gracias.
CHema la clave te refieres a la que te da la función?.
Es raro que te salga eso la verdad. Chequea el valor que le estas pasando en la variable $url, en teoria deberia ser algo como: activar.php?id=shjUHjek89jsJdm
El problema creo que esta en el cuerpo del mensaje que creamos en php para enviar por mail.
Activar cliente
Prodrías enviarme el código de esta parte.
Un saludo y gracias.
Chema ya te envie los archivos no?
Hola podrias pasarme el ejemplo… lo envias a mi correo gracias de antemano bye!!!
Genial el manual.
Sólo tengo una duda como puedo crear el «proceso en el que pasados 4 días del alta de un usuario se eliminará automáticamente»
Gracias de antemano
Por una lado, mediante SQL sería algo así:
[php]
$checktime = 3600*24*30;
mysql_query(«DELETE FROM table WHERE registration_time < '". (time() - $checkdate) ."' AND activate != 0"); [/php] Este script php con sentencia sql, y ejecutarla periódicamente con cron o el gestor de tareas programadas de tu servidor. Por otro lado, también puedes almacenar en bd la ultima vez que se ejecutó el script, y si hace el tiempo suficiente ejecutarla poniendole en alguna librería que se ejecute en tu pagina. Yo optaría por la primera.
Mirate esto tambien –>
http://www.forosdelweb.com/f18/php-script-para-envio-correos-con-cronograma-672883/
Y esto –>
http://miquelcamps.com/php/configurar-cronjob-para-ejecutar-un-script-php-cpanelx/
Hola Admi
Buenos días, tengo un problema, me llega el correo:Activa tu usuario, y al seleccionar el enlace me sale la URL: target%3D_blank
No puedo activar el usuario.
Me podes enviar los archivos Gracias
amigo me podrias enviar los archivos del tutorial, estaria muy agradecido, saludos y muy buen material
hola,
Los tienes en la siguiente parte del tutorial –> http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-88
Saludos.
AMIGO YA HE DESCARGADO LOS ARCHIVOS, MUCHAS GRACIAS UNA PREGUNTA POEQUE EL ARCHIVO DE ACTIVAR MAIL ESTA EN BLANCO?
NO le hagas caso. EN este caso sería activar.php.
Un saludo y perdona las molestias.
deseo tener todo el archivo junto por favor
Pasate por este enlace, que es la última parte del tutorial y ahi viene el código para descargar
http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-88
hola
oye perdon por molestar tanto es que soy nuevo en esto e creado otros registros pero este es muy completo este codigo donde debería de ponerlo
PHP:
$checktime = 3600*24*30;
mysql_query(«DELETE FROM table WHERE registration_time <'". (time() – $checkdate) ."' AND activate != 0");
Te doy mil gracias por la ayuda. Un saludo amigo.
y mi ultima duda es donde desarrolo para madar el mail de que su cuenta a sido activada e creado el tutorial entero pero no se como desarrollar esta parte te agradeceria muxo tu ayuda con estas dos cosas ya termino de molestarte asique si eres tan amable por favor ayudame.
Gracias, Saludos.
Pues mira, en el archivo «activar.php» ya está puesto, solo que comentado y hay que crear la funcion.
[php]
if(insertarRegiAct($nombre, $username, $password, $email)){
echo «
Tu cuenta ha sido activada correctamente
«;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
envioMail_regis($email, $usuario, $enlace);
}
function envioMail_regis($dir_correo, $usuario, $enlace){
$dominio = «http://localhost/»;
$destinatario = $dir_correo;
$asunto = «COLORATE – El usuario» . $usuario . «ha sido activado»;
$cuerpo = ‘
Hola’;
$cuerpo .= $usuario;
$cuerpo .= ‘
Gracias por registrarte en COLORATE.
Su usuario ha sido activado correctamente. Ahora puede loguerase en el sistema:
En cuanto al DELETE, yo lo pondría justo antes de enviar el e-mail con la función «envioMail_regis».
hola amigo mira hice lo que me dijiste para que me envie el correo de que a sido activado y obtube este error
Parse error: syntax error, unexpected T_VARIABLE in activar.php on line 59
¿por que puede ser?
hice todo tal cual lo pusiste e incluso llege a copiar tu codigo.
perdon por molestar tanto.
muchas gracias. Un saludo
edyuin me puedes poner aqui que hay en la linea 59 de activar.php?
veras yo el codigo lo e puesto justo donde pone el comentario de enviar mail y lo e cambiao por tu codigo y justo despues esta esto
}
else
echo «Tu cuenta NO ha sido activada correctamente»;
una cosita si tubieras el codigo hecho me podrias enviarmelo? para ver los fallos que tengo y dejar de molestar. muchas gracias.
pero esa es la linea 59 de tu activar.php¿?..
Pon aquí el código de la función entera pero dentro de la caja de comentario ponlo entre estas etiquetas [php] tu codigo [/php] .. no te confundas y ten en cuenta que esto no irá en tu codigo, solo es para que aqui en los comentarios del blog resalte las lineas y demas ..
lo e modificado y ahora el error es en la linea 74 es el siguiente: Parse error: syntax error, unexpected T_ELSE in C:\AppServ\www\edyuin\activar.php on line 74
y el codigo es este.
php:
<?php
//Recogemos el valor pasado por URL
$clave = $_GET['id'];
//Comprobamos si el usuario que ha activado esta dirección existe en la base de datos
//y recogemos de la base de datos users_temp los campos para insertar en la base de datos USUARIOS
//if(!isset($clave)){
/*Teneis que declarar las variables $servidor, $usuario,$password y
$sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
$servidor = "localhost";
$usuario = "root";
$password = "password";
$sdb = "user";
$ienlace=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
mysql_select_db($sdb,$ienlace);
$sql = "select * from users_temp where txt_Activ = '$clave'";
$resultado=mysql_query($sql,$ienlace) or die (mysql_error());
while ($registro = mysql_fetch_array($resultado)) {
$nombre = $registro['nombre'];
$username = $registro['usersTemp'];
$password = $registro['password'];
$email = $registro['email'];
} // fin del bucle de ordenes
mysql_free_result($resultado); // libera los registros de la tabla
mysql_close(); // cierra la conexion con la base de datos
if(insertarRegiAct($nombre, $username, $password, $email)){
echo "Tu cuenta ha sido activada correctamente»;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
envioMail_regis($email, $usuario, $enlace);
}
function envioMail_regis($dir_correo, $usuario, $enlace){
$dominio = «http://localhost/»;
$destinatario = $dir_correo;
$asunto = » El usuario» . $usuario . «ha sido activado»;
$cuerpo = ‘
USUARIO ACTIVADO
Hola’;
$cuerpo .= $usuario;
$cuerpo .= ‘Gracias por registrarte .
Su usuario ha sido activado correctamente. Ahora puede loguerase en el sistema:
Logueate«;
//para el envío en formato HTML
$headers = «MIME-Version: 1.0\r\n»;
$headers .= «Content-type: text/html; charset=iso-8859-1\r\n»;
//dirección del remitente
$headers .= «From: Admin \r\n»;
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= «Reply-To: colordeu@gmail.com\r\n»;
//ruta del mensaje desde origen a destino
//$headers .= «Return-path: holahola@desarrolloweb.com\r\n»;
//direcciones que recibián copia
//$headers .= «Cc: maria@desarrolloweb.com\r\n»;
//direcciones que recibirán copia oculta
//$headers .= «Bcc: pepe@pepe.com,juan@juan.com\r\n»;
//En localhost el envío de e-mail a veces no funciona, hay que configurar algunas cosas.
mail($destinatario,$asunto,$cuerpo,$headers);
}
else
echo «Tu cuenta NO ha sido activada correctamente»;
//}
function insertarRegiAct($name_, $username_, $password1_, $email_){
/*Teneis que declarar las variables $servidor, $usuario,$password y
$sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
$servidor = «localhost»;
$usuario = «root»;
$password = «password»;
$sdb = «user»;
$ilink4=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
mysql_select_db($sdb,$ilink4);
$inserta= «insert into usuarios (nombre,usuario,password,email,fecAlta) values (‘$name_’,’$username_’,’$password1_’,’$email_’,CURDATE())»;
$resultado4=mysql_query($inserta,$ilink4) or die (mysql_error());
if (!$resultado4)
return false;
else
return true;
}
?>
mándame mejor los archivos por mail y me los miro, que aqui ha salido un poco churro :D. Ahhh acuerdate de quitar el mail colordeu@gmail.com en el codigo por favor ..
cual es el correo.
lo del correo en este archivo no lo quite por que es el que modifico en el localhost pero no usa los correos para nada de toas formas no te preocupes.
muchas gracias por vuestra ayuda.
Ya di con el problema resulta que me había comido un { jeje muchas gracias. Mi ultimas consultas esperemos ahora me sale que ha sido activado y debajo sale esto
Duplicate entry ‘edyuin-edyuin@gmail.com’ for key ‘usuario’.
no se por que es ¿hay algun error?
y lo del codigo para que se borre los usuarios a los 3 dias ¿lo pongo tal cual lo tienen aqui escrito?
y una cosa que me gustaría ayudaros a vosotros he creado un istalacion de las tablas de datos y un logueo si kereis los archivos para colaborar os lo mando encantado.
muchas gracias y espero no causar muchas molestias.
Bueno a lo de duplicate entry, es porque tienes ese registro ya dado de alta en la tabla. Una de dos, o lo borras de la tabla o pruebas con otro usuario. Mira tambien si el campo lo tienes como UNIQUE, eso significa que no puede haber dos campos iguales (el que tenga como parametro UNIQUE) en esa tabla.
Haz una cosa, haz un exportar la tabla y la pegas aqui a ver como la tienes definida.
hola ya se lo que me falla pero no se como areglarlo y por mas que intento no soy capaz te agradeceria muchisimo tu ayuda, es el codigo else de tu cuenta no a sido activada correctamente nose como se aria donde se pondría ni como, me puedes pasar tu archivo activar.php para ver donde y como ponerlo por favor. Gracias un saludo
Saludos.
Estoy empezando con php y quisiera intentar un proyecto de este tipo, que me parece estupoendo tal y como lo has explicado.
Estoy buscando la zona de contactos para ver si me puedes mandar los archivos, tal y como dices.
¿Puedes enviármelo?
Muchas gracias…-
Los archivos los tienes en la parte 8 del tutorial en esta dirección (te he contesado al mail también):
http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-88
Saludos.
edyuin tienes el fichero un poco liado.
Por un lado has puesto dos veces la función insertarRegiAct.. mira este es tu código:
[php]
if(insertarRegiAct($nombre, $usuario, $password, $email)){
echo «Tu cuenta ha sido activada correctamente»;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
//envioMail_regis();
if(insertarRegiAct($nombre, $usuario, $password, $email)){
echo «Tu cuenta ha sido activada correctamente»;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
envioMail_regis($email, $usuario, $enlace);
[/php]
Te sobra uno de ellos, por eso te da duplicado.
Por otro lado el else no está puesto donde debería .. En tu código tienes el else justo después de la función function «envioMail_regis» y ahi no pinta nada. En definitiva el código en esa parte tiene que quedar así:
[php]
mysql_free_result($resultado); // libera los registros de la tabla
if(insertarRegiAct($nombre, $usuario, $password, $email)){
echo «Tu cuenta ha sido activada correctamente»;
//ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
envioMail_regis($email, $usuario, $enlace);
}
else
echo «Tu cuenta NO ha sido activada correctamente»;
[/php]
Ahora viene la parte CONSEJOS:
Descargate de nuevo el fichero que tengo en el POST y comparalo.
Empapate de algún manual de PHP porque necesitas bases de programación en PHP.
Cuando tengas dudas con un error, lo primero que tienes que hacer es buscar en GOOGLE, volver a buscar y si no encuentras el error, preguntarme a mí, en foros, o demás sitios.
Espero te haya servido por fin este último arreglo. Ahhh y chequea la tabla users_temp de la base de datos, porque creo que sigues teniendo el campo e-mail como UNIQUE, y en realidad si que puede admitir repetidos en esta tabla, al contrario que en la tabla USUARIOS.
Saludos.
muchas gracias ya tengo mi sistema completo hare los consejos que me diste y muchas gracias ya me funciona todo ala perfeccion, muchas gracias x toda la paciencia que as tenido, gracias. un saludo.
ya lo he visto ya los he descargado y si me funcion todo muchas gracias.
saludos.
me alegro 😀
hola que tal, estaba buscando ayuda, con la programación ya que estoy aprendiendo, y aun hay cosas que no entiendo muy bien agradecería que por favor envíes este tutorial a mi correo. una pregunta, al instalar phpmyadmin gano alguna desventaja, es decir quiero saber si dicho programa puede afectar la estabilidad o rendimiento del servidor? muchas gracias me pareció buenísima esta pagina.
hola lisandro, el tutorial no lo tengo en un archivo a parte para mandartelo por correo, sería cosa de que fueras copiando el texto. Otra cosa es si pides los archivos, es decir el código, que eso si que lo tienes en la parte 8 (la ultima) del tutorial para descargarlos.
Saludos.
Excelente tutorial, felicitaciones; tengo una consulta, al actualizar la pagina » …activar.php?id=clave…» me sale «duplicate key …»; ¿Puedo hacer un condicional para que me envie a otra pagina diciendo por ejemplo «tu ya has activado tu cuenta, estos son tus datos ….»?
Gracias, excelente trabajo.
bueno podrias probar a hacer una cosa. Una vez insertar el usuario bueno en la tabla USUARIOS, bórralo de la tabla USERS_TEMP. Una vez tengas esto, cuando vayas a hacer este select:
[mysql]
$sql = «select * from users_temp where txt_Activ = ‘$clave'»;
[/mysql]
Podrias hacer una comprobación del estilo: SI EXISTE USUARIO EN USERS_TEMP vamos a activarlo, en caso contrario, no se activa.
No se, es una opción que creo puede funcionar bien y así mantener las tablas limpias.
Saludos.
Gracias, voy a probarlo.
Hola, lei todo el tutorial, pero me surge una duda cuando el usuario se le da de alta en la tabla usuario, me imagino que luego se borra el registro de la tabla temporal, aqui es donde tengo la duda, si por ejemplo viene otra persona y se registra con el mismo nombre, la validacion en el form mostraria que ese nombre de usuario es valido ya que lo esta comprobando en la tabla temporal, mas no en la tabla final, cuando esa persona una vez se termina de registrar con el email de confirmacion, no daria problema con el nombre de usuario en la tabla final? ya que ahi estaria el nombre del otro usuario. A ver si por favor pueden aclararme esa parte, que es lo unico que no logro entender, soy nuevo en esto de php y mysql. Gracias
Tienes razón Carlos. Habría que comprobar directamente en la tabla de USUARIOS y no en la de USERS_TEMP.
saludos.
Hola de nuevo, gracias por responder. Ahora me surge otra duda si lo hago validando en USUARIOS. Si por ejemplo en el hipotético caso que se registra un usuario, pero este no activa su cuenta inmediatamente, y luego viene otra persona y se registra con el mismo nombre, al estar todavía en la tabla USERS_TEMP, la validación diría que es valido el nombre, y si esta persona si activa su cuenta al instante, creo que el primer usuario que se registro tendría problemas al momento de activar su cuenta, ya que se encuentra ese mismo nombre en la tabla USUARIOS. No se como hacer en ese caso.
Por los momentos lo que hice fue usar solo una tabla para los usuarios, además de que le agregue otro campo «status», con valor 1 para usuarios activados y 0 para los que no han activado su cuenta por email. El sistema funciona bien si llega a ocurrir ese caso, pero como dices que es recomendable usar dos tablas para así evitar tener en una misma usuarios spam, ¿alguna idea de como hacer para solventar ese caso, usando las dos tablas?
bueno eso sería rizar el rizar, pero si, puede darse el caso. Ahi ya depende de lo que quieras hacer tu. Yo lo que haría es si alguien ha «reservado» el nombre, aunque no lo haya activado, lo dejaría como reservado y al nuevo usuario no le permitiria darse de alta con ese usuario.
Eso si, puedes hacer cosas como por ejemplo, dejarlo darse de alta y en caso de que en ese tramo de 2 dias alguien intente darse de alta mostrarle un aviso de que el usuario por el momento está reservado y en caso de que quede libre enviar un e-mail .. no se, eso ya va a gustos.
Por su puesto, yo sigo prefiriendo tener dos tablas bien separadas, uno con usuarios reales y el otro con spam o posibles futuros usuarios.
Saludos.
Bueno ahí vere cual solución implementar… Gracias.
Hola muchas gracias con éste aporte, si pudieras enviarme los archivos con el codigo te lo agradecería, muchas gracias.
Carlos, los archivos los tienes en el tema 8 :
http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-88
Saludos.
hola hola!! solo me funcionó una vez 🙁 mas ya nooo aq se debe??
me podrias enviar los archivos?
Mail: juan-p-m@hotmail.com
Hola, estaría interesado en que me pudieras falicitar los archivos.
Gracias de antemano y saludos.
Ya he visto que los ha colgado, disculpa.
Ya me los he bajado. Gracias nuevamente.
Al meterme en el email de verificación, me meto en el link del código y me sale:Unknown column ‘nombre’ in ‘field list’
pues tiene toda la pinta de que no tienes un campo «nombre» en la tabla especificada. Ten en cuenta que es «case sensitive», es decir, que tiene en cuenta las mayúsculas y minúsculas con lo que el nombre tiene que ser exactamente igual.
Pero podrías hacer un login, para acceder por favor, lo necesito
En mi blog tengo una recopilación de 50 formularios jquery que te pueden ayudar –> http://www.colordeu.es/BLOG/50-plugins-jquery-utiles-para-crear-formularios-web
Admin, me puedes hacer el del login con jquery, este:http://d2o0t5hpnwv4c1.cloudfront.net/041_TopPanelWithJquery/demo/index.html , me lo puedes poner para descargar?
Por favor. Es que no se como editarlo, tu me lo pones, ya todo menos lo de la configuración de la db, usuario, contraseña y servidor, y la tabla de usuarios. Mi msn:jamarin_99@hotmail.com
Saludos
Hola Jose Antonio,
hombre jose antonio, te he pasado un enlace que creo puede ayudarte mucho pero lo que no quiero es que el blog se convierta en un lugar de peticiones para ahorraros trabajo, lo que intento con esto es que aprendáis. Espero que me entiendas. Un saludo.
de todas maneras, has tenido suerte porque ya hice un tutorial al respecto –> http://www.colordeu.es/BLOG/slide-panel-con-ajax
Tiene enlace para descargar 😀
Vale, gracias.
Hola admin tengo una consulta no he terminado todo el tuto la verdad pero he descargado el codigo que has puesto y faltan 2 archivos el de activar-mail que no tiene codigo y mail que esta en formulario adjuntado nose que hace bien cada uno si me podrias ayudar enviandome todo y dejar que yo lo configure, ya se que as puesto que nosotros desarrollemos el resto me parece bien pero esque soy bastante nob y me entiendo con php pero nose desarrollarlo si me dieras un adjunto para que yo solo modifique y funcione o me explicaras que tengo que poner en esos 2 archivos y si aria falta algo mas a lo que as adjuntado ya te estaria muy agradecido. muchas gracias de antemano este es mi email tyrael_nico@hotmail.es
Hola admin ya me termine el tuto el problema que vi es que he realizado el formulario y me da un error con variables que estoy viendo si puedo solucionar y ese mismo error no me lo da el que as puesto en la parte numero 8 para baja y comparando veo que as trabajado bastante mas en el archivo para bajar pero como decia antes faltan 2 archivos 1 llamado activar-mail q esta vacio y mail que esta adjuntado a formulario me podrias dar codigo de esos archivos o alguna ayuda en las intrucciones? graicas
estos archivos no los tengo creados ya que los deje un poco para que vosotros investigarais … por favor inténtalo y si así no puedes sacarlo ya te echo una mano, pero hacerlo yo y enviartelo no era mi intención para este tuto. Espero que lo entiendas.
haaa ok esque el que baje del parte 8 es muy distinto a lo del tuto ya que as comprimido un poco mas y cambiado algunas variables . bueno te entiendo gracias de todas maneras vere de hacerlo o usar el sistema tradicional . un saludo
Hola admin queria avisarte que al final he modificado el registro simple que yo tenia de usuarios y he podido hacerle validacion por email y otras opciones para enviarles informacion de la pagina diaria o mensual y esas cosa. Pero tengo 1 problema no puedo meter el recapcha he usado el que da google los codigos y otros foros me podrias ayudar porque es indiferente el capcha al formulario. un saludo
por el blog tengo algun que otro tutorial sobre Captcha .. échale un vistazo e intenta implementarlo en tu código, saludos.
hola, vieras que todo me funciona bien, pero el primer correo no me llega, lo estoy haciendo desde el servidor web, gracias!!!
chequea este enlace:
http://www.perubinario.com/2011/06/configurar-sendmail-con-wamp-en-localhost-usando-gmail
Saludos.
Hola me mandarías los archivos de este tutorial completo xfas los necesito. grasias
los tienes en la parte 8 del tutorial –> http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-88
Saludos.