Foros del Web » Programando para Internet » PHP »

¿Como se valida el email en este script?

Estas en el tema de ¿Como se valida el email en este script? en el foro de PHP en Foros del Web. Hola, soy nuevo en todo el tema de php y ando algo perdido. He encontrado un codigo en php para el envio de un formulario ...
  #1 (permalink)  
Antiguo 10/03/2009, 06:34
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
¿Como se valida el email en este script?

Hola, soy nuevo en todo el tema de php y ando algo perdido. He encontrado un codigo en php para el envio de un formulario de contacto pero escribo cualquier cosa en el email y el formulario se envia como si nada. ¿Como hago para que se compruebe que el email es valido antes de que se envie?. El codigo php es el siguiente:

<?php
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

//recogemos las variables
$nombre=$_POST['nombre'];
$email=$_POST['email'];
$comentario=$_POST['comentario'];

//comprobamos si todos los campos fueron completados
if ($nombre!='' && $email!='' && $comentario!='') {



// si es asi armamos el html
$contenido = '<html><body>';
$contenido .= '<p>Formulario de contacto</p>';
$contenido .= '<p>Enviado el '. date("d M Y").'</p>';
$contenido .= '<hr />';
$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong>';
$contenido .= '<p>Email: <strong>'.$email.'</strong>';
$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
$contenido .= '<hr />';
$contenido .= '</body></html>';

// si todos los campos fueron completados enviamos el mail
mail ("Dirección de email en la que recibiré el formulario", "Formulario de Contacto de CoriaWeb", $contenido, "From: $email\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit");
$flag='ok';
$mensaje='<div id="ok">Gracias por Contactarnos, en breve recibirá una respuesta.</div>';

} else {
//si no todos los campos fueron completados se frena el envio y avisamos al usuario
$flag='err';
$mensaje='<div id="error">* Todos Los Campos Son Requeridos</div>';
}
}
?>
  #2 (permalink)  
Antiguo 10/03/2009, 06:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Como se valida el email en este script?

En las FAQ's hay un mensaje que demuestra cómo hacerlo con una expresión regular.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/03/2009, 06:51
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Ok e tardado un poco en saber lo que eran las faqs ya que soy nuevo en el foro ejjeje pero bueno e encontrado esto:

function comprobar_mail($mail){
if (!ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$mail)){
return FALSE;
} else {
return TRUE;
}

}

¿Donde tengo que insertar eso en mi codigo?

¿Por favor hay alguna alma caritativa que me pueda ayudar?.

Muchas gracias por todo.

Última edición por GatorV; 10/03/2009 a las 08:35
  #4 (permalink)  
Antiguo 10/03/2009, 08:31
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ¿Como se valida el email en este script?

Validalo con javascript antes de enviar al formulario tu campo "email", de esta manera:

Código:
function ValidaForm(form){

var email = document.formu.email.value;

if(email.length == 0){
	alert('El campo E-mail es necesario para este proceso.');
	document.formu.email.focus();
	return false;
}else{
	var arr=0;pun=0;
	for (m=0;m<document.formu.email.value.length;m++){  
		switch (document.formu.email.value.charAt(m)) {   
			case " ":
				window.alert("Formato de E-mail incorrecto.");
				document.formu.email.focus();
				document.formu.email.select();
				return false;
				break;
			 case ".":pun++;break;
			 case "@":arr++;break;   
		}   
	}   
	if ((arr==0) || (pun==0)){
		window.alert("Formato de E-mail incorrecto.");
		document.formu.email.focus();
		document.formu.email.select();
		return false;
	}
}


document.getElementById(formu).submit();

}
No te olvides de ponerle id y name a tu formulario (formu) luego en el boton de tu formulario pones esto:

Código:
<button name="benvia" type="button" id="benvia" onClick="ValidaForm(this.form)">
espero te sirva, saludos
__________________
Quitenme la vida pero no la bebida.
  #5 (permalink)  
Antiguo 10/03/2009, 08:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Como se valida el email en este script?

Hola, cesarpunk.

Aunque es bueno usar Javascript para validar sin recargar la página, también hay que asegurar la validación usando PHP ya que la validación Javascript se puede saltar fácilmente.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 10/03/2009, 08:50
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ¿Como se valida el email en este script?

vaya no sabia eso, asi use ajax tambien se puede evitar eso???
__________________
Quitenme la vida pero no la bebida.
  #7 (permalink)  
Antiguo 10/03/2009, 08:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Como se valida el email en este script?

El problema es que si desactivo Javascript en mi navegador, la validación no funcionará (de hecho, tampoco AJAX), así que hay que asegurar la validación haciéndolo tanto en el cliente (Javascript) como en el servidor (en este caso con PHP).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 11/03/2009, 04:35
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Pregunta

:D muchisimas gracias por todo pero entonces como lo hago? jajaja

¿Alguien lo sabe?

Última edición por GatorV; 11/03/2009 a las 15:07
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:36.