Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/10/2012, 03:06
cheterporras2
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Cambiar contraseña usuario php

Cuasatar y Eits, muchísimas gracias por contestar. Es muy gracioso, seguí buscando opciones para la recuperación de contraseña y precisamente me encontré con el enlace que me has dado Cuasatar, antes de que me lo enviaras Eso está bien, quiere decir que voy por el buen camino. Eits, ya hice lo que me comentaste en el comentario, pero ahí me quedaba, no sé si sería por el cansancio, pero me atranqué y ya no podía continuar. De todas formas, en principio, seguiré el enlace de cuasatar, que me ha resultado más entendible, aunque me he encontrado con un pequeño problema.
El mensaje se envía bien, con la nueva contraseña. Los caracteres en el asunto, antes de abrir el correo, aparecen correctos pero, una vez abierto, dichos caracteres (por ejemplo la ñ o los acentos) son modificados por estos símbolos: � . He probado diferentes maneras, he usado utf8_decode, pero no consigo que se quiten estos símbolos. Es un pequeño inconveniente, pero me mosquea. ¿Cómo puedo modificarlo para que no aparezca � en el asunto al abrir el email? Gracias.
Código PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <?php
    
include("conexion.php"); $link Conectarse (); // 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'])) {
            echo 
"No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
$usuario mysql_real_escape_string($_POST['usuario']);
            
$usuario trim($usuario);
            
$sql mysql_query("SELECT usuario, contrasenna, email FROM usuarios WHERE usuario='".$usuario."'");
            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 $row['usuario'];
                
$contrasenna $nueva_clave// la nueva contraseña que se enviará por correo al usuario
                
$usuario_clave2 md5($contrasenna); // encriptamos la nueva contraseña para guardarla en la BD
                
$email $row['email'];
                
// actualizamos los datos (contraseña) del usuario que solicitó su contraseña
                
mysql_query("UPDATE usuarios SET contrasenna='".$usuario_clave2."' WHERE usuario='".$usuario."'");
                
// Enviamos por email la nueva contraseña
               
                
$asunto utf8_decode("Recuperación de contraseña"); // Asunto (se puede cambiar)
                
$mensaje "Se ha generado una nueva contraseña para el usuario <strong>".$usuario."</strong>. <br>La nueva contraseña es: <strong>".$contrasenna."</strong>";
                 
$cabeceras "From: tuweb.com \r\n";
                 
$cabeceras .= "Reply-To: tuweb.com \r\n";
                 
$cabeceras $cabeceras."Content-Type: text/html; charset=utf-8\r\n"
                
$enviar_email mail($email,$asunto,$mensaje,$cabeceras);
                if(
$enviar_email) {
                    echo 
"La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario.".";
                }else {
                    echo 
"No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>";
                }
            }else {
                echo 
"El usuario <strong>".$usuario."</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" id="usuario" /><br />
        <input type="submit" name="enviar" value="Enviar" />
</form>
<?php
    
}
?>