Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/02/2009, 11:39
Avatar de acoevil
acoevil
 
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 8 meses
Puntos: 32
Respuesta: Recomendacion

Hola quetal he reliazado algunas modifcaciones para que el codigo se vea mejor espero sus recomendaciones

<?php
session_start();
require_once("DB.php");

class Utiles
{
protected $ruta="RecuperarPassword.php";
protected $accionE="Enmail"; //funcion setEmail
protected $accionR="Remail"; //Funcion setPassword


protected function CamposVaciosPass($array)
{
foreach($array as $clave => $valor)
{
if(empty($valor) || !isset($clave))
{
header("location:".$this->ruta."?accion=".$this->accionE."&mensaje=".
urlencode("Los campos se encuentran incompletos"));
return false;
}
}
return true;
}
protected function CamposVaciosEmail($email)
{
if(empty($email))
{
header("location:".$this->ruta."?accion=".$this->accionR."&mensaje=".
urlencode("El campo Email se encuentra vacio"));
return false;
}
return $email;
}


protected function quitar($email) //funcion para quitar caracteres no permitidos
{
$nopermitidos = array("'",'\\','<','>',"\"",";","$","%","&","/","|","{","}","[","]","+","#");
$email = str_replace($nopermitidos,"", $email);
return $email;
}

protected function quitar_htmls($cadena)
{
$cadena=strip_tags($cadena);
return $cadena;

}

protected function mysql_escape($cadena)
{
if(mysql_real_escape_string($cadena))
{
return $cadena;
}
else
{
echo "Ocurro un error escapando la cadena";
return false;

}
}






}
class EnviarMensaje extends Utiles
{


//metodo configuro el email
function EnviarMensaje($email)
{


//Utilizo los metodo heredados de la clase Utiles
if($this->CamposVaciosEmail($email))
{
//quito toda etiqueta HTML
$email=$this->quitar_htmls($email);
//quito todo caracter no permitido
$email=$this->quitar($email);

$comprobarEmail="select login from usuarios where email='$email'";

$comprobarEmail=$this->mysql_escape($comprobarEmail);

//compruebo que el email existe en la DB
if($this->ComprobarEmail($comprobarEmail))
{
//si el email existe mando el email de verificacion
$this->MandarEmail($email);
$this->email=$email;
session_register("email");


}
}



}
// "select login from usuarios where email='$email'"
protected function ComprobarEmail($comprobarEmail)
{
$Comprobar=mysql_query($comprobarEmail);
if($Comprobar)
{
if(mysql_num_rows($Comprobar)>0)
{
return true; //Si existe algun usuario con este email
}
else
{
header("location:".$this->ruta."?accion=".$this->accionR."&mensaje=".
urlencode("El email no existe"));

return false;
}

}
}
protected function MandarEmail($email)
{
//manda un email para verificar si en realidad el usuario N perdio el
//password si es verdad sigue con la otra funcion
$asunto="Verificacion de Usuario";
$mensaje="Hemos recibido una solicitud para recuperar la contraseña y hemos enviado este
Email para verificar que usted fue el que envio este mensaje.
Para verificar que usted envio este mensaje de clic en el siguiente enlace
http://www.truekesoft.net/foro_sebas/".$this->ruta."?accion=".$this->accionE;

$headers = "From: Admin [email protected] \r\n";
$headers .= "Return-Path: [email protected] \r\n";
$headers .= "Reply-To: [email protected] \r\n";
$headers .= "X-Sender: [email protected] \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

if(@mail($email,$asunto,$mensaje,$headers))
{
header("location:".$this->ruta."?accion=".$this->accionR."&mensaje=".
urlencode("Porfavor verifique su correo"));

return true;
}
else
{
echo "No se pudo enviar el Email";
return false;
}

}





}
class RecepcionMensaje extends Utiles
{
private $clave1;
private $clave2;
private $claveEncriptada;
function RecepcionMensaje()
{
if($this->isset_session("email"))
{
if($this->CamposVaciosPass($_POST))
{
extract($_POST);
$this->clave1=$clave1;
$this->clave2=$clave2;
//quito etiquetas HTML
$this->clave1=$this->quitar_htmls($this->clave1);
$this->clave2=$this->quitar_htmls($this->clave2);
//Todo sale bien verifico las contraseñas y las encrito con sha1
if($this->contrasenas($this->clave1,$this->clave2))
{
echo $this->claveEncriptada;

}



}
}


}
protected function contrasenas($clave1,$clave2)
{
if($clave1==$clave2 && $clave1>=6 && $clave2>=6)
{
$clave1=sha1($clave1);
return $this->claveEncriptada=$clave1;

}
header("location:".$this->ruta."?accion=".$this->accionE."&mensaje=".
urlencode("Las contraseñas tienen menos de 6 caracteres o son diferentes"));
return false;
}
protected function isset_session($email)
{
if(isset($_SESSION["email"]))
{
return true;
}
header("location:".$this->ruta."?accion=".$this->accionE);
return false;

}






}
//Me ayuda a saber cual es el formulario de llegada si es setMail o setPassword
if($_REQUEST['setEmail']=="Enviar")
{
$email=$_POST['email'];
$mensaje=new EnviarMensaje($email);
}
elseif($_REQUEST['setPassword']=="Enviar")
{
//la URL contiene el email de la persona y se realiza la consulta con ese email para update
$password=new RecepcionMensaje();

}


?>