Comunidad de diseño web y desarrollo en internet online

formulario php y validacion de datos ayudaaaaaaaaaaaaaa!

Citar            
MensajeEscrito el 21 Sep 2010 08:55 pm
Buenas lo que pasa eslo siguiente, tengo un formulario con php, ya funciona y me llega el correo con los datos del formulario lleno, pero.... ejemplo en el campo email puedo poner cualquier cosa y me lo toma valido y lo envia... lo mismo con el telefono de contacto.

Lo que me gustaria es que si el campo email no esta completo, no tiene el @ o no tiene el minimo de caracteres, no deje enviar el correo, lo mismo en el telefono nombre y mensaje... que todos deban estar llenos.
dejo el codigo del formulario y el php del envio de datos...

Código :

<h3>Formulario de Contactos</h3>
<form id="form1" name="form1" method="post" action="procesar.php">
  <label> Ingrese su nombre <br />
  <input name="nombre" type="text" id="nombre" />
  <br />
  </label> 
  <p>Su direcci&oacute;n Email<br />
    <input name="email" type="text" id="email" />
  </p>
  <p>Su N&uacute;mero de tel&eacute;fono <br />
    <input name="telefono" type="text" id="telefono" />
</p>
  <p>Tipo de contacto<br />
    <label>
    <select name="tipo" id="tipo">
      <option value="Ventas">Ventas</option>
      <option value="Preguntas">Preguntas</option>
      <option value="Comentario">Comentario</option>
    </select>
    </label> 
   </p>
  <p>
    <label>Mensaje<br />
    <textarea name="mensaje" cols="30" rows="3" id="mensaje"></textarea>
    </label>
</p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Enviar Formulario &gt;&gt;" />
    </label>
  </p>


y aca el procesar.php que es el que me envia la info al correo y al final del envio me da una redireccion automatica.

Código :

<?php 

$para = '[email protected]'; 

$asunto = $_POST["tipo"]; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Nombre: ".$_POST["nombre"]."<br>"; 
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
$MESSAGE_BODY .= "Telefono: ".$_POST["telefono"]."<br>"; 
$MESSAGE_BODY .= "Tipo de contacto: ".$_POST["tipo"]."<br>";
$MESSAGE_BODY .= "Mensaje: ".nl2br($_POST["mensaje"])."<br>"; 
mail($para, $asunto, $MESSAGE_BODY, $mailheader) or die ("Error al enviar el Formulario !"); 


header("Location:http://www.XXXXXXXXXXXX.coml")
?>


Reitero lo que deseo, que es que con php o javascript se validen los campos del formulario respectivamente con sus caracteristicas.

Agradezco toda su ayuda.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 21 Sep 2010 10:29 pm
Para checar que no los campos no esten vacíos, puedes utilizar la funcion str_len() de php, la misma función te serviría para asegurarte que los datos tiene un minimo de caracteres.
Ahora, para válidar la estructura del email, necesitas una expresión regular.
Te recomiendo que las válidaciones las hagas de ambos lados, tanto en js como en php.

Por sikloidz

4 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2010 11:39 pm
sikloidz:
La función es strlen
rolo89:
Cada campo requeriría su propia validación para estar relativamente seguro de que tiene datos coherentes pero todos los campos obligatorios deberían pasar por una función tal que:

Código PHP :

$campo = null;
if (isset($_POST['campo'])) {
  if (!empty($_POST['campo'])) {
  $campo = $_POST['campo'];
  }
}

O cosa parecida.
Para el caso de validar una dirección de email podrías usar esta función:

Código PHP :

/* Prueba si una dir. de correo está bien formado */
function is_email($Addr) {
      $p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
      $p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
      $p.= '|info|arpa|aero|coop|name|museum)$/ix';
      return preg_match($p, $Addr);
} // is_email

Y se usa como:

Código PHP :

if (!is_email($email)) { echo $email." no es una dirección de correo electrónico válida."; }

Para el campo teléfono es más complicado porque depende de cómo esperas que sea la entrada de datos, por ejemplo, si quieres solo personas de tu propia área o solo de tu país o de todo el mundo. El otro problema es que cada país tiene su forma de separar el código de área y el número de abonado, a veces hay más de un grupo, a veces la gente le gusta poner el código de país. Eso tendrás que verlo tú, pero en cualquier caso la respuesta es usar expresiones regulares.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Sep 2010 02:55 pm
bueno he copiado el codigo pero no se donde ponerlo si entre el head o el body o entre el form si va ya en el procesar.php......

agradezco sus respuestas y me aclaren esto ya que me urge un poco lograr bloquear el envio de emails sin adtos verdaderos.

gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 23 Sep 2010 03:43 pm
Va en procesar.php :S
Pero de ninguna manera los códigos que he puesto funcionan tan solo con "copiar y pegar", debes entender el concepto detrás de ellos y adaptarlos a tus necesidades particulares. Yo ayudo pero no hago el trabajo por otro (a menos que haya $$$ de por medio :P ).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Sep 2010 04:03 pm
jajaaj ok pero entonces me gustaria saber cuales son las variables a modificar ... tengo otro codigo php pero no me funciona y he intentando cambiando algunas cosas pero nada q funciona.

gracias por tu respuesta....

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.