[Ayuda] comprobacion de mail

Kossa1029

Bovino maduro
#1
saben por que no sirve mi comprovacion de email??? u.u bueno no precisamente quiero que me lo compruebe quiero que contenga el @ almenos y que no se npueda quedar ese espacio en blanco.... y otra cosa como hago para si falta el nombre no salte la pantalla en blanco pidiendo que introdusca un nombre si no que me lo diga ahi mismo en la pagina de el formulario aqui les dejo mi codigo php


Código:
<?php
$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$mail = $_POST['mail'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Su telefono es: " . $telefono . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = 'arthas_wow@hotmail.es';
$asunto = 'Contacto desde web ricardonader.com';

if( empty( $_POST['nombre'] ) ) {
       die( "Debes escribir tu nombre" );
}  
if( empty( $_POST['telefono'] ) ) {
       die( "Debes escribir un numero telefonico" );
}  
function validar_mail(&$email){
global $error_email;
$email=trim($email);
$email=strtolower($email);
$email=addslashes($email);
if(!$email){
$error_email= "- Rellene este campo.";
}else{
if(!eregi("^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$", $email)){
$error_email= "- E-mail incorrecto.";
}
}
}
if (mail($para, $asunto, utf8_decode($mensaje), $header))
    echo "Mensaje enviado correctamente";
else
    echo "Error al Enviar el mensaje";
?>
y aqui el url del hot donde estoy testeando mis cosas espero puedan ayudarme :)

http://pruebasnader.host22.com/index.html
 

Kossa1029

Bovino maduro
#2
perdon por el doble post pero solo veo que mi post se recorre a los ultimos y nadie contesta con esto intnento que se valla a los post nuevos mi post y teniendo la esperanza de que alguien me ayude de antemano gracias :)
 

NaviChavez

Bovino maduro
#5
Se me ocurren varios errores...

PHP:
<?php
$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$mail = $_POST['mail'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Su telefono es: " . $telefono . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n"; 
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = 'arthas_wow@hotmail.es';
$asunto = 'Contacto desde web ricardonader.com';

/* En todos estos IF porque los mandas a llamar de nuevo si ya están contenidos en variables? 
En todo caso si quieres revisar que las variables no vengan vacías, este debería de ser el primer fragmento de código.  */

if( empty( $_POST['nombre'] ) ) {
       die( "Debes escribir tu nombre" );
}  
if( empty( $_POST['telefono'] ) ) {
       die( "Debes escribir un numero telefonico" );
}  

/* En que parte mandas a llamar a esta función? 

No se si ando fallando en PHP, pero creo que se manda a llamar con 'validar_mail($mail);' */

function validar_mail(&$email){
global $error_email; //global?? si no es una clase a la que no se pudiera acceder de forma normal.
$email=trim($email);
$email=strtolower($email);
$email=addslashes($email);
if(!$email){
$error_email= "- Rellene este campo.";
}else{
if(!eregi("^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$", $email)){
$error_email= "- E-mail incorrecto.";
}
}
}
/*El correo siempre se va a mandar... debes de condicionarlo al error o no de la función de validar_mail();

Y checa las expresiones regulares que estas manejando porque no hacen lo que estas buscando.*/

if (mail($para, $asunto, utf8_decode($mensaje), $header))
    echo "Mensaje enviado correctamente";
else
    echo "Error al Enviar el mensaje";
?>

/* Y es algo de lo que veo a simple vista... checalo y vemos que pasa. */
y aqui el url del hot donde estoy testeando mis cosas espero puedan ayudarme :)

http://pruebasnader.host22.com/index.html
 

Kossa1029

Bovino maduro
#6
realmente no se php ese codigo para validar lo copie de una pagina pero igual vere que puedo hacer :) seguire buscando como corregir esos errores
 

NaviChavez

Bovino maduro
#7
Ahora veo, bueno, mira puedes usar una validación sin tanta vuelta.

PHP:
<?php
$correo = "loquesea@midominio.com";

if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$correo)) {
   echo "Pasa bien...";
} else {
   echo "tenemos un error...";
}
?>
Y ya, con eso validas el correo.
 

Kossa1029

Bovino maduro
#8
haber pues probare ese.. pero si compruebo el mail con eso permitira mails de cualquier dominio y cualquier terminacion??? aun asi sea de host gratuitos??
 
Arriba