Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/08/2010, 20:13
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Formulario de contacto tira error

las validaciones pueden ser muy sencillas o más complejas según que elementos quieras validar, se puede hacer con javascript en el mismo navegador del cliente (supuestamente más rápido), o desde el lado sel servidor, con el mismo php, en tu caso.

voy a ponerte dos ejemplos, uno, para prevenir que el campo este vacio, y otro para chequear que la dirección de email sea una dirección válida.



<?php
$nombre=$_GET['Apellido'];
$telefono=$_GET['Telefono'];
$empresa=$_GET['Empresa'];
$email=$_GET['mail'];
$consulta=$_GET['consulta'];

// la siguiente es una expresion regular que equivale a un email valido
$control_mail="^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$";
// hacemos una comparación entre la expresion regular y el contenido de $email
if(!eregi($control_mail,$email)){
// si no hay coincidencia
// fijate bien en el punto en $mensaje_error. eso significa que esta variable
// la mantenemos abierta para recibir más posibles mensajes de error
$mensaje_error.= "<p>La <b>sintáxis de email</b> no es válida</p>\n";
}

// ahora el nombre
// quitamos probable html de los campos
$nombre = strip_tags("$str");
// removemos epacios sobrantes al inicio y final de las lineas
// imagina que solo presionaron la barra espaciadora
$nombre = trim("$nombre");

// y ahora usamos empty();
// una funcion que reconoce si una variable es una cadena vacia
if(empty($nombre)){
$mensaje_error.= "<p>Nombre es un campo obligatorio</p>\n";
}

// si no hubo errores, $mensaje_error="";
// basandonos en esto

if($mensaje_error == ""){ // procesamos

$para='[email protected]';
$titulo='Consulta desde sitio web';

$mensaje='Nombre: '.$nombre;
$mensaje.='\nTelefono: '.$telefono;
$mensaje.='\nEmpresa: '.$empresa;
$mensaje.='\nmail: '.$email;
$mensaje.='\nConsulta: '.$consulta;


$cabeceras = 'From: '. $email;

mail($para, $titulo, $mensaje, $cabeceras);


header("Location: gracias.html");

}else{
// imprimimos el error y salimos
echo = "$mensaje_error"; // aqui ya no lleva el punto
exit();
}
?>

bueno, es algo rudimentario, se puede optimizar, pero es para que lo aprendas, ahora debes buscar como implementarlo en el resto de los campos que lo requieran.
Tres consejos, usa <?php ?> en tus scripts y no la forma abreviada <? ?> y en tu form, usa $_POST y no $_GET. No es necesario la redirección a la pagina de agradecimiento, puedes sacar el mensaje aqui mismo al igual que el de error

Para hacerlo con javascript te dejo un par de enlaces

http://www.webtaller.com/construccio...javascript.php

http://www.elcodigo.com/tutoriales/j...vanzado13.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.