OK haber por un lado tenemos el link para recuperar la pass
Código PHP:
Ver original<a href="index.php?controller=user_&accion=recuperar_contrasena">Olvide mi Contraseña</a>
que llama a esta funcion
Código PHP:
Ver originalfunction recuperar_contrasena()
{
$ok = false;
if(isset($_POST['destinatario'])) {
require 'views/envio.php';
$ok = true;
}
if($ok==true) {
include('views/confirmacion.php');
} else {
//require 'views/frm_recuperar_contasena.php';
include('views/frm_recuperar_contasena.php');
}
}
por otro lado envio.php
Código PHP:
Ver original<php
$destinatario_form = $_POST['destinatario'];
$usuario = 'postgres';
$contrasenia = '*****';
try {
$db = new PDO('pgsql:host=192.168.102.200;dbname=volcanoes',$usuario,$contrasenia);
}catch(PDOException $e) {
echo "Usuario y Clave Invalidas";
throw new Exception("Usuario y Clave Invalidas", 0, $e);
}
$consulta = $db->prepare("SELECT * FROM usuarios WHERE usu_correo ='$destinatario_form'");
$consulta->execute();
while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
{
$hash=$fila['usu_clave'];
}
require_once('phpMailer/class.phpmailer.php');
require_once("phpMailer/class.smtp.php");
$consulta->execute();
$cuenta = $consulta->rowCount();
if($cuenta == 1){
while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
{
$hash=$fila['usu_clave'];
$destinatario=$fila['usu_correo'];
}
require_once('phpMailer/class.phpmailer.php');
require_once("phpMailer/class.smtp.php");
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = '172.25.1.3';
$mail->SMTPDebug = 0;
$mail->SMTPAuth = false;
$mail->SMTPSecure = 'SSL';
$mail->Port = 25;
$mail->Subject = "Asunto del correo";
$mail->AddAddress($destinatario);
$mail->Subject = 'Recuperacion Contraseña';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."&id=".$hash."'>".Recuperar
.Contraseña
."</a>"."<br>".$hash);
if( ! $mail->Send())
{
$validate = 1;
}
else
{
$validate = 2;
}
}
else
{
$validate = 0;
}
?>
por otro lado confirmacion.php
Código PHP:
Ver original<?php
switch($validate)
{
case 0:
echo 'El correo '.$destinatario_form.'<br>No esta Asociado a ningun usuario del Sistema';
break;
case 1:
echo 'Se produjo un error en el envio del email , pruebe a intentarlo otra vez';
break;
case 2:
echo 'Email enviado correctamente';
break;
default :
echo 'se produjo en error';
}
?>
centremonos en esta linea
Código PHP:
Ver original$mail->MsgHTML("<a href='http://192.168.102.9/volcanicos&time=".time()."&id=".$hash."'>".Recuperar
.Contraseña
."</a>"."<br>".$hash);
time= time(); // controlamos el tiempo para la caducidad del link
token = sha1($_SERVER['HTTP_USER_AGENT'].$destinatario.rand()); // controlador para verificar
destinatario = $destinatario; // para verificar que usuario es
quedaria asi
ahora con todo esto ya tienes el link preparado
envio.php ahora quedari asi
Código PHP:
Ver original<php
$destinatario_form = $_POST['destinatario'];
$usuario = 'postgres';
$contrasenia = '*****';
try {
$db = new PDO('pgsql:host=192.168.102.200;dbname=volcanoes',$usuario,$contrasenia);
}catch(PDOException $e) {
echo "Usuario y Clave Invalidas";
throw new Exception("Usuario y Clave Invalidas", 0, $e);
}
$consulta = $db->prepare("SELECT * FROM usuarios WHERE usu_correo ='$destinatario_form'");
$consulta->execute();
while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
{
$hash=$fila['usu_clave'];
}
require_once('phpMailer/class.phpmailer.php');
require_once("phpMailer/class.smtp.php");
$consulta->execute();
$cuenta = $consulta->rowCount();
if($cuenta == 1){
while($fila = $consulta->fetch(PDO::FETCH_ASSOC))
{
$hash=$fila['usu_clave'];
$destinatario=$fila['usu_correo'];
}
require_once('phpMailer/class.phpmailer.php');
require_once("phpMailer/class.smtp.php");
$do = sha1($_SERVER['HTTP_USER_AGENT'].$destinatario);
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = '172.25.1.3';
$mail->SMTPDebug = 0;
$mail->SMTPAuth = false;
$mail->SMTPSecure = 'SSL';
$mail->Port = 25;
$mail->Subject = "Asunto del correo";
$mail->AddAddress($destinatario);
$mail->Subject = 'Recuperacion Contraseña';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML('<a href="http://192.168.102.9/volcanicos&ti='.base64_encode(time()).'&de='.base64_encode($destinatario).'&do='.$do.' ">Recuperar.Contraseña</a><br>');
if( ! $mail->Send())
{
$validate = 1;
}
else
{
$validate = 2;
}
}
else
{
$validate = 0;
}
?>