Siempre que creemos un formulario web (HTML), hay que validar las entradas. Esto siempre se hace del lado del cliente o cliente-side y del lado del servidor o server-side.
Del lado del servidor utilizamos el lenguaje que esté desarrollado el sitio, por ejemplo si el sitio está desarrollado con PHP, hay que crear un mecanismo que lea y valide todos los datos que llegan en las variables del formulario usando algo así:
... <?php if (!$_POST){ ?> <?php aquí va le código del formulario que podría estar en un archivo include ?> <?php }else{ ?> <?php $cuerpo = "Formulario de contacto\n"; $cuerpo .= "Nombre: " . $_POST["nombre"] . "\n"; $cuerpo .= "Email: " . $_POST["correo"] . "\n"; $cuerpo .= "Comentarios: " . $_POST["comentario"] . "\n"; mail("[email protected]",$_POST["correo"],$cuerpo); echo "<h4>Mesanje eviado correctamente. ¡Gracias por escribirnos!</h4>"; ?> <?php <?php aquí va le código del formulario que podría estar en un archivo include ?> }?> ...
En el código la variable $_POST es la que contiene los datos enviados desde el formulario. En el caso que esté vacía, simplemente mostrará el formulario, caso contrario enviará estos datos por correo y volverá a mostrar el formulario en caso que el usuario necesite enviar otra consulta.
En código anterior no se realiza ninguna validación, simplemente se envían los datos por correo, pero estas podrían estar vacías ya que el usuario olvidó escribir algunos de los datos solicitados o presionó por error el botón de enviar.
Para asegurarnos que esto no ocurra, tendríamos que validar que las variable no estén vacías y que la información contenida sea la solicitada, para esto podríamos usar algún código similar al siguiente:
... if (empty($_POST['nombre'])) $error .= "<p class=\"error\">No has introducido tu nombre</p>"; if (empty($_POST['correo'])) $error .= "<p class=\"error\">No has introducido tu dirección de correo</p>"; if (empty($_POST['comentario'])) $error .= "<p class=\"error\">No has escrito nada en el cuerpo del mensaje</p>"; $text_len = strlen($_POST['comentario']); if($text_len > 800) { $error .= "<p class=\"error\">El comentario debe ser de menor a 800, se ingresaron $text_len </p>"; } if(isset($_POST['correo'])) { if (!comprobar_email($_POST['correo'])) { $error .= "<p class=\"error\">La dirección de correo es incorrecta</p>"; } }// end of email check if($error) { echo $error;?> ...
Personalmente me gusta hacer la validación del lado del cliente por medio de Javascript. Igualmente siempre es necesario la validación del lado del servidor, ya que recordemos, que el Javascript podría estar deshabilidado del lado del cliente.
La validación con Javascript es muy sencilla, sólo hay que utilizar alguna biblioteca como:
- JSValidate – Biblioteca Javascript para validar formularios
- LiveValidation – Biblioteca Javascript para validar formularios
- o Validanguage – Biblioteca orientada a objetos para validar formularios entre muchas otras.
Si bien todas ofrecen funcionalidades similares, en mis desarrollos utilizo JSValidate.
JSValidate es un biblioteca Javascript para validar formularios que funciona muy bien y es muy fácil de implementar.
Simplemente hay que subir el archivo JS a al servidor y enlazarlo desde la página del formulario:
<script src="javascripts/jsvalidate.js" type="text/javascript"></script>
Es este caso el archivo de la biblioteca es jsvalidate.js y está alojado en la carpeta javascripts.
Además, requiere enlazar otras dos bibliotecas:
<script type="text/javascript" language="javascript" src="scriptaculous/lib/prototype.js"></script> <script type="text/javascript" language="javascript" src="scriptaculous/src/scriptaculous.js"></script>
Para validar los campos de un formularios debemos usar un código similar al siguiente:
<form name="input" enctype="multipart/form-data" method="post" action="http://direccion-del-sitio.com/?contacto.html"> <label for="nombre" accesskey="n">Nombre:</label> <input type="text" name="nombre" class="jsrequired" /> <label for="correo" accesskey="c">Correo electrónico:</label> <input type="text" name="correo" class="jsrequired jsvalidate_email" /> <label for="comentario" accesskey="o">Consulta/comentario</label> <textarea name="consulta" cols="30" rows="6" ></textarea> <input type="submit" value="Enviar" /> </form>
En el caso del campo nombre, sólo hay que agregar una clase con el valor jsrequired, con esto decimos que este campo es requerido es decir, este no puede ser enviado vacío.
En el campo correo, el valor de la clase es jsrequired jsvalidate_email que es justamente para validar que la dirección de correo escrita, sea válida es decir, que corresponda la formato [email protected].
La lista completa de los valores de las clases que podemos usar para validar los campos del formulario son:
- jsrequired – valor obligatorio.
- jsvalidate_number – valor numérico obligatorio.
- jsvalidate_digits – sólo números.
- jsvalidate_alpha – sólo letras.
- jsvalidate_alphanum – sólo letras, números y guiones (underscores).
- jsvalidate_email – dirección de correo.
- jsvalidate_uscanzip – códigos postales de Estados Unidos.
- jsvalidate_usstate – dos letras en mayúsculas para estado de Estados Unidos.
- jsvalidate_usphone – números telefónicos en el formato de Estados Unidos.
- jsvalidate_creditcard – números de tarjetas de crédito: VISA, MasterCard y American Express (sin espacios).
- jsvalidate_ssn – número del seguro social de Estados Unidos.
- select-notfirst – para usar en campos descolgables.
Además, tenemos que editar ciertos valores de variables contenidas en el archivo jsvalidate.js, que corresponden a los mensajes informativos mostrados (errores, dato esperado, etc.), esto hay que cambiarlo porque están en inglés así, si nuestro sitio, está en español estos se mostraran en dicho idioma.
Todo el código que se muestra en este tutorial ha sido simplificado por efecto didáctico y no se tiene en cuenta implementaciones de seguridad.
Hola, una manera rápida y sencilla, seria hacerle un substr a la dirección e intentar hacer conexion smtp con ese dominio, es decir del subtrin encontraras la cadena
yaho.com en este caso, y luego con la funcion fsockopen intentas conectar con ese servido, si el servidor existe, podrías darla por válida, aunque a esto puede agregarle muchas mas comprobaciones…. estoy a full con mi web en este momento, intentare pasarte un pequeño código
quiero un codigo que no deje pasar un emil invalido por ejemplo acabo de escribir por email [email protected] y me lo acepto alguien sabe como validar eso
Hola amigos necesito saber como crear un archivo log de transacciones, estoy trabajando con php y MySql
Voy a comprobar si puedo conseguir validar un campo que no exista espacios en blanco, para asegurarme que el nombre de usuario lo ha escrito todo junto.
pero esa alternativa no valida los espacios en blanco solo valida qe no escribas nada al final no valida los espacios en blanco….
form action=”formulario.php” method=”post” enctype=”multipart/form-data” name=”form1″>
Nombre
Mail
Observaciones
Consulta
Cotización
/form> este es el codigo del formularioa amigos.
hola amigos buenas:
a lo mejor si ustedes me pueden ayudar por favor a validar este formulario con un scrip php, he intentado de algunas formas pero no he obtenido resultado, el codigo del formulario es:
para enviarlo desde la web tengo este scrips en php:
$sendTo = “[email protected]”;
$subject = “formulario”;
$nombre = $_POST[“nombre”];
$mail = $_POST[“mail”];
$observacion = $_POST[“observacion”];
$opciones = $_POST[“opciones”];
$headers .= “gracias.html”;
$message = “\nNombre: ” . $nombre . “\nMail: ” . $mail . “\nobservacion: ” . $observacion . “\nOpcion elegida: ” . $opciones;
mail($sendTo, $subject, $message, $headers);
?>
var targetURL=”gracias.html”
window.location=targetURL
pero no se como validar los campos requeridos para que no envie desde la web sin que tengan los campos llenos u validarlos, por favor espero su respuesta y desde ya muchas gracias ya que con su web he aprendido muchas cosas. Soy novato en el tema.
Hola amigos, espero alguien me ayude con este problemita que tengo, uso
ajax para insertar, eliminar, actualizar y buscar registros, en el form
utilizo el evento onsubmit, por ejemplo asi
//llamo a la funcion mostrarFormulario(), el cual carga un div en el
//que muestro los campos para insertar mi informacion (mediante ajax)
Insertar;
//el div contiene un form que maneja el evento onsubmit, el cual
//llama a la funcion enviar informacion para hacer la consulta
form name=’alta’ action=” onSubmit=’enviarInformacion(); return false’
/////////////
//CONTENIDO//
/////////////
input type=’submit’ value=’insertar’
/form
todo funciona bien hasta ahora, mi problema son las validaciones, ya
habia encontrado las librerias que mencionaste, use prototype con
validation.js porque me parecio sencillo y funciono a la perfeccion,
pero cuando quize combinarlo con mis consultas no funciono,
si le pongo por ejemplo a una etiqueta required, al ocurrir el
evento onblur me indica que es un campo obligatorio, pero si le doy
aceptar, aunque este vacio el formulario me lo procesa y obviamente no hace nada
he leido que el problema es por el onsubmit que maneja la libreria para
validar, pero por mas que intento solucionarlo no se me ha dado. he
intentado manejar el onclick y otras alternativas pero nada de nada,
espero me puedas ayudar con esto, te lo agradeceria muchisimo
gege
amigos no me funciona implemete aun form.
como valido los campos nombre para que solo deje escribir letras
edad solo numeros
Hola Ara.
Para crear formularios a mi me gusta usar:
http://pixelcoblog.com/blog/simpleform-script-para-crear-formularios-con-php/
Para enviar correo, usar la función de PHP es muy sencillo y si no puedes probar con:
http://pixelcoblog.com/blog/swift-mailer-una-biblioteca-php-para-enviar-correos-eficientemente-desde-nuestras-aplicaciones/
No se exactamente a que te dedicas ni que conocimientos poseas, los dos recursos que te mencioné necesitas saber HTML y PHP.
Espero que te sea útil y nos escribes y nos cuentas como te fué, cualquier cosa nos vuelves a escribir.
Saludos.
Hola se que talvez sean unos expertos pero podrian ayudarme, esto y haciendo mi pagina y quiero hacer unos formularios y que la información llegue a mi correo, y bueno como validar y phacer los formularios me podrían recomedar como hacerlo o algunos sitios para principiantes… gracias
saludos
no me resulta que pasa
Documento sin título
Nombre:
Correo electrónico:
Consulta/comentario
hola neceseito validar una lista despegable para q me acepte espacios y asi poder guardar el registro enun base de datos esto se puede hacer?
alguienmepuede responder mi cogigo es el siguiente.<?php
$hostname = “localhost”;
$database = “almacen”;
$username= “root”;
$password = “”;
$link = mysql_pconnect($hostname, $username, $password);
mysql_select_db($database, $link);
echo “”;
$sql=”select articulo FROM artelectricos “;
$result=mysql_query($sql);
$i=0;
while ($row=mysql_fetch_row($result))
{
echo “”.$row[$i].”\n”;
}
echo “”;
?>
me apoye en un script para jalar losdatos de un base de datos pero ahoara mi problema es qu no me deja guardarlo en otra tabla por que no me valida los espacios alguen me puede auxiliar por favor.
Y las librerias php para validar no hay por ahi? jajajaja, es que quiero evitarme esas lineas de codigo 😀
Hola, gracias por tus comentarios.
Quería aclararte que sí utiliza la librería Prototype, revisa la documentación que hay en su página: http://www.jsvalidate.com/docs/
Además también utiliza Scriptaculous y esta a también requiere utiliza Prototype.
La semana pasada terminé un proyecto en el que use Scriptaculous y por ende también Prototype y JSValidate para formularios, me ha funcionado muy bien y sobre todo el tiempo de implementación son muy bajos. Hable sobre esto porque es una combinación que vengo usando hace algún tiempo y con muy buenos resultados.
Saludos.
jejejejje lo que quise decir es que SI utiliza prototype 😮 me equivoqué al escribir :s
saludos
normalmente yo hago la validación a mano (sin usar librerías), gracias por las alternativas expuestas, aunque la librería que expones no utiliza prototype 🙁 personalmente no me agrada, prefiero jQuery, supongo que debe haber librerías para validaciones que utilicen jQuery.
saludos y gracias por el tut