Foros del Web » Programando para Internet » PHP »

APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Estas en el tema de APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/03/2008, 11:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 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
  #2 (permalink)  
Antiguo 25/03/2008, 11:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

ahora ya lo hemos pasado al segundo formulario: recuperar_2.php

Código PHP:
procesa los datos enviados por POST desde un form con tres campos, password,  password2 y tmptxt_seg
<?php
session_start
(); //abrimos la sesion para poder despues pasar variables de una pagina a otra

//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','xxxxxx','xxxxx')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) {
    if(
get_magic_quotes_gpc() != 0) {
        
$cadena stripslashes($cadena);
    }
    return 
mysql_real_escape_string($cadena);
}  

if (isset(
$_POST["password"])) {
    
    
$password quitar($_POST["password"]); //variable que viene del campo del form pasword
    
$password2 quitar($_POST["password2"]);//variable que viene del campo del form pasword2
                
$password mysql_escape($password);  //aplico la funcion mysql_escape
                
$password2 mysql_escape($password2);

    
$password md5($password); // codificamos los password con md5
    
$password2 md5($password2);
    
$email $_SESSION['email']; // recogemos la variable email y username que guardamos en la sesion en el script anterior
                
$username $_SESSION['username']; 


    
    
    
// Hay campos en blanco
    
if($password==NULL|$password2==NULL) {
        echo 
"un campo está vacio.";
    
        }else{
                              
// si coiciden los codigos de seguridad
            
if (quitar($_SESSION['tmptxt_seg']) !== quitar($_POST['tmptxt_seg'])) { 
                    echo 
"Introdujo mal el codigo de seguridad.";
                
        } else { 
        
    
        
// ¿Coinciden las contraseñas?
        
if($password!=$password2) {
            echo 
"Las contraseñas no coinciden";
            
formRegistro();
        }else{
        
        
        
$query "UPDATE usuarios
            SET password = '$password' WHERE   usuario = '$username' OR email ='$email' " 
;
                
mysql_query($query) or die(mysql_error());    
                
            
//obtengo los datos del usuario para mandar el email    
            
$result "SELECT * FROM usuarios WHERE password = '$password'";
                    
             
$result mysql_query($result) or die ( mysql_error() );        
        
            
$row mysql_fetch_array($result); 
                
        echo 
"La activacion de su nuevo password  tuvo exito.";
        
            

    
         

                
                          
// Datos del email

$nombre_origen    "Lo que sea";
$email_origen     "[email protected]";
$email_copia      "[email protected]";
$email_ocultos    "[email protected]";
//$email_destino    = "".$row['email']."";  
$email_destino    "[email protected]";  //cambiar esta linea por la de encima cuando se termine la aplicacion para pruebas pon tu email


$asunto           "Activacion de nueca contraseña, guarde este email.";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>     Estos son sus datos  '
.$row['usuario'].'</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '
.$row['usuario'].'</strong><br><br><br>
          
          <strong>SU EMAIL : </strong>'
.$row['email'].'</strong><br><br><br>
          <strong>REACTIVO SU NUEVA CONTRASEÑA SIN NINGUN INCIDENTE.</strong><br><br>
          <strong>GRACIAS POR CONFIAR EN CEVIT.</strong><br>
          <strong>PRONTO ACTUALIZAREMOS CONTENIDOS, ESTATE ATENTA/O.</strong><br>
    </div>
    </td>
  </tr>
</table>'
;

                


$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
$headers .= "X-Sender: $email_origen \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//*****************************************************************//
 
if($formato == "html")
 { 
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { 
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }

if (@
mail($email_destino$asunto$mensaje$headers)) 
    { } 
     
    }
    }
    }
    }



?>
Y ahora el archivo seguridad.php que ha de estar en el mismo directorio que los forms




Código PHP:
 <?php 



function randomText($length) {   //FUNCION PARA CREAR UNA CLAVE ALEATORIA
    
$pattern "123456789PIUYTREWQASDFGHJKLMNBVCXZ123456789PLMK1IJNBHUYGVC123456789FTRDXZSEWAQWSDERFTGYHUJ123569876543ERDFREDESWQASWQASDGHGTY"
    for(
$i=0;$i<$length;$i++) { 
      
$key .= $pattern{rand(0,35)}; 
    } 
    return 
$key


$_SESSION['tmptxt_seg'] = randomText(5); //aqui guardo el numero que se escribira en la imagen en variable de sesion para su us en la confirmacion
$captcha_seg imagecreatefromgif("../carpeta/carpeta/bgcaptcha.gif"); //obtenemos la imagen de fondo
$colText imagecolorallocate($captcha_seg000); 
imagestring($captcha_seg5104$_SESSION['tmptxt_seg'], $colText); 

header("Content-type: image/gif"); 
imagegif($captcha_seg); 
?>
Espero vuestros comentarios para mejorar los scripts
Un saludo a todos.

Última edición por jaronu; 25/03/2008 a las 19:05
  #3 (permalink)  
Antiguo 25/03/2008, 12:23
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 9 meses
Puntos: 101
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Muy buen aporte, gracias.
Salu2
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 25/03/2008, 13:11
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 1 mes
Puntos: 60
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

La intención esta bien, pero sinceramente creo que deberiamos de mejorar la manera de hacer codigo, buscar la modularización y la separación de codigo, creo que podrias tratar de esforzarte más y crear algo más util , a que me refiero con mas util, a dejar de crear scripts asi y tal vez buscar una verdadera función, o al menos una clase para empezar a producir codigo más elegante y mas sustentable a largo plazo, por ejemplo tratar de escribir una clase.. que contenga los atributos por cada objeto y ceder la presentación al html pero no enredando los codigos.. asi llegar a crear paginas mas escablables.. en fin es mi comentario
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #5 (permalink)  
Antiguo 25/03/2008, 13:22
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Ok, intentaremos mejorar

Última edición por jaronu; 27/03/2008 a las 11:16
  #6 (permalink)  
Antiguo 25/03/2008, 14:03
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 1 mes
Puntos: 60
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Si, y admiro tu disposición a ayudar si no fuera por tanta gente como tú no tendriamos (firefox, linux, winamp, etc etc..) pero tambien seria bueno que empezaramos a pensar de una manera más robusta, algo asi como entender un lenguaje y empezar a usarlo de una manera mas limpia, por que creeme que despues darle mantenimiento a sistemas que se hacen grande resulta muy muy tedioso, :D te lo digo por que despues de que empiezas por el mal camino.. resulta dificil cambiar de paradigma , y tu como dices que estas empezando se te haria mas facil hacer las cosas mejor desde un principio
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #7 (permalink)  
Antiguo 25/03/2008, 14:07
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Ok, intentaremos mejorar

Unsaludo

Última edición por jaronu; 27/03/2008 a las 11:17
  #8 (permalink)  
Antiguo 25/03/2008, 14:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Gracias por el aporte jaronu. Ya son muchos los que has publicado aquí.

Ahora, coincido en algunos puntos con _ssx. Yo te recomendaría comentar más los códigos que publicas, de ser posible linea a linea. Si buscas un fin didáctico lo peor que puedes hacer es incitar al copy&paste. La sugerencia de emplear clases es también válida. Nadie te obliga a aprenderlas, pero, como parte de tu aprendizaje podrías empezar investigando e intentando algo con ellas. Tienes varias ventajas sobre el código PHP suelto, más ahora que desde PHP5 han surgido cada vez más proyectos que se aprovechan de sus beneficios.

Por último, he seguido todos tus aportes, y te sugeriría evitar incluir código HTML tan "prolijo". Es mejor que incluyas una explicación sobre variables (o propiedades, cuando empieces a usar clases) de las que dispone el usuario para incluir contenidos. Al poner código HTML tan mezclado con el código PHP lo único que logras es hacer aún más confuso tu código. Es de admirar tu interés por compartir lo que sabes, y tratar de hacer que los demás también aprendan

Saludos,
  #9 (permalink)  
Antiguo 25/03/2008, 15:21
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Ya quite el html, he intente mejorar la explicacion.

Un saludo, a todos

Última edición por jaronu; 27/03/2008 a las 11:18
  #10 (permalink)  
Antiguo 25/03/2008, 18:46
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Hee jaronu no me dejas terminar lo mio que ya me tiras una solucion completa a un problema ¬¬ jaja , Muy bueno compa , ahora lo pruebo y cualquier cosa aviso.

Salu2
  #11 (permalink)  
Antiguo 04/04/2008, 14:30
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 6 meses
Puntos: 36
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Hola jaronu, me parece que el sistema tiene un problema, ya que si uno sabe la dirección de email de algún usuario registrado podría cambiarle la contraseña. Te recomendaría que luego de comprobar si existe el email, envies un email al usuario con un link único (puede ser por ejemplo la contraseña codificada y con el nombre de usuario, ejemplo: http://dominio.com/recuperar.php?id=8weo34324aaewkoeqwjewoa&usuario=j aronu . El id es la contraseña codificada), luego en la página a donde nos lleva ese link del email, habria que verificar si la contraseña es correcta con el usuario, y si es así permitir que cambie la contraseña y luego haces el update a la bd.
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #12 (permalink)  
Antiguo 04/05/2008, 18:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Si, escierto, tienes toda la razon, y tambien pienso que se deberia de hacer como dices, aun que es mas pesado, pero mas seguro, ahora voy un poco liado, pero eso se ha de cambiar como dices.

Un saludo y gracias por el comentario y el aviso hgp147
  #13 (permalink)  
Antiguo 17/07/2008, 08:43
Avatar de aguchito  
Fecha de Ingreso: junio-2008
Mensajes: 9
Antigüedad: 16 años
Puntos: 0
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Por favor amigo necesito hacer un sistema de activacion de cuentas via email parami web agradecere mucho tu ayuda gracias ....bye


Cita:
Iniciado por jaronu Ver Mensaje
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:



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.";
          
         }}}
          
?>
  #14 (permalink)  
Antiguo 17/07/2008, 10:21
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 1 mes
Puntos: 49
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Que tal aguchito, mira este link creo que te puede servir

Activación de cuentas de usuario via e-mail


Saludos.
  #15 (permalink)  
Antiguo 19/10/2008, 16:22
(Desactivado)
 
Fecha de Ingreso: octubre-2008
Ubicación: Lima
Mensajes: 190
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Re: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Cita:
Iniciado por jaronu Ver Mensaje
ahora ya lo hemos pasado al segundo formulario: recuperar_2.php

Código PHP:
procesa los datos enviados por POST desde un form con tres campos, password,  password2 y tmptxt_seg
<?php
session_start
(); //abrimos la sesion para poder despues pasar variables de una pagina a otra

//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','xxxxxx','xxxxx')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) {
    if(
get_magic_quotes_gpc() != 0) {
        
$cadena stripslashes($cadena);
    }
    return 
mysql_real_escape_string($cadena);
}  

if (isset(
$_POST["password"])) {
    
    
$password quitar($_POST["password"]); //variable que viene del campo del form pasword
    
$password2 quitar($_POST["password2"]);//variable que viene del campo del form pasword2
                
$password mysql_escape($password);  //aplico la funcion mysql_escape
                
$password2 mysql_escape($password2);

    
$password md5($password); // codificamos los password con md5
    
$password2 md5($password2);
    
$email $_SESSION['email']; // recogemos la variable email y username que guardamos en la sesion en el script anterior
                
$username $_SESSION['username']; 


    
    
    
// Hay campos en blanco
    
if($password==NULL|$password2==NULL) {
        echo 
"un campo está vacio.";
    
        }else{
                              
// si coiciden los codigos de seguridad
            
if (quitar($_SESSION['tmptxt_seg']) !== quitar($_POST['tmptxt_seg'])) { 
                    echo 
"Introdujo mal el codigo de seguridad.";
                
        } else { 
        
    
        
// ¿Coinciden las contraseñas?
        
if($password!=$password2) {
            echo 
"Las contraseñas no coinciden";
            
formRegistro();
        }else{
        
        
        
$query "UPDATE usuarios
            SET password = '$password' WHERE   usuario = '$username' OR email ='$email' " 
;
                
mysql_query($query) or die(mysql_error());    
                
            
//obtengo los datos del usuario para mandar el email    
            
$result "SELECT * FROM usuarios WHERE password = '$password'";
                    
             
$result mysql_query($result) or die ( mysql_error() );        
        
            
$row mysql_fetch_array($result); 
                
        echo 
"La activacion de su nuevo password  tuvo exito.";
        
            

    
         

                
                          
// Datos del email

$nombre_origen    "Lo que sea";
$email_origen     "[email protected]";
$email_copia      "[email protected]";
$email_ocultos    "[email protected]";
//$email_destino    = "".$row['email']."";  
$email_destino    "[email protected]";  //cambiar esta linea por la de encima cuando se termine la aplicacion para pruebas pon tu email


$asunto           "Activacion de nueca contraseña, guarde este email.";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>     Estos son sus datos  '
.$row['usuario'].'</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '
.$row['usuario'].'</strong><br><br><br>
          
          <strong>SU EMAIL : </strong>'
.$row['email'].'</strong><br><br><br>
          <strong>REACTIVO SU NUEVA CONTRASEÑA SIN NINGUN INCIDENTE.</strong><br><br>
          <strong>GRACIAS POR CONFIAR EN CEVIT.</strong><br>
          <strong>PRONTO ACTUALIZAREMOS CONTENIDOS, ESTATE ATENTA/O.</strong><br>
    </div>
    </td>
  </tr>
</table>'
;

                


$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";
$headers .= "X-Sender: $email_origen \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//*****************************************************************//
 
if($formato == "html")
 { 
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { 
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }

if (@
mail($email_destino$asunto$mensaje$headers)) 
    { } 
     
    }
    }
    }
    }



?>
Y ahora el archivo seguridad.php que ha de estar en el mismo directorio que los forms




Código PHP:
 <?php 



function randomText($length) {   //FUNCION PARA CREAR UNA CLAVE ALEATORIA
    
$pattern "123456789PIUYTREWQASDFGHJKLMNBVCXZ123456789PLMK1IJNBHUYGVC123456789FTRDXZSEWAQWSDERFTGYHUJ123569876543ERDFREDESWQASWQASDGHGTY"
    for(
$i=0;$i<$length;$i++) { 
      
$key .= $pattern{rand(0,35)}; 
    } 
    return 
$key


$_SESSION['tmptxt_seg'] = randomText(5); //aqui guardo el numero que se escribira en la imagen en variable de sesion para su us en la confirmacion
$captcha_seg imagecreatefromgif("../carpeta/carpeta/bgcaptcha.gif"); //obtenemos la imagen de fondo
$colText imagecolorallocate($captcha_seg000); 
imagestring($captcha_seg5104$_SESSION['tmptxt_seg'], $colText); 

header("Content-type: image/gif"); 
imagegif($captcha_seg); 
?>
Espero vuestros comentarios para mejorar los scripts
Un saludo a todos.



Una pregunta, donde esta el formulario??? :s
  #16 (permalink)  
Antiguo 19/10/2008, 16:25
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 4 meses
Puntos: 52
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

solo puse el codigo PHP

un formulario es sencillo de hacer con conocimientos minimos de HTML o con dreamweaver
solo esta atento con los nombres de los campos del form coincidan con las variables.

este sistema es para implementar con a un sistema de autentificacion que ya tengas hecho y orientarte a que hagas el tuyo con tus variables

a demas lo menciono al principio del script

procesa los datos enviados por POST desde un form con tres campos, password, password2 y tmptxt_seg

Un saludo y suerte
  #17 (permalink)  
Antiguo 07/05/2009, 08:31
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Hola amigos, he estado viendo este aporte y me surge una duda.... Haciendolo tal y como se indica aqui realmente podria yo cambiar la contraseña de cualquier usuario sabiendo tan solo su email y acceder a su cuenta, ¿no es verdad?
  #18 (permalink)  
Antiguo 23/12/2009, 07:24
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

kieroo saber como hacer espacios en una contraseña?
  #19 (permalink)  
Antiguo 23/12/2009, 07:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Cita:
Iniciado por jaronu Ver Mensaje
solo puse el codigo PHP

un formulario es sencillo de hacer con conocimientos minimos de HTML o con dreamweaver
solo esta atento con los nombres de los campos del form coincidan con las variables.

este sistema es para implementar con a un sistema de autentificacion que ya tengas hecho y orientarte a que hagas el tuyo con tus variables

a demas lo menciono al principio del script

procesa los datos enviados por POST desde un form con tres campos, password, password2 y tmptxt_seg

Un saludo y suerte
che! pah! kieroo saber como hacer espacios en una contraseña?
  #20 (permalink)  
Antiguo 26/10/2011, 11:55
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

los html podrian ser asi

Código HTML:
<html>
<head>cual es su mail</head>
<p></p>
<body>
	<form name="form_a" action="recuperar.php" />
			<p></p>
			<input type="text" name="email" id="email" size="60"/>
			<p></p>
			<input type="submit" name="submit" id="btn" value="Ir">
	</form>
</body>
</html> 
y el otro

Código HTML:
<html>
<head>recuperar clave</head>
<body >
	<form name="form_a" action="recuperar_2.php" />
		<!--<table border="0" align="center">-->
			<p></p>password anterior
			<input type="text" name="password" id="password" />
			<br>nuevo password
			<input type="text" name="password2" id="password2" />
			<br>
			<img src="seguridad.php" vspace="3" class="Estilo24" /> <input type="text" name="tmptxt_seg " id="tmptxt_seg "  />
			<p></p>
			<input type="submit" name="btn" id="btn" value="Enviarte"/>
		<!--</table>-->
	</form>
<!---->
</body>
</html> 
  #21 (permalink)  
Antiguo 24/02/2012, 14:55
 
Fecha de Ingreso: diciembre-2011
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: APORTE: Sistema para recuperar la contraseña de un usuario olvidadizo.

Me sale el siguiente error en
Parse error: syntax error, unexpected $end in C:\wamp\www\pruebarecordar\recuperar.php on line 47
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 8 personas




La zona horaria es GMT -6. Ahora son las 02:22.