Log Out

Do you really want to leave here so soon?


Convertite en Güiikero en sólo unos segundos!

Retroceder   Güii - Guii.com.uy > WebMaster > Offtopic de WebMaster
User Tag List

 
LinkBack (1) Herramientas Desplegado
Post creado por:
DiMa Sabeeeeee!
Avatar de DiMaNacho
DiMaNacho esta en línea ahora

Mi pensamiento Güiikero

buen nick!

Mi info güiikera

Creé 5.350 post
Me registré el 25-March-2008
Estoy en Dentro de las entrañas de Güii
Tengo 21 años
Veces que gritó Güii: 748
Le dijeron Güii 1.870 veces en 801 Post
Mentioned: 5 Post(s)
Tagged: 3 Thread(s)
Puntos: 57.369, Nivel: 24
Puntos: 57.369, Nivel: 24 Puntos: 57.369, Nivel: 24 Puntos: 57.369, Nivel: 24
Nivel máximo: 99%, 81 Puntos
Nivel máximo: 99% Nivel máximo: 99% Nivel máximo: 99%
Actividad: 5,5%
Actividad: 5,5% Actividad: 5,5% Actividad: 5,5%
Premios otorgados
Logros obtenidos



Cómo crear un formulario de contacto – Versión 2.0

Como siempre, lo primero:
Detalles del tutorial

  • Tiempo aproximado de implementación: 30 minutos.
  • Dificultad: Básico (para implementar tal cual) – Intermedio (para personalizar).
  • Conocimientos previos requeridos: Entendimiento de HTML, CSS, jQuery y PHP.
Implementos necesarios:

  • Un editor Web (Recomendamos Aptana Studio o Notepad++, ambos gratuitos).
Ahora, la pregunta de rigor. ¿Qué trae de nuevo este formulario 2.0?:
  • Validaciones de ingreso de datos en tiempo real mediante jQuery.
  • Validación del correo electrónico en tiempo real mediante expresiones regulares.
  • Envío de información de forma asincrónica (sin recargar la página) mediante el método .ajax de jQuery.
  • Mejoras de estilo y codificación.
Así que con eso claro, vamos, manos a la obra:
Procedimiento:

Separaremos este desarrollo en las siguientes partes:
  1. Código HTML – Armado del formulario.
  2. Código CSS – Estilización del formulario.
  3. Código jQuery/Javascript – Validaciones.
  4. Código PHP – Envío de información.
1.- Código HTML

El armado del formulario es bastante estándar:


Código PHP:
<div id="container">
  <
form name="formulario" id="formulario" method="post" action="envio.php">
    <
fieldset><h2>Contacto</h2></fieldset>

 <
div>
 <
label for="nombre">Nombre: </label>
 <
input type="text" name="nombre" id="nombre" size="60">
 <
span id="validar-nombre"></span>
</
div>

 <
div>
  <
label for="correo">Correo:</label>
 <
input type="text" name="correo" id="correo" size="60"/>
 <
span id="validar-correo"></span>
 </
div>

<
div><label for="sitio">Sitio Web:</label>
 <
input type="text" name="sitio" id="sitio" size="60"/>
 <
span id="validar-sitio"></span>
</
div>

 <
div>
 <
label for="mensaje">Mensaje: </label>
 <
textarea name="mensaje" id="mensaje" rows="10" cols="56"></textarea>
 <
span id="validar-mensaje"></span>
 </
div

 <
p id="envio">
 <
input type="submit" name="enviar" id="enviar" value="Enviar" />
 </
p>    

</
form>
 </
div
Con este código tendremos un formulario bastante estándar armado en nuestra página de contacto. Este contará con campos de texto para que el visitante ingrese su nombre, correo electrónico y sitio Web, así como un área de texto para que ingrese su mensaje. Y obviamente al final añadimos un botón para el envío.
Como podrán fijarse, a continuación de cada campo de texto y área de texto, hemos añadido un span sin contenido. Esto lo hemos hecho para insertar mensajes y resultados de las validaciones posteriormente mediante jQuery.
A continuación, haremos la estilización del formulario, mediante CSS.
2.- Código CSS

Código PHP:
body {
 
height100%;
 
background#348075;
 
font-familyArial;
 
font-size11px;
 
colorwhite;
}

#container {

 
width1000px;
 
margin0 auto;
 
background#5b5c5c;
 
border1px solid white;
 -
moz-border-radius20px;
 -
webkit-border-radius20px;

}

#formulario {

 
padding1em;

}

#formulario fieldset {

 
width400px;
 
padding0 0 0 0;
 
border0;

}

#formulario label {

 
displayblock;
 
padding5px 0 5px 0;

}

#formulario input[type=text], textarea {

 
padding10px 0 10px 0;
 
border1.5px solid black;
 
color#5b5c5c;
 
font-familyinherit;
 
font-sizeinherit;
 -
moz-border-radius5px;
 -
webkit-border-radius3px;

}

#formulario input[type=text]:focus, textarea:focus {

 
background#f5f2c9;

}

#formulario input[type=submit] {

 
bordernone;
 
margin-right1em;
 
padding6px;
 
text-decorationnone;
 
font-size12px;
 
font-weightbold;
 -
moz-border-radius4px;
 
background#348075;
 
colorwhite;
 
width100px;

}

#formulario input[type=submit]:hover {
 
background#287368;
 
cursorpointer;
}

#validar-nombre, #validar-correo, #validar-sitio, #validar-mensaje {
 
positionabsolute;
 
width100px;
}

#validar-nombre img, #validar-correo img, #validar-mensaje img {
 
padding:10px 0 0 5px;

Como podrán ver, en algunas partes hemos utilizado la propiedad border-radius (con moz y webkit para apuntar a distintos navegadores). Esta propiedad, tal como hemos indicado anteriormente, es de CSS3, por lo que no está completamente soportada por todos los navegadores, especialmente los más antiguos. El efecto que logra es el de bordes redondeados, así que ojo, si utilizan IE o algún navegador de mayor antiguedad no lo podrán apreciar.
3.- Código jQuery / Javascript

Acá debemos fijarnos en algunas cosas. Primero, debemos asegurarnos de descargar e incluir jQuery en la cabecera de nuestro formulario, y luego, crear un documento js en el que incluiremos el código en jQuery que hará las validaciones y el correspondiente a Javascript que contendrá la expresión regular que evaluará la dirección de correo ingresada para ver si es válida. Partamos con jQuery:


Código PHP:
$(function(){

 var 
valor;
 var 
0;

 $(
'#nombre').focus(function(){

     $(
'#resultado-nombre').remove();
     $(
'#validar-nombre').append('<p>* Obligatorio</p>');

 });

 $(
'#nombre').blur(function(){

     $(
'.advertencia').remove();

     
valor = $('#nombre').val();

     if(
valor != '') {
         $(
'<img src="imagenes/accept.png" id="resultado-nombre" />').appendTo('#validar-nombre');
     }
     else {
         $(
'<img src="imagenes/delete.png" id="resultado-nombre" />').appendTo('#validar-nombre');
     }

 });

 $(
'#correo').focus(function(){

     $(
'#resultado-correo').remove();
     $(
'#validar-correo').append('<p>* Obligatorio</p>');

 });

 $(
'#correo').blur(function(){

     $(
'.advertencia').remove();

     
valor = $('#correo').val();

     if(
valor != '') {

       if(
validaCorreo(valor)){

          $(
'<img src="imagenes/accept.png" id="resultado-correo" />').appendTo('#validar-correo');
          var 
valido true;

       }
      else {
          $(
'<span id="resultado-correo">Correo no valido</span>').appendTo("#validar-correo");
      }
    }
    else {
         $(
'<img src="imagenes/delete.png" id="resultado-correo" />').appendTo('#validar-correo');
    }

 });

 $(
'#sitio').focus(function(){

     $(
'#validar-sitio').append('<p>* Opcional</p>');

 });

 $(
'#sitio').blur(function(){

      $(
'.advertencia').remove();

 });

 $(
'#mensaje').focus(function(){

      $(
'#resultado-mensaje').remove();
      $(
'#validar-mensaje').append('<p>* Obligatorio</p>');

 });

 $(
'#mensaje').blur(function(){

     $(
'.advertencia').remove();

     
valor = $('#mensaje').val();

     if(
valor != '') {
          $(
'<img src="imagenes/accept.png" id="resultado-mensaje" />').appendTo('#validar-mensaje');
     }
     else {
        $(
'<img src="imagenes/delete.png" id="resultado-mensaje" />').appendTo('#validar-mensaje');
     }

 });

 $(
'#enviar').click(function(){

       if($(
'#nombre').val()!= '' && $('#correo').val()!='' && $('#mensaje').val()!='' && valido) {

         $(
'.advertencia').remove();

         $(
'#envio').append('<img src="imagenes/ajax-loader.gif" alt="Procesando envio" id="cargando" />');

         var 
nombre = $('#nombre').val();
         var 
correo = $('#correo').val();
         var 
sitio = $('#sitio').val();
         var 
mensaje = $('#mensaje').val();

       $.
ajax({
           
url'envio.php',
           
type'POST',
           
data'nombre=' nombre '&correo=' correo '&sitio=' sitio '&mensaje=' mensaje,

           
success: function(resultado) {
               $(
'#respuesta').remove();
               $(
'#envio').append('<span id="respuesta">' resultado '</span>');
               $(
'#cargando').fadeOut(500, function() {
                   $(
this).remove();
               });

           }
       });

       return 
false;

   }
   else {
       $(
'#envio').append('<span>Debe completar los datos requeridos.</span>');
       return 
false;
    }

 });

}); 
Varias cosas a las que ponerle atención en el código anterior:
  • Utilizamos 3 imágenes en los procesos de validación y envío (accept.png, delete.png, ajax-loader.gif). Estas imágenes son utilizadas para validar correcta e incorrectamente así como mostrar un pequeño cargador al momento de enviar los datos. Pueden obtenerlas en el código fuente que hemos adjuntado al final.
  • Hacemos uso del método ajax de jQuery, el cual nos permite enviar asincrónicamente los datos a una página en PHP mediante un método como POST o GET y que esta se ejecute sin la necesidad de recargar la página. Como se puede apreciar, en caso de éxito de esta llamada (el código correspondiente a success), hay un parámetro que es devuelto (resultado), el cual corresponde a un mensaje desplegado por el script que ejecutamos, lo que podremos ver más adelante.
  • Hemos incluido en 2 partes un return false. Esto se ha hecho para que el formulario no ejecute el action (de enviar a la página envio.php) de forma normal, sino que ejecute todo de forma asincrónica. Si el usuario tiene desactivado Javascript en su navegador, se ejecutará todo de forma normal.
  • En la validación del correo se hace un llamado a una función que lo evaluará, esa la incluiremos a continuación.
El código básicamente ejecuta acciones cada vez que se selecciona un campo de texto (focus) y/o se sale de el (blur). Ahí evalua de acuerdo a los parámetros que hemos definido (que existan datos) y en base a eso muestra un resultado de la validación. Luego, al final, cuando se hace click en el botón de envío, evalúa que existan datos en todos los campos y en ese caso envía. De lo contrario, despliega un mensaje indicando la necesidad de completar el formulario.
Luego, a continuación del código jQuery, incluiremos una función en Javascript que evaluará el correo mediante una expresión regular para verificar que tenga el formato correcto:


Código PHP:
function validaCorreo(correo) {

 var 
expresion = new RegExp(/^(("[\w-\s]+")|([w-]+(?:.[w-]+)*)
|(
"[\w-\s]+")([w-]+(?:.[w-]+)*))(@((?:[w-]+.)*w[w-]{0,66})
.([
a-z]{2,6}(?:.[a-z]{2})?)$)|(@[?((25[0-5].|2[0-4][0-9].
|
1[0-9]{2}.|[0-9]{1,2}.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2}).)
{
2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})]?$)/i);
 return 
expresion.test(correo);


Entre estos 2 códigos se encargan de toda la validación del formulario, tal como indicamos, en tiempo real. Lo que nos queda hacer ahora es crear nuestro script en PHP para el envío final de los datos.
4.- Código PHP


Código PHP:
<?php

 
/* Recepcionamos los datos enviados asincrónicamente */

 
$nombre $_POST['nombre'];
 
$correo $_POST['correo'];
 
$sitio $_POST['sitio'];
 
$mensaje $_POST['mensaje'];

 
/* Definimos el correo donde enviaremos el mensaje y el asunto */

 
$destino "correo@ejemplo.com";
 
$asunto "Contacto sitio Web";

 
/* Definimos el formato del mensaje a enviar */

 
$cuerpo "<strong>Nombre: </strong>".$nombre."<br />
 <strong>Correo: </strong>"
.$correo."<br />
 <strong>Sitio Web: </strong>"
.$sitio."<br />
 <strong>Mensaje: </strong>"
.$mensaje;

 
/* Definimos las cabeceras del mensaje */

 
$cabecera "MIME-Version: 1.0\r\n";
 
$cabecera .= "Content-type:text/html; charset=iso-8859-1\r\n";
 
$cabecera .= "From: $correo\r\n";
 
$cabecera .= "Reply-to: $correo\r\n";
 
$cabecera .= "Cc: $correo\r\n";

 
/* Enviamos vía correo, devolviendo un mensaje en caso de éxito o falla */ 

 
if(mail($destino$asunto$cuerpo$cabecera)) {
    echo 
'Su mensaje ha sido enviado.
     De ser necesario, nos pondremos en contacto con Ud.'
;
 }
 else {
    echo 
'No se pudo enviar el mensaje. Int&eacute;ntelo nuevamente';
 }

?>
Los mensajes desplegados en el if y else cuando enviamos el correo son aquellos que son devueltos al método .ajax de jQuery (el parámetro resultado del que hablamos anteriormente), los cuales son desplegados en el formulario.
Conclusión

Y con eso tenemos nuestro formulario de contacto terminado, el cual valida en tiempo real y envía los datos de forma asincrónica. En caso de que el visitante tenga Javascript desactivado en su navegador, esto se ejecutará de forma normal, es decir, el script PHP se cargará al momento de presionar el botón Enviar y no habrá validación en tiempo real.
Antes de terminar:







Fuente: Cómo crear un formulario de contacto – Versión 2.0- Como Lo Hago

  • Compartir
  • Compartí este post!
El_Gabo Güiikeó este post!
Responder Citando Quote selected text Reportar Mensaje
  • 1672
    Visitas
  • 5
    Comentarios
Post creado: 26-Jun-2010 a las 06:43
Usuario
Avatar de jose zevallos
jose zevallos está desconectado

Mi pensamiento Güiikero

Todavía no actualicé mi Status

Mostrar info güiikera +

Realizado: 24-Aug-2010, 11:48 Comentario #2
Hola necesito ayuda, me baje los archivos y cuando lo pruebo me sale el siguiente error:

Nombre: ".$nombre."
Correo: ".$correo."
Sitio Web: ".$sitio."
Mensaje: ".$mensaje; /* Definimos las cabeceras del mensaje */ $cabecera = "MIME-Version: 1.0\r\n"; $cabecera .= "Content-type:text/html; charset=iso-8859-1\r\n"; $cabecera .= "From: $correo\r\n"; $cabecera .= "Reply-to: $correo\r\n"; $cabecera .= "Cc: $correo\r\n"; /* Enviamos v�a correo, devolviendo un mensaje en caso de �xito o falla */ if(mail($destino, $asunto, $cuerpo, $cabecera)) { echo 'Su mensaje ha sido enviado. De ser necesario, nos pondremos en contacto con Ud.'; } else { echo 'No se pudo enviar el mensaje. Inténtelo nuevamente'; } ?>

Eso pasa cuando lo descargo y despues de haber abierto el archivo envio.php con worpad, ahora cuando lo hago desde aqui en demostracion todo sale ok.

Atentamente

Jose Zevallos
Responder Citando Quote selected text
DiMa Sabeeeeee!
Avatar de DiMaNacho
DiMaNacho esta en línea ahora

Mi pensamiento Güiikero

buen nick!

Mostrar info güiikera +

Realizado: 24-Aug-2010, 11:52 Comentario #3
Te recomiendo que usés Notepad ++ o en su defecto el bloc de notas nomás, otros editores por lo general hacen desastres con distintos caracteres...

En un rato te ayudo bien con eso, ahora estoy en el trabajo y está dificil que pueda probar bien para decirte porque ando en una netbook
Responder Citando Quote selected text
Usuario
Avatar de karelweaver
karelweaver está desconectado

Mi pensamiento Güiikero

Todavía no actualicé mi Status

Mostrar info güiikera +

Realizado: 01-Jun-2011, 04:32 Comentario #4
Hola, buscando buscando encontré este site para la creación de un formulario (excelente explicación por cierto) y al descargar los archivos y usarlos en un site que creé, me sale este error cuando le doy "enviar" al botón del formulario:

Warning: mail() [function.mail]: SMTP server response: 530 SMTP authentication is required. in C:\Domains\enriquevaldes.es\wwwroot\envio.php on line 32
No se pudo enviar el mensaje. Inténtelo nuevamente

Me podéis ayudar por favor???

Muchas Gracias de antemano.
Un Saludo.
Responder Citando Quote selected text
Inglorius Bastard.
Avatar de Cloud 'z
Cloud 'z está desconectado

Mi pensamiento Güiikero

Gabo el azul te convierte en
putita dejate de esoo

Mostrar info güiikera +

Realizado: 01-Jun-2011, 12:22 Comentario #5
Al parecer tú servidor ó host no permite servicio SMPT, La función mail() de PHP nativa no "autentifica" en servidores SMTP que lo requieran, usa otros metodos para enviar e-mail desde php tal como PHP Mailer
http://phpmailer.sourceforge.net , en el cual puedes enviar e-mail sin autenticación, por lo que veo estas en un HOST desde tu casa a lo mejor sea eso lo que tenga el problema de autenticacion, de todas maneras cuando este DiMaNaCho se puede resolver mejor tu problema.

Cloud 'z.
Responder Citando Quote selected text
DiMa Sabeeeeee!
Avatar de DiMaNacho
DiMaNacho esta en línea ahora

Mi pensamiento Güiikero

buen nick!

Mostrar info güiikera +

Realizado: 03-Jun-2011, 20:25 Comentario #6
Luego voy a postear un sistema de mail de contacto que armé con ajax y jquery y sólo precisa php para funcionar, luego es muy flexible tanto en diseño (que incluso una vez que enviás el mail un segundo después de que hiciste clic en enviar, te muestra una confirmación de manera de agradecimiento) como también el contenido del mismo mail que va a recibirse (que inclusive si lo deseás podés hacer que se envíe una copia al que redactó el contenido del mensaje).

Hoy si me dan los tiempos (algo que me juega muy en contra), y si me hacen acordar, posteo eso.
Responder Citando Quote selected text
Respuesta

Etiquetas
buen, cómo, contacto, crear, formulario
LinkBacks (?)
LinkBack to this Thread: http://www.guii.com.uy/offtopic-de-webmaster/8602-crear-formulario-de-contacto-buen-formulario
Escrito Por For Type Fecha
Insertar Php En Expression Web Template This thread Refback 29-Dec-2010 08:07

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Los 100 Discos Mas Vendidos De Los 80 (Parte I) DiMaNacho Musica 1 05-Dec-2009 23:15
Aprendé a escribir y que no te digan anormal, bien fácil DiMaNacho Tutoriales 0 29-Nov-2009 20:13
Bipolar - Cuarteto de Nos 320kb (Mi subida) DiMaNacho CDs 2 27-Nov-2009 02:44
Tutorial de Eclipse, principiantes, para programar en Java elmartin Tutoriales 0 31-Oct-2009 15:19
Chistes para tdo un DIA! bArA.! Entretenimiento 2 16-Oct-2009 18:24


Chat Güiikero!
Loading ...
Empty the chat input field
Show the formatting buttons line (BBCODES) Show the smilies selection line Enable/Disable sound in the chatbox Show the help window
MGC Chatbox Evo v3.2.2 by MGC © 2008-2012
General help
The MGC Chatbox Evo is really easy to use

You can :
  1. Send chats : you just have to enter the text in the dedicated input field and then to validate it by pushing the return key ou by clicking on the OK button.
  2. Format the chats :
  3. once you un-collapse the chatbox formatting toolbar by clicking on the BBCode button, you have access to different formatting options for your chats. You can format a chat by selecting a part (or the totality) of it and then select one of the buttons/list. You can also add empty formatting tags by selecting nothing and clicking one of the buttons/menu thus allowing you to add the chat text afterwards between these tags.*
  4. Access to the different channels : you can have access to different channels restricted to only some usergroupds or for specifics use of the chatbox. The different channels are accessible from the buttons on the left of the chatbox.*
  5. Edit your chats (or others chats) : the edition of a chat can be done by a simple double-click on it.*
  6. Use specific commands : some commands can be accessible in the chatbox depending on the will of the administrator(s) of your forum. These commands let you execute specific actions of formatting, management, etc... You will herebelow the information on the command which are accessible to you. You must notice that you are not forced to use the command prefixes (/command_name) when you use them in the channel they are attached to (except in the general channel).*
* : Depending on the settings chosen by the administrator(s) of the forum, you might not have access to all these features.



Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado


------
Guii en Facebook Guii en Twitter Guii en YouTube!



Guii.com.uy fue desarrollado y diseñado por DMNArts.com
utilizando como base vBulletin (Copyright © 2000-2011 Jelsoft Enterprises Limited.)
no new posts