0 votos
por (20 puntos) en PHP
Hola amigos, quisiera ver si hay alguien por ahi que me ayude con esta simple duda que tengo.

Deseo Validar el ingreso de correos electrónicos a mi formulario ( sintaxis correcta y si existe el dominio).

Les adjunto parte del codigo para que me puedan ayudar:

<pre lang='php'><?

include 'db.php';

// Define post fields into simple variables
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_address = $_POST['email_address'];
$abstractType = $_POST['abstractType'];
$Subject_Area = $_POST['Subject_Area'];
$author1=$_POST['author1'];
$affiliation1=$_POST['affiliation1'];
$author2=$_POST['author2'];
$affiliation2=$_POST['affiliation2'];
$author3=$_POST['author3'];
$affiliation3=$_POST['affiliation3'];
$presenters_name=$_POST['presenters_name'];
$presenters_email=$_POST['presenters_email'];
$abstract_title=$_POST['abstract_title'];
$abstract=$_POST['abstract'];

/* Let's strip some slashes in case the user entered
any escaped characters. */

$first_name = stripslashes($first_name);
$last_name = stripslashes($last_name);
$email_address = stripslashes($email_address);
$author1= stripslashes($author1);
$affiliation1= stripslashes($affiliation1);
$author2= stripslashes($author2);
$affiliation2= stripslashes($affiliation2);
$author3= stripslashes($autho3);
$affiliation3= stripslashes($affiliation3);
$presenters_name= stripslashes($presenters_name);
$presenters_email= stripslashes($presenters_email);
$abstract_title= stripslashes($abstract_title);
$abstract= stripslashes($abstract);

/* Do some error checking on the form posted fields */

if((!$first_name) || (!$last_name) || (!$email_address) || (!$abstractType) || (!$author1) || (!$presenters_name) || (!$presenters_email) || (!$abstract_title) || (!$abstract)){
    echo 'You did not submit the following required information! ';
    if(!$first_name){
        echo "First Name is a required field. Please enter it below.";
    }
    if(!$last_name){
        echo "Last Name is a required field. Please enter it below.";
    }

    if(!$email_address){
        echo "Email Address is a required field. Please enter it below.";
    }

    if(!$abstractType){
        echo "Abstract Type is a required field. Please enter it below.";
    }

    if(!$author1){
        echo " You must submit at least one Author.";
    }
    if(!$presenters_name){
        echo "Presenter´s name is a required field. Please enter it below.";
    }

    if(!$presenters_email){
        echo "Presenter´s email is a required field. Please enter it below.";
    }

    if(!$abstract_title){
        echo "Abstract title is a required field. Please enter it below.";
    }

    if(!$abstract){
        echo " Your Abstract description is a required field. Please enter it below.";
    }

    include 'abstract_form.php'; // Show the form again!
    /* End the error checking and if everything is ok, we'll move on to
     creating the user account */
    exit(); // if the error checking has failed, we'll exit the script!
}
Tengo una validacion para el email_address pero es solo para no dejar en vacío el cuadro.

Ojala me pueda ayudar!

Gracias!!!


4 Respuestas

0 votos
por (80 puntos)
UA grandes rasgos te diría lo siguiente:

Para la sintaxis te diría que busques en la dirección el @ y un . luego  del @. Con HTML5 tenes un input del tipo email que verifica la sintaxis del email ingresado.

Para ver si es correcto el dominio, podrías hacer algo como un ping' email de validación' etc. Debe haber totos sobre esto .

Creo que todo lo que te dije tiene una función en PHP, revisa el manual para mas información.

Slds


0 votos
por (8.5k puntos)
Se suelen hacer con expresiones regulares estas validaciones, no conozco PHP pero un poco de google y todo listo:

http://www.linuxjournal.com/article/9585


0 votos
por (80 puntos)
Si, como dice Torres es mas facil usar expresiones regulares para cualquier validación en PHP o javascript, pero se usan de manera diferente en ambas... pero antes de usar expresiones te recomiendo que leas un poco sobre que 'significan' solo así podrás después usar las tuyas sin necesidad de copy/paste.

Existen diferentes formas de validar, ya sea sensible a mayusculas o minisculas o no

un ejemplo:

preg_match('/'.$patron.'/', $cadena_texto);

donde: $patron es la expresion regular

y $cadena_texto es la queda a evaluar

<pre lang='php'>

$email="[email protected]";
if (preg_match('/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) {
    echo "Bien!";
} else {
    echo "mal :(";
}

donde ^ es el inicio de la cadena

[a-zA-Z0-9_]+ donde puede haber letras desde a-z A-Z y numeros de 0-9 tambien un _ en el primer puesto el sigo + significa 1 o mas veces

 Vemos ([.][a-zA-Z0-9_]+)*

donde: ( ) implican otro segmento a validar el * significa 0 o mas veces que puede existir o no.

vemos que esta un [.]  esto es que si se va poner este segmento tiene que empezar por . después tenemos el mismo formato de a-z... es lo mismo

despues [@] que no tiene ni + ni * lo cual significa que es obligatorio 1 sola vez.

despues [a-zA-Z0-9_]+ q es lo mismo que ya vimos, quiere decir que despues del arroba puede haber 1 o + veces lo siguiente si no queires que aparezca un _ quitalo, y ya :)

ahora

([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}

vemos que [.] es similar al arroba, tiene que estar obligatorio 1 vez

después tiene que seguir el mismo formato que ya analizamos [a-zA-Z0-9_]+ 1 o mas veces

luego todo esto encerrado por * ósea, que puede o no ester 0 o mas veces por aquellos corres que son [email protected]

después tenemos un . obligatorio y cualquier letra de la a-zA-z de 2 a 4 veces osea que solo puede estar [email protected] si pones

[email protected] marcara error tambien con [email protected]

por que vemos que este ultimo supera el rango mencionado en {2,4} de 2  a 4, si lo quieres ampliar le pones mas al al segundo valor y ya :)

ah y el $ significa terminacion :p

Espero que a alguien le sirva, saludos


0 votos
por (760 puntos)
puedes usar jquery para validar el correo, solo jala el archivo .js a tu pagina donde tienes el formulario y listo el hace el resto


Preguntas relacionadas

0 votos
4 respuestas
preguntado por estril7 (20 puntos) Ene 28, 2016 en PHP
0 votos
1 respuesta
preguntado por Alejandro Montes (20 puntos) May 15, 2016 en PHP
0 votos
0 respuestas
preguntado por yoclens (20 puntos) Feb 12, 2017 en PHP
0 votos
3 respuestas
preguntado por marin (20 puntos) Ene 28, 2016 en HTML
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...