Comunidad de diseño web y desarrollo en internet online

mysql - php

Citar            
MensajeEscrito el 25 Ene 2012 03:15 pm
Hola Que tal a todos quería hacerles una consulta como puedo enviar la contraseña de un usuario automática. Me refiero a que cunado el usuario se halla olvidado la contraseña utilice el sistema de recuperación de contraseña haciendo un click en un link que lo lleve a un formulario.
Los campos de la base de datos son los siquientes


id usuario - Nombre_usuario - Nombre - Apellido - DNI- E_mail - Password

Desde ya muchas gracias.

Por monchicachet

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Ene 2012 04:40 pm
Pues pones un formulario en el que escriba su email. Luego contrastas que ese email lo tienes en tu bbdd y en caso que lo tengas, le reenvias la contraseña.

Por One

Claber

1488 de clabLevel

5 tutoriales

Genero:Masculino  

Programador Web

chrome
Citar            
MensajeEscrito el 25 Ene 2012 11:15 pm
Podria ser asi

Código PHP :

 select nombre,email,password from usuarios where `email` = '$email';


Código PHP :

<?php 
    include('acceso_db.php'); // incluímos los datos de acceso a la BD 
    if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario 
        if(empty($_POST['usuario_nombre'])) { 
            echo "No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>"; 
        }else { 
            $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']); 
            $usuario_nombre = trim($usuario_nombre); 
            $sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); 
            if(mysql_num_rows($sql)) { 
                $row = mysql_fetch_assoc($sql); 
                $num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña 
                $nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria 
                $usuario_nombre = $row['usuario_nombre']; 
                $usuario_clave = $nueva_clave; // la nueva contraseña que se enviará por correo al usuario 
                $usuario_clave2 = md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD 
                $usuario_email = $row['usuario_email']; 
                // actualizamos los datos (contraseña) del usuario que solicitó su contraseña 
                mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave2."' WHERE usuario_nombre='".$usuario_nombre."'"); 
                // Enviamos por email la nueva contraseña 
                $remite_nombre = ""; // Tu nombre o el de tu página 
                $remite_email = ""; // tu correo 
                $asunto = "Recuperación de contraseña"; // Asunto (se puede cambiar) 
                $mensaje = "Se ha generado una nueva contraseña para el usuario <strong>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>."; 
                $cabeceras = "From: ".$remite_nombre." <".$remite_correo.">rn"; 
                $cabeceras = $cabeceras."Mime-Version: 1.0n"; 
                $cabeceras = $cabeceras."Content-Type: text/html"; 
                $enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras); 
                if($enviar_email) { 
                    echo "La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario_nombre."."; 
                }else { 
                    echo "No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>"; 
                } 
            }else { 
                echo "El usuario <strong>".$usuario_nombre."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>"; 
            } 
        } 
    }else { 
?> 
    <form action="recovery.php" method="post"> 
        <label>Usuario:</label><br /> 
        <input type="text" name="usuario_nombre" /><br /> 
        <input type="submit" name="enviar" value="Enviar" /> 
    </form> 
<?php 
    } 
?>

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ene 2012 05:35 pm
Mucgas Gracias por la respuesta. Te cuento que la contraseña no la tengo Encriptada.
Te cuento como yo lo tengo hecho:

En primer lugar tengo un formulario donde se le solicita el usuario el Nombre de usuario que es una campo único para cada usuario.


<form action="Enviob.php?Nombre_Admin=<?php echo $row_Envia['Nombre_Admin']; ?>" method="get" name="Nombre_Admin" id="Nombre_Admin" onsubmit="MM_validateForm('Nombre_Admin','','R');return document.MM_returnValue">
Escribe tu Nombre de Usuario
<input type="text" name="Nombre_Admin" id="Nombre_Admin" />
<input name="Enviar" type="submit" class="btt" id="Enviar" value="Enviar" />
</form>

una ves que el usuario halla colocado el nombre del usuario lo llevará a enviob.php donde se encargará de procesar todo.

enviob tiene el siguiente código
______________________________________________
<table width="100%" border="0">
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<?php if ($totalRows_Envio_web > 0) { // Show if recordset not empty ?>
<tr align="center">
<td>SE HA RECUPERADO LA CONTRASEÑA</td>
</tr>
<tr align="center">

</tr>
<tr align="center">
<td>Hemos enviado un e-mail a la dirección de correo:<?php echo $row_Envio_web['E_mail']; ?></span>; con el nombre de la contraseña.<a href="Login.php">Login</a></td>

<?php
$para=$row_Recordset1['E_mail'];
$mensaje="hola". $row_Recordset1['nombre'] . "<br> tu nombre de usuario es:". $row_Recordset1['Nombre_Admin']. "<br> y tu password es:".$row_Recordset1['password']."<br> Atentamente, juan";
$asunto="envio de datos";
$empresa="juan";
$miemail="[email protected]";



mail($para,$asunto,$mensaje, "MINE-Version: 1.0\nContent-Type=text/html; charset=utf-8\nFrom: $empresa <$miemail>");
?>


</tr>
<?php } // Show if recordset not empty ?>
<tr>
<td>&nbsp;</td>
</tr>
<?php if ($totalRows_Envio_web == 0) { // Show if recordset empty ?>
<tr>
<td align="center">ERROR</td>
</tr>
<tr>
<td align="center">El usuario instroducido no existe en nuestra Base de Datos... <a href="envio.php>Intentar de Nuevo</a></span></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<?php } // Show if recordset empty ?>
</table>
__________________


Lo que hace este código es lo siguiente, en caso que el usuario introducido no existe o no halla ingresado nada le salta un error diciéndole que el usuario introducido no existe en la base de datos.
Y le proporciona un link de regreso. SI el usuario existe equecuta todo el código php y envia el e-mail, supuestamene. Pero no lo hace no se por que yo lo saque en un tutorial y funciona por que muestra un video.
Bueno si me pueden ayudar les agradecería.

Por monchicachet

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Ene 2012 06:01 pm
entonces el problema es que no manda solo el mail?

puede ser por 2 cosas
1.- function mail() no funciona en tu servidor y podrias tratar con PHPmailer
2.- cabecera no esta interpretando el mail receptor

Código :

mail($para,$asunto,$mensaje, "MINE-Version: 1.0\nContent-Type=text/html; charset=utf-8\nFrom: $empresa <$miemail>"


Código PHP :

// $to = '[email protected]';
$to = " . $row_Recordset1['E_mail'] . " ; 
$subjet = " Recuperar Password";
$message ="
 Hola " . $row_Recordset1['nombre'] . "<br> 
Tus datos de acceso son los siguientes:<br/>
<strong>Usuario</strong> :  " . $row_Recordset1['Nombre_Admin'] . "<br/> 
<strong>Password</strong> : " . $row_Recordset1['password'] . "<br/> 
Atentamente, Juan. 
";
// para enviar  mail en formato HTML
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// headers adicionales
$headers .= 'To: Mary <[email protected]>>' . "\r\n";
$headers .= 'From: Password <[email protected]>' . "\r\n";

// enviamos
mail($to, $subject, $message, $headers);

Por dsalcedo

50 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Ene 2012 01:26 pm
HOla, muchas gracias por responder.

Coloqué el código que me pasaste pero no me hace nada, no se que pasa, puse este código.

---------------------------------------------------------------------------------------------------------------------------
$to = " . $row_Recordset1['E_mail'] . " ; (este lo puse sin espacio por que me marcaba error)

$subjet = " Recuperar Password";

$message ="

Hola " . $row_Recordset1['nombre'] . "<br>

Tus datos de acceso son los siguientes:<br/>

<strong>Usuario</strong> : " . $row_Recordset1['Nombre_Admin'] . "<br/>

<strong>Password</strong> : " . $row_Recordset1['password'] . "<br/>

Atentamente, Juan.

";

// para enviar mail en formato HTML

$headers = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";



// headers adicionales

$headers .= 'To: Mary <[email protected]>>' . "\r\n";

$headers .= 'From: Password <[email protected]>' . "\r\n";



// enviamos

mail($to, $subject, $message, $headers);

Muchas Gracias.

----------------------------------------------------------------------------------------------------------------------------

Por monchicachet

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Feb 2012 09:35 pm
Hola que tal quería hacerles una consulta tengo en siguiente código para recuperación de contraseña pero me salta el siguiente error:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/torresed/public_html/isj/E.PHP on line 102
El usuario no está registrado. Reintentar Cambiando la contraseña:

código
........................................................................................
?php
include('Connections/Con_usuarios.php'); // incluímos los datos de acceso a la BD
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario
if(empty($_POST['Nombre_Admin'])) {
echo "No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$usuario_nombre = mysql_real_escape_string($_POST['Nombre_Admin']);
$Nombre_Admin = trim($Nombre_Admin);
$sql = mysql_query("SELECT Nombre_Admin, Password, E_mail FROM usuarios WHERE Nombre_Admin='".$Nombre_Admin."'");
if(mysql_num_rows($sql)) {
$row = mysql_fetch_assoc($sql);
$num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña
$nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria
$Nombre_Admin = $row['Nombre_Admin'];
$Password = $nueva_clave; // la nueva contraseña que se enviará por correo al usuario
$usuario_clave2 = md5($Password); // encriptamos la nueva contraseña para guardarla en la BD
$E_mail = $row['E_mail'];
// actualizamos los datos (contraseña) del usuario que solicitó su contraseña
mysql_query("UPDATE usuarios SET Password='".$usuario_clave2."' WHERE Nombre_Admin='".$Nombre_Admin."'");
// Enviamos por email la nueva contraseña
$remite_nombre = "juan"; // Tu nombre o el de tu página
$remite_email = "[email protected]"; // tu correo
$asunto = "Recuperación de contraseña"; // Asunto (se puede cambiar)
$mensaje = "Se ha generado una nueva contraseña para el usuario <strong>".$Nombre_Admin."</strong>. La nueva contraseña es: <strong>".$Password."</strong>.";
$cabeceras = "From: ".$remite_nombre." <".$remite_correo.">rn";
$cabeceras = $cabeceras."Mime-Version: 1.0n";
$cabeceras = $cabeceras."Content-Type: text/html";
$enviar_email = mail($Password,$asunto,$mensaje,$cabeceras);
if($enviar_email) {
echo "La nueva contraseña ha sido enviada al email asociado al usuario ".$Nombre_Admin.".";
}else {
echo "No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>";
}
}else {
echo "El usuario <strong>".$Nombre_Admin."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>";
}
}
}else {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Usuario:</label><br />
<input type="text" name="Nombre_Admin" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
?>

.......................................................................................

Espero puedan ayudarme.
Gracias

Por monchicachet

6 de clabLevel



 

chrome

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.