Registros de usuarios en Php y Mysql con validación de campos y activación por mail 7/8

Temario

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