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ñ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> </td>
<td><input name="Enviar" type="submit" id="Enviar" value="Enviar" /></td>
</tr>
</table>
</form>
<?php } ?>
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.