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

Hola!!!!:

Ufff, tengo la cabeza fatal de mirar tantos códigos. A ver si me podéis echar una mano. Quiero que si el usuario se olvida de la contraseña, pueda recuperarla a través de un correo que le envía una dirección url, pero me he quedado ahí. La contraseña original ha sido encriptada por md5.
Código PHP:
 <?php 
//Conexion con la base de datos y el archivo que contiene la funcion email
include("conexion.php"); $link Conectarse ();
//funcion que valida email
include('funcion.php');
    
//Si presionan el boton Enviar, ejecutamos el Script
    
if(isset($_POST['Enviar']))
        {
            
//Validacion por parte del servidor
            
if($_POST['email']!='' && valid_email($_POST['email'])==TRUE)
                {
                    
//Hacemos la consulta en la base de datos
                    
$query "SELECT usuario, email, contrasenna FROM usuarios WHERE email = '".($_POST['email'])."'";
                    
$getEmail mysql_query($query) or die(mysql_error());
                    
$row mysql_fetch_assoc($getEmail);
                    
$hash md5(md5($row['usuario']).md5($row['contrasenna']));
                    
//Componemos el mensaje
                    
$headers "From: animalmeeting.com \r\n";
                    
$headers .= "Reply-To: animalmeeting.com \r\n";
                    
$headers .= "X-Mailer: PHP/" phpversion();
                    
$subject "Peticion de Contraseña desde animalmeeting.com";
                    
$message "Querido " .$row['usuario']. "\r\n";
                    
$message .= "\r\n";
                    
$message "Para recuperar tu contraseña dar click en la url de abajo.
        http://www.tuweb.com/pass.php?id="
.$hash."&email=".$email."";
                   
                    
                    if(
mail($row['email'], $subject$message$headers))
                        {
                        
//Solo establecemos esta variable si el envio fue exitoso
                            
$exito 'La  nueva contrase&ntilde;a fue enviada a su direccion de correo electronico';
                        }
                    else
                        {
                            
$error 'El envio ha fallado, porfavor contacte al administrador sobre este problema';
                        }
                }
            else
                {
                    
$error 'Asegurese de que no ha dejado el campo vacio y que la direccion de correo electronica es una direccion de correo valida';
                }
        }
        
    if(isset(
$exito))
        {
            echo 
$exito;
        }
    else
        {
            echo 
$error;
//Solo mostramos el formulario si tenemos un mensaje de error
    
?>
    <form id="form" name="form" method="post" action="<?=$_SERVER['PHP_SELF']?>">
  <table width="300" border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td width="45">Email:</td>
      <td width="194"><input name="email" type="text" id="email" value="<?php if(isset($_POST['email'])) { echo $_POST['email']; } ?>" size="32" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input name="Enviar" type="submit" id="Enviar" value="Enviar" /></td>
    </tr>
  </table>
</form>
<?php ?>
Ya en pass.php, no sé exactamente cómo lo tendría que hacer.

Imagino que un formulario que permita cambiar la contraseña mediante UPDATE, pero todo lo que he visto era introduciendo la contraseña anterior, cosa imposible en este caso.

Yo lo que quiero es recuperarla a través de otro dato, como el email o el nombre de usuario. Y, por supuesto, quiero que sólo ese usuario al que le he enviado el email se pueda meter en pass.php y cambiarla. Según esto, ¿cómo debería configurar pass.php?, ¿me podéis dar algún ejemplo? Gracias.