Bueno, ahora se supone que ya llego el email, con el link de activacion.
Pero una cosa antes, hemos de cambiar tambien el codigo de login que tengamos para que no deje autentificarse a nadie
que no haya activado su cuenta mediante el link enviado.
en este caso el codigo del login es:
Archivo que se llama validar_usr.php que recoge las variables enviadas mediante un form de login
Código PHP:
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
$estado= "0"; //creo la variable $estado=0 para compararla despues con el campo de la BD estado y si son cero le dejara pasar
if ($_POST['usuario']) {
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));
$password = $HTTP_POST_VARS["password"];
$result = mysql_query('SELECT password, usuario, estado FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){
$_SESSION["k_username"] = $row['usuario'];
if( $estado == $row['estado']){ //aqui es donde comprovamos que el campo activado sea cero, si lo es pasara, si no, no.
//el siguiente scripy de java nos redirige donde le digamos, so no os hace falta ,lo borrais.
?>
<SCRIPT LANGUAGE="javascript">
location.href = "principal.php";
</SCRIPT>
<?
}else{
echo '<span class="Estilo5">Password incorrecto o cuenta sin activar</span>';
session_destroy();}
}else{
echo '<span class="Estilo5">Usuario no existente</span>';}
}
else{
echo '<span class="Estilo5">password incorrecto</span>';}
}
mysql_close();
?>
Y ahora, ya tenemos al usuario registrado, pero con su cuenta desactivada, no puede entrar a la zona restringiga todavia,
este es el archivo que procesa los datos enviado via URL mediante el link de activacion que mandamos al user.
activar_cuenta.php, por ejemplo:
Código PHP:
<?php
mysql_connect('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
//recogemos los valores enviados por el link de activacion que mandamos por mail
if (isset($_GET['id'])) {
$idval=$_GET['id'];
$activate2=$_GET['activateKey']; ;
//y aqui es donde cambiamos el valor 1=desactivado por valor 0=activado
$query = "UPDATE usuarios
SET estado = '0' WHERE id = '$idval' AND activate ='$activate2' " ;
mysql_query($query) or die(mysql_error());
?>
<SCRIPT LANGUAGE="javascript">
location.href = "principal.php";
</SCRIPT>
<?
}else{
echo "activacion incompleta.";
}
?>
Espero que sirva para orientar, creo que esta bastante bien explicado, y es para la gente como yo que necesitamos ver el codigo para enterarnos de algo, aunque ya aprenderemos, solo es cuestion de tiempo y de fijarse y romperse la cabeza.
Si hay errores en el codigo o fugas de seguridad, por favor, comentenlo y ayuden, mostrando el codigo, de como se mejora este script, para poder aprender ha hacer las cosas mejor.
Un saludo.