Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/03/2008, 12:20
Avatar de jaronu
jaronu
 
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
APORTE: Avtivacion de cuenta de usuarios via e-mail.

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.

Última edición por jaronu; 08/03/2008 a las 17:27