Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/12/2010, 15:37
Avatar de Gambinoh
Gambinoh
 
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Alternativas a die() en este código

Hey eres un genio repara2, tu función de validación del mail es buenísima jeje me la leí entera y la implemente con este código:

Cita:
function validareMail($xEmail){

$xValid = true;

$atPos = strrpos($xEmail, '@');

//Si $atPos es booleana Y es falso entonces no es email
if(is_bool($atPos) && !$atPos){
$xValid = false;
}else{

$xDomain = substr($xEmail, $atPos+1);
$xAddr = substr($xEmail, 0, $atPos);
$xAddrLen = strlen($xAddr);
$xDomainLen = strlen($xDomain);

//La dirección ha de ser >1 y <64
if ($xAddrLen < 1 || $xAddrLen > 64){
$xValid = false;

//el dominio >1 y <64
}else if ($xDomainLen < 1 || $xDomainLen > 255){
$xValid = false;

}else if ($xAddr[0] == '.' || $xAddr[$xAddrLen-1] == '.'){
$xValid = false;

//No puede contener barras // o \\
}else if (preg_match('/\\.\\./', $xAddr)){
$xValid = false;

}else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $xDomain)){
$xValid = false;

}else if (preg_match('/\\.\\./', $xDomain)){
$xValid = false;

}else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$xAddr))) {
if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$xAddr))){
$xValid = false;
}
}
//Debe existir el dominio
if ($xValid && !(checkdnsrr($xDomain,'MX') || checkdnsrr($xDomain,'A'))){
$xValid = false;
}
}
return $xValid;
}


[...]

$indicador = "";

if(!validareMail($remitente)){
$indicador = "false";
}
else{
$indicador = "true";
}

if($error == "" && $indicador == "true"){
mail($destino, $asunto, $mensaje, $encabezados) or die ("Mensaje no enviado");
echo "Mensaje enviado";
} elseif ($indicador == "false"){
echo "Email erroneo";
} else{
echo $error;
}
Ojo aquí lo que se ve es como he adherido a mi código la función de repara2 usando la variable $indicador.

EL asunto práctico resulta así al final: si el email es erroneo aparece un mensaje indicándolo, si es correcto y faltan campos por rellenar, aparece un mensaje indicando que hay campos vacíos.