Foros del Web » Programando para Internet » PHP »

Enviar password perdido via email con PHP

Estas en el tema de Enviar password perdido via email con PHP en el foro de PHP en Foros del Web. Hola estoy intentando hacer lo siguiente: tengo un formulario donde el usuario coloca su dirección de mail y luego yo busco en la base de ...
  #1 (permalink)  
Antiguo 16/01/2004, 12:13
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Pregunta Enviar password perdido via email con PHP

Hola estoy intentando hacer lo siguiente:

tengo un formulario donde el usuario coloca su dirección de mail y luego yo busco en la base de datos y si está en la base de datos se envia un mail con la información de la cuenta de el (nombres, apellidos, usuario y contraseña). Si no esta el email en la base de datos le imprime en pantalla un mensaje de error.


<?
$email = @$HTTP_GET_VARS["email"];

$link=Conectarse(); //me conecto a mi bd
$result=mysql_query("select nombres, apellidos, correo_e, usuario, contrasena from personas WHERE correo_e = '$email'",$link);

while($row = mysql_fetch_array($result)) {


If ($correo_e==$email) {

//envio mail.
$denombre="prueba";
$deemail="prueba@prueba";
$sfrom="prueba@prueba"; //cuenta que envia
$sBCC="prueba@prueba"; //me envio una copia oculta
$sdestinatario="$correo_e"; //cuenta destino
$ssubject="Datos de su cuenta en el Sistema"; //subject
$shtml="aqui va el mensaje";
$encabezados = "MIME-Version: 1.0\n";
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
$encabezados .= "From: $denombre <$deemail>\n";
$encabezados .= "X-Sender: <$sfrom>\n";
$encabezados .= "BCC: <$sBCC>\n";
$encabezados .= "X-Mailer: PHP\n";
$encabezados .= "X-Priority: 1\n";
$encabezados .= "Return-Path: <$sfrom>\n";
mail($sdestinatario,$ssubject,$shtml,$encabezados) ;
echo "Su login y contrase&ntilde;a ha sido enviada con &eacute;xito a la direcci&oacute;n de correo: $email";
}
else
{
echo "No se encontró ningún email con: $email. Reintente de nuevo!";
}
}
mysql_free_result($result);
mysql_close($link);
?>


creo que estoy haciendo mal la comprobación del email buscado con el que esta la base de datos porque actualmente me da el resultado de que no se encontro nada.

si me pueden ayudar con este error...



Última edición por andinistas; 16/01/2004 a las 12:15
  #2 (permalink)  
Antiguo 16/01/2004, 13:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tu condicional WHERE de tu consulta SQL que estás haciendo . .ya tiene la opción de "obtener sólo los e-mails que coninciden con lo que usas" .. Por ende . .ese otro "if":

If ($correo_e==$email) {

sobra .. Ademas de que sobra . .si haces $row=mysql_fetch_array .. tus campos del registro actual están en un array .. en ese que se crea:

$row['correo_e']

no en $correo_e

Por lo demás .. cuando quieres hacer una consulta tipo "que cumpla tal condición" y sabes que sólo vas a obtener un resultado o ninguno (se supone que ese e-mail es único?) .. Puedes eliminar ese bucle while() y usar simplemente $row=msyql_fetch_array($result) o mejor todavía mysql_fetch_row() ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 16/01/2004, 15:45
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 21 años, 2 meses
Puntos: 1
trata asi haber si te funciona:
suponiendo que tienes un formulario como este

Código PHP:
$email $_POST['email'];

<
form action="enviar_datos.php\" method=\"post\" >
Por favor inserte su e-mail:<br>
 <input type=\"text\" name=\"email\"><br>
<input type=\"submit\" value=\"Enviar\" name=\"go\">
</form> 
Bueno ahora creamos el archivo enviar_datos.php
y haces el procesamiento

Código PHP:
<?php
//nos conectamos a la bse de datos
include "config.php";

   if (
$go)
   
    
// Seleccionamos el email de la base de datos para verificar
    
$result = @mysql_query("SELECT email,password FROM tu_tabla WHERE email='$email'");
    if (!
$result) {
      echo(
"<p>Error al seleccionar tabla: " mysql_error() . "</p>");
      exit();
    }
    
//Chekeamos si existe el email
 
$sql_check_num mysql_num_rows($result);
    if(
$sql_check_num == 0){
    
    
//si no te aperce el email del que puso  ej: $email prueba con ".$_POST['email']."
        
echo "<table width='467'><tr><td><font color=ff0000 face=verdana>El e-mail <b >$email</b> no fue encontrado en nuestra base de datos</font><br />
        <center>
<p>

<form action=\"enviar_datos.php\" method=\"post\">
Intente de nuevo: <input type=\"text\" name=\"email\">
<input type=\"submit\" value=\"Enviar\" name=\"go\">
</form>
</p></center></td><tr></table>"
;
        exit();
    }
    
// Si va todo bien sacamos todo de la base de datos
    
while ( $row mysql_fetch_array($result) ) {
      
$email $row["email"];
      
$password $row ["password"];
 
    }
  
    
// creamos el email 
   
  
$mensaje "Su password para modificar  en   tu_sitio.com es: \n $password no lo vuelvas a perder";
$email_webmaster "webmaster@tu_dominio.com";
$asunto "Su contraseña para bla bla bla";

mail($email,$asunto,$mensaje,"FROM: $email_webmaster");

//le decimos al usuario que fue enviado su password 
//y que vaya rrapido a revisar su correo electronico

echo  ("<table width='467'><tr><td>tu password ha sido enviado al siguiente correo: $email <br>
    
    por favor dirigirse a <a href='login.php'>sector miembros para ingresar </a>
 </td><tr></table>"
);

?>
bueno nose si te funcionara
saludos
  #4 (permalink)  
Antiguo 16/01/2004, 17:19
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
Funciono!

Ok amigos gracias por su ayuda, logré resolver el problema


aqui esta el codigo version friendly para que lo puedan entender los que necesitan del tema.

Código PHP:
<?php
include("include/head.inc");

function 
Conectarse() 

   if (!(
$link=mysql_connect("localhost","usuario","password"))) 
   { 
      echo 
"Error conectando a la base de datos."
      exit(); 
   } 
   if (!
mysql_select_db("mi_base",$link)) 
   { 
      echo 
"Error seleccionando la base de datos."
      exit(); 
   } 
   return 
$link


?>
<p>
<table width="80%"  border="0" align="center">
    <tr>
      <td colspan="2">
<?
$email 
= @$HTTP_GET_VARS["email"];
$link=Conectarse(); 

$result=mysql_query("select nombres, apellidos, correo, usuario, contrasena from personas WHERE correo = '$email'",$link);

if (!
$result) {
      echo(
"<p>Error al seleccionar tabla: " mysql_error() . "</p>");
      exit();
    }

//Chekeamos si existe el email
$sql_check_num mysql_num_rows($result);
if(
$sql_check_num == 0){
    
echo 
"<table width='467'><tr><td><font color=ff0000 face=verdana>El e-mail <b >$email</b> no fue encontrado en nuestra base de datos</font></br><center></table><p>";
?>

<form action="lostpassword.php" method="get" name="datos" id="datos">
  <table width="50%"  border="0" align="center">
    <tr>
      <td colspan="2" class="Texto">A continuaci&oacute;n escriba su direcci&oacute;n de correo electr&oacute;nico a la cual llegar&aacute; su login y password de nuevo. </td>
    </tr>
    <tr>
      <td width="10%">&nbsp;</td>
      <td width="90%">&nbsp;</td>
    </tr>
    <tr>
      <td class="Texto">Email:</td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Enviar"></td>
    </tr>
  </table>
</form>
<?
exit();
}

// Si va todo bien sacamos todo de la base de datos
    
while ( $row mysql_fetch_array($result) ) {
      
$correo $row["correo"];
      
$contrasena $row ["contrasena"];
      
$nombres $row ["nombres"];
      
$apellidos $row ["apellidos"];
      
$usuario $row ["usuario"];
}

// creamos el email 
$denombre="Administrador del Sistema";
$deemail="[email protected]";
$sfrom="[email protected]"//cuenta que envia
$sBCC="[email protected]"//me envio una copia oculta
$sdestinatario="$correo"//cuenta destino
$ssubject="Datos de su cuenta en el Sistema"//subject
$shtml="Estimado $nombres $apellidos la presente es para comunicarle su Login y Password para ingresar al Sistema después de haber extraviado el método de acceso:<br><p>Ud esta registrado en nuestro sistema con los siguientes datos:<p>Nombres: $nombres<br>Apellidos: $apellidos<br>  Email: $correo</p><p>El login y password para entrar correctamente al sistema son los siguientes:<p>Login: $usuario<br>Password: $contrasena<br></p><p>Recuerde guardar este correo en un lugar seguro dentro de sus archivos personales.</p><p>Para ingresar al Sistema lo puede hacer por los momentos en:</p><p><a href='http://www.sistema.com'>[url]http://www.sistema.com[/url]</a></p>Atte:<br></p><p>Andinistas<br><a href='mailto:[email protected]'>[email protected]</a><br>Webmaster del Sistema</p>";
$encabezados  "MIME-Version: 1.0\n";
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
$encabezados .= "From: $denombre <$deemail>\n";
$encabezados .= "X-Sender: <$sfrom>\n";
$encabezados .= "BCC: <$sBCC>\n";
$encabezados .= "X-Mailer: PHP\n";
$encabezados .= "X-Priority: 1\n"
$encabezados .= "Return-Path: <$sfrom>\n";
mail($sdestinatario,$ssubject,$shtml,$encabezados);

//le decimos al usuario que fue enviado su password 
//y que vaya rapido a revisar su correo electronico

echo  ("<table width='467'><tr><td class='texto'>El Login y password de tu cuenta ha sido enviado al siguiente correo: $email</a></td><tr></table>");

?>
<p><br><p><br><p><br><p><center><a href='javascript:window.close();'><IMG SRC='images/cerrar.gif' BORDER='0' ALT='CERRAR'></a></center><p></table>
<?
include("include/pie.php");
?>

Última edición por andinistas; 16/01/2004 a las 17:22
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:13.