Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] recuperar contraseña

Estas en el tema de recuperar contraseña en el foro de PHP en Foros del Web. Estoy implementado un formulario de registro y login en un servidor gratuito. Todo funciona bien salvo que la opcion de recuperar contraseña no llega al ...
  #1 (permalink)  
Antiguo 09/05/2014, 00:04
Avatar de priamo  
Fecha de Ingreso: enero-2011
Ubicación: Valencia
Mensajes: 78
Antigüedad: 13 años, 3 meses
Puntos: 0
recuperar contraseña

Estoy implementado un formulario de registro y login en un servidor gratuito. Todo funciona bien salvo que la opcion de recuperar contraseña no llega al correo del usuario (el correo con la la nueva contraseña) sin embargo el sistema dice que se ha enviado correctamente.
Os pongo el archivo de recuperar_contasena.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 = "PRIAMO"; // 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>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>.";
$cabeceras = "From: ".$remite_nombre." <".$remite_email.">\r\n";
$cabeceras = $cabeceras."Mime-Version: 1.0\n";
$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="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
?>

Un saludo y gracias por la ayuda
  #2 (permalink)  
Antiguo 09/05/2014, 00:23
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: recuperar contraseña

Hay un error aquí:

Código PHP:
Ver original
  1. $cabeceras = "From: ".$remite_nombre." <".$remite_email.">\r\n";
  2. $cabeceras = $cabeceras."Mime-Version: 1.0\n";
  3. $cabeceras = $cabeceras."Content-Type: text/html";

Sustituyelo por:

Código PHP:
Ver original
  1. $cabeceras = "From: ".$remite_nombre." <".$remite_email.">\r\n";
  2. $cabeceras .= "Mime-Version: 1.0\n";
  3. $cabeceras .= "Content-Type: text/html";

PD: Por favor utiliza el correspondiente HIGHLIGHT ya que si no el código es malo para leer.

Saludos.
  #3 (permalink)  
Antiguo 09/05/2014, 00:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: recuperar contraseña

¿De casualidad estás utilizando un servidor de correo electrónico? Te pregunto esto porque sin uno, no podrás enviar mensajes de correo electrónico. Y por favor, la próxima vez que coloques código, utiliza el highlight respectivo.

MaNuX0218, esto:

Código PHP:
Ver original
  1. $cabeceras = $cabeceras."Mime-Version: 1.0\n";
  2. $cabeceras = $cabeceras."Content-Type: text/html";

Y esto:

Código PHP:
Ver original
  1. $cabeceras .= "Mime-Version: 1.0\n";
  2. $cabeceras .= "Content-Type: text/html";

Realizan exactamente lo mismo. En el manual oficial hay un apartado en donde explican las maneras de concatenar en PHP.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 09/05/2014, 00:57
Avatar de priamo  
Fecha de Ingreso: enero-2011
Ubicación: Valencia
Mensajes: 78
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: recuperar contraseña

Muchas gracias por la rapidez y la solucion. Todo perfecto.
Por cierto desconozco la operativa para colocar los codigos en HIGHLIGHT. Podeis indicarme como?
De nuevo Gracias
  #5 (permalink)  
Antiguo 09/05/2014, 01:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: recuperar contraseña

Es el combo o select (como desees llamarle) que está justo al final de la barra de herramientas de edición.

Seleccionas el highlight que corresponda al código que vas a colocar y entre las etiquetas que aparecerán, colocas el código o bien primero pegas el código, lo seleccionas (todo) y luego elijes el highlight.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 09/05/2014 a las 01:20 Razón: Borrado de enlace roto
  #6 (permalink)  
Antiguo 09/05/2014, 01:15
Avatar de priamo  
Fecha de Ingreso: enero-2011
Ubicación: Valencia
Mensajes: 78
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: recuperar contraseña

Entendido.
Saludos

Etiquetas: contraseña, formulario, html, mysql, registro, select, sql, usuarios
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




La zona horaria es GMT -6. Ahora son las 15:41.