Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2008, 11:57
Avatar de jaronu
jaronu
 
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Tema: recuperacion de contraseñas (con md5)
Pregunta: como puedo hacer para que mis usuarios recuperen su contraseña si la olvidaron.
Respuesta:

1- Un formulario para que el usuario escriba su email, si existe en la BD, lo redirigimos a otro formulario
2-En el nuevo formulario, hacemos que el usuario, escriba una nueva contraseña y hacemos un UPDATE a la BD
3-En mi caso como tengo implementado un sistema de activacion de cuentas via email, que esta en este foro, desactivo al usuario y le envio un nuevo link de activacion a su email. Pero para no hacer demasiado largo el aporte y como ya esta en el foro no lo incuyo.
Pero si dejo preparado un email que se le enviara al usuario informandole que se cambio su password con exito.
4-el segundo formulario incluye un archivo de seguridad captcha para formularios aportado por pato12, puede que no sea el mejor sistema pero se puede poner la imagen de fondo que quieras. El archivo se llama segurudad.php y despues explicare que hace, pero este archivo de seguridad sera llamado por el formulario de esta manera:

Cita:
<img src="seguridad.php" vspace="3" class="Estilo24" />
imagen que contendra un codigo de seguridad, esta hecho para una imagen de 100x30 llamada bgcaptcha.gif que teneis que crear vosotros
Estos scripts son para principiantes como yo
Empecemos:
Archivo recuperar.php

Código PHP:
procesa los datos eviados por POST de un formulario con un campo llamado email

<?php 
//conectamos a la BD
$conexion 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//funcion para quitar caracteres no permitidos
{
    
$nopermitidos = array("'",'\\','<','>',"\"",";","$","%","&","/","|","{","}","[","]","+","#");
    
$mensaje str_replace($nopermitidos""$mensaje);
    return 
$mensaje;
}

function 
mysql_escape($cadena) {         //funcion pasada por okram para limpiar campos escritos por usuarios
    
if(get_magic_quotes_gpc() != 0) {     //y aplicar mysql_real_escape_string a las variables y stripslashes si la magic cuotes estan activadas
        
$cadena stripslashes($cadena);
    }
    return 
mysql_real_escape_string($cadena);
}  
$email quitar($_POST ['email']);
 
$_SESSION['email'] = $email//guardamos email en una variable de session para recuperarlo en el siguiente form

if(isset($_POST['email']) ) {  //comprovamos que el campo email trae algun valor

         
$query   "SELECT * FROM usuarios WHERE  email='$email'";  //seleccionamos la informacion de la BD correspondiente al email del user
         
$result mysql_query($query $conexion) or die ( mysql_error() );
            while (
$row   mysql_fetch_array($result)){ 
        
    
                      if (isset(
$row['password'])){  //compruebo que exista el password del email enviado


                
$_SESSION['username'] = $row['usuario'];//guardamos el usuario en una variable de sesion
                //para no tener problemas con header uso el siguiente script de java para redirigir
            
?>
            <SCRIPT LANGUAGE="javascript">
            location.href = "recuperar_2.php";
            </SCRIPT>
            <?     
    
}else{
        
        echo 
"El email no esta registrado en nuestra base de datos.";
          
         }}}
          
?>

Última edición por jaronu; 25/03/2008 a las 19:03