Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Formulario de contacto en php
#1
navegando en la rede me he encontrado esto que a algunos les puede venir muy bien. Aqui lo dejo por si os sirveGuiño

Para un formulario de contacto te hacen falta 4 archivos: 3 php y uno en java script. Los vamos a llamar:
contact.php
email.php
send.php
var.js

Vamos al lío. Abre un editor de texto plano y copia el siquiente código:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML[img]http://images.alexsancho.name/v4/help.png[/img] 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD[img]http://images.alexsancho.name/v4/help.png[/img]/xhtml1-strict.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
        <head profile="http://gmpg.org/xfn/1">
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                <title>Formulario de Contacto</title>
                <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
                <script type="text/javascript">
                function stoperror(){
                        return true
                }
                window.onerror=stoperror
                </script>
                <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
                </head>
                <body>
        <div id="contactform">
                <h1>Formulario de Contacto</h1>
                <form id="contact-form" method="post" onsubmit="return emailCheck(this.email.value);" action="email.php">
                                <fieldset>
                                <legend>Datos Personales &raquo;</legend>
                        <div>
                                <label for="visitorname">
                                        <span style="color:#c00;">*</span>Nombre:
                                </label>
                                        <input type="text" name="name" id="visitorname" title="Tu Nombre" />
                                </div>
                                <div>
                                        <label for="visitorsurname">
                                                <span style="color:#c00;">*</span>Apellidos:
                                        </label>
                                        <input type="text" name="surname" id="visitorsurname" title="Tu Apellido" />
                                </div>
                                <div>
                                        <label for="visitormail">
                                                <span style="color:#c00;">*</span>Direcci&oacute;n de correo:
                                        </label>
                                <input type="text" name="email" id="visitormail" value="<?php echo $email; ?>" title="Tu dirección de correo" />
                        </div>
                        <div>
                                <label for="url">Página Web:</label>
                                        <input type="text" name="url" id="url" class="text" title="Tu página web" />
                                </div>
                           <div>
                                   <label for="phone">Teléfono:</label>
                                        <input type="text" name="phone" id="phone" class="text" title="Tu número de telefono" />
                                </div>
                        <div>
                                <label for="postcode">Codigo Postal:</label>
                                <input type="text" name="postcode" id="postcode" class="text" title="El codigo postal de tu localidad" />
                        </div>
                        <div>
                                <input type="submit" id="submit" name="send" value="Enviar &raquo;" title="Pulsa una vez para enviar el mensaje, y espera a la pantalla de confirmación" />
                        </div>
                </fieldset>
                <fieldset>
                <legend>Envianos tu Mensaje &raquo;</legend>
                        <div>
                           <label for="subject">
                                <span style="color:#c00;">*</span>Motivo del mensaje:
                           </label>
                        <input type="text" name="sub" id="subject" title="El motivo de tu mensaje" />
                </div>
                <div>
                        <label for="notes">
                                <span style="color:#c00;">*</span>Cuerpo del Mensaje:
                        </label>
                        <textarea name="text" id="notes" rows="" cols="" onkeyup="val=this.value; if (val.length > 800) { alert('Lo siento, has sobrepasado el limite de 800 caracteres'); this.value = val.substring(0,800); }  this.form.count.value=800-parseInt(this.value.length); "><?php echo $text; ?></textarea>
                </div>
                <div>
                        <label for="count">Caracteres disponibles:</label>
                                <input type="text" name="count" id="counter" value="800" size="2" />
                                <?php $text_len = preg_match_all('/./', $str, $dummy); ?>
                        </div>
                </fieldset>
           </form>
                <p><span style="color:#c00;">*</span>Campos Obligatorios</p>
                <p><span style="color:red;font-weight:bold;"><?php echo $error ?></span></p>
                <script type="text/javascript" src="var.js"></script>
                </div>
   </body>
   </html>

guárdalo con el nombre "contact.php"

Ahora crea otro archivo con el editor de texto plano y copia el siguiente código:

Código:
<?php
        if (empty($name)) $error .= "No has introducido tu nombre";
        if (empty($surname)) $error .= "No has introducido tu apellido";
        if (empty($email)) $error .= "No has introducido tu dirección de e-mail";
        if (empty($sub)) $error .= "No has introducido un titulo para el mensaje";
        if (empty($text)) $error .= "No has escrito nada en el cuerpo del mensaje<br/>";
        $str = $text;
        $text_len = strlen($str);
        if($text_len > 800) {
            $error .= "Lo siento, has superado el maximo de 800 caracteres en el cuerpo del mensaje. El numero total de caracteres es $text_len - por favor, acorta tu mensaje.";
        }
        if($email) {
            if(isset($_POST['email'])) {
                if (preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+@([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i',trim($email))) {
                } else {
                    $error .= "Tu dirección de e-mail contiene un error.";
                }
                $ok = TRUE;
                $ok = eregi( "^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email,
      $check);
                $ok = getmxrr(substr(strstr($check[0], '@'), 1), $dummy);
                if($ok === false) {
                    $host = substr($email, strpos($email, '@') + 1);
                    if(gethostbyname($host) != $host) {
                        $ok = true;
                    }
                    if ($ok != true) {
                        $error .= "La dirección de e-mail no parece correcta, por favor, compruebalo";
                    }
                }
            }
        }
        if($error) {
            include("index.php");
        } else {
             include("email.php");
        }
    ?>

Guárdalo con el nombre "send.php"

Como antes, abrimos un nuevo documento en eleditor de texto plano y pegamos el siguiente código:

Código:
<!DOCTYPE html PUBLIC "-//W3C[img]http://images.alexsancho.name/v4/help.png[/img]//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">[img]http://images.alexsancho.name/v4/help.png[/img][img]http://images.alexsancho.name/v4/help.png[/img][img]http://images.alexsancho.name/v4/help.png[/img]
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
    <head profile="http://gmpg.org/xfn/1">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Gracias por tu mensaje.</title>
    <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    </head>
    <body>
    <div id="contactform">
    <?php
    $headers = "From: $email";
      $message .= "
      De: $name $surname
      E-Mail: $email
      Telefono: $phone
      Codigo Postal: $postcode
      Pagina Web: $url
      Desde : $title
      ____________________________________
    $text
    ";
    $message2 .= "
      Gracias por enviar el mensaje con el sujeto: $sub.\n
      Para tu referencia, se ha añadido el texto original del mensaje al final de este correo.\n
      Tu mensaje original era
      $text
    ";
      $headers2 .= "From: [email protected]\n";
      $sub2.="Re: $sub";
    ?>
    <h2>Gracias!</h2>
    <p>Tu mensaje ha sido enviado, usando la dirección de remitente </p>
    <p><span style="color:red;font-size:150%;font-weight:bold;"><?php print $email; ?></span></p>
    <p>Si no es correcto,
    <script type='text/javascript'>
      document.write('<a href="javascript:history.go(-1);">vuelve atras</a>');
    </script>
    <noscript>vuelve atras</noscript> y envialo de nuevo</p>
    <script type='text/javascript'>
      document.write('<p class="details"><a href="javascript:history.go(-2);">Volver a la página de inicio.</a></p>');
    </script>
    <script type='text/javascript'>
      setTimeout('history.go(-2)', 9000);
    </script>
    <noscript>
    <p class="details">Pulsa el boton "atras" en tu navegador para volver a la página anterior.</p>
    </noscript>
    <?php
      $message = stripslashes($message);
      $message2 = stripslashes($message2);
      $message = strip_tags ($message);
      $message2 = strip_tags ($message2);
      // RECUERDAR CAMBIAR LA DIRECCION DE CORREO
      mail("[email protected]", $sub, $message, $headers);
      mail($email, $sub2, $message2, $headers2);
      ?>
    </div>
    </body>
    </html>

Guárdalo con el nombre "email.php"

Por último, creas otro archivo con el mismo editor y pegas lo siguiente:

Código:
1.


   2.    function emailCheck (emailStr) {
   3.    var checkTLD=1;
   4.    var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
   5.    var emailPat=/^(.+)@(.+)$/;
   6.    var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
   7.    var validChars="\[^\\s" + specialChars + "\]";
   8.    var quotedUser="(\"[^\"]*\")";
   9.    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  10.    var atom=validChars + '+';
  11.    var word="(" + atom + "|" + quotedUser + ")";
  12.    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  13.    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  14.    var matchArray=emailStr.match(emailPat);
  15.    if (matchArray==null) {
  16.    alert("Tu dirección de correo no aparece o es incorrecta (comprueba @ y .'s)");
  17.    return false;
  18.    }
  19.    var user=matchArray[1];
  20.    var domain=matchArray[2];
  21.    for (i=0; i<user.length; i++) {
  22.    if (user.charCodeAt(i)>127) {
  23.    alert("Tu dirección de correo contiene caracteres no validos.");
  24.    return false;
  25.       }
  26.    }
  27.    for (i=0; i<domain.length; i++) {
  28.    if (domain.charCodeAt(i)>127) {
  29.    alert("El dominio de la dirección introducida contiene caracteres no validos.");
  30.    return false;
  31.       }
  32.    }
  33.    if (user.match(userPat)==null) {
  34.    alert("La dirección de correo parece incorrecta, por favor compruebalo.");
  35.    return false;
  36.    }
  37.    var IPArray=domain.match(ipDomainPat);
  38.    if (IPArray!=null) {
  39.    for (var i=1;i<=4;i++) {
  40.    if (IPArray[i]>255) {
  41.    alert("La dirección IP de destino no es correcta!");
  42.    return false;
  43.       }
  44.    }
  45.    return true;
  46.    }
  47.    var atomPat=new RegExp("^" + atom + "$");
  48.    var domArr=domain.split(".");
  49.    var len=domArr.length;
  50.    for (i=0;i<len;i++) {
  51.    if (domArr[i].search(atomPat)==-1) {
  52.    alert("La dirección de correo parece incorrecta, por favor compruebalo, incluyendo el uso incorrecto de signos de puntuación, comas , o puntos [.] al final de la dirección.");
  53.    return false;
  54.       }
  55.    }
  56.    if (checkTLD && domArr[domArr.length-1].length!=2 &&
  57.    domArr[domArr.length-1].search(knownDomsPat)==-1) {
  58.    alert("Tu dirección de correo debe terminar en un dominio o dos letras " + "país.");
  59.    return false;
  60.    }
  61.    if (len<2) {
  62.    alert("Falta el nombre del host en tu dirección de correo - compruebalo. O debes de haber añadido un espacio en blanco al final de la dirección - corrije el error e intentalo de nuevo.");
  63.    return false;
  64.    }
  65.    return true;
  66.    }
  67.

Ahora lo tienes que guardar como "var.js"

Edita los los ficheros var.js, send.php y email.php para cambiar las direcciones de correo por las tuyas propias y personalizar los mensajes de error.

Aquí tienes una página de ejemplo

Ten en cuenta, que aunque está funcional, los mensajes solo se recibiran en la dirección de correo que pongas como remite, si deseas ponerte en contacto con el autor, usa el formulario que hay habilitado en el sitio para tal efecto. Nota: para que el formulario funcione hay que tener la opcion “register_globals” habilitada en el php.ini

Fuente
WWW
#2
vaya gran tuto, para los que no utilizan cms

GRACIAS papi pro el aporte Guiño
[Imagen: Bann.png]
WWW
#3
Lo llevo buscando meses!!

Luego lo pruebo a ver si es como el que yo quiero!!

Gracias Lengua
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#4
De nada, luego comentais a ver si sirve Guiño
WWW
#5
Ya lo he hecho, ahora solo falta inegrarlo a la web, si me dijeras como se hace... Que no sé si se hacerlo :S
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#6
papi escribió:Edita los los ficheros var.js, send.php y email.php para cambiar las direcciones de correo por las tuyas propias y personalizar los mensajes de error.
uffff, eso ya son palabras mayores, yo me imagino que en esos archivos debes poner los datos de tu web y simplemente subir los archivos a la raiz de ella Guiño

Por lo que veo en la web, debes guardar los archivos en el mismo luga donde guardas el archivo html
WWW
#7
Ok, pero si pudieras buscar algún tutorial... Es que no es para un CMS, si no para un web totalmente casera...

Alguien que me ayude con un código HTML por que no encuentro la solución...
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#8
Otro método más sencillo es el siguiente:

Los formularios pueden ubicarse en una página usando tablas (algo recomendable para una presentación profesional). Este es un ejemplo que resume los puntos precedentes, mostrándole cómo disponer un formulario en una página Web mediante una tabla:

Código:
<FORM method=post action="cgi-bin/script.pl">
Registro de un usuario
<TABLE BORDER=0>
<TR>
    <TD>Apellido</TD>
    <TD>
    <INPUT type=text name="apellido">
    </TD>
</TR>

<TR>
    <TD>Nombre</TD>
    <TD>
    <INPUT type=text name="nombre">
    </TD>
</TR>

<TR>
    <TD>Género</TD>
    <TD>
    Hombre:
Mujer: <INPUT type=radio name="género" value="M">
    <br>Mujer: <INPUT type=radio name="género" value="F">
    </TD>
</TR>

<TR>
    <TD>Ocupación</TD>
    <TD>
    <SELECT name="ocupación">
        <OPTION VALUE="profesor">Profesor</OPTION>
        <OPTION VALUE="estudiante">Estudiante</OPTION>
        <OPTION VALUE="ingeniero">Ingeniero</OPTION>
        <OPTION VALUE="jubilado">Jubilado</OPTION>
        <OPTION VALUE="otro">Otro</OPTION>
    </SELECT>
    </TD>
</TR>
<TR>
    <TD>Comentarios</TD>
    <TD>
    <TEXTAREA rows="3" name="comentarios">
    Escriba aquí sus comentarios</TEXTAREA>
Enviar
    </TD>
</TR>

<TR>
    <TD COLSPAN=2>
    <INPUT type="submit" value="Enviar">
    </TD>
</TR>
</TABLE>
</FORM>

para más información visita en post original

y si no quieres complicarte la vida siempre tienes la posibilidad de aprovecharte de herramientas web gratuitas como la que hay aqui
<!-- m --><a class="postlink" href="http://www.tooler.com.ar/2007/05/21/contactify-agrega-un-formulario-de-contacto-a-tu-web/">http://www.tooler.com.ar/2007/05/21/con ... -a-tu-web/</a><!-- m -->

Otro manualque parece bueno lo tienes en <!-- m --><a class="postlink" href="http://www.tallerwebmaster.com/Tutorial-Formulario-de-Contacto-enviar-mail-con-PHP-c-43.html">http://www.tallerwebmaster.com/Tutorial ... -c-43.html</a><!-- m -->
WWW
#9
Wow... Papi aquñi te has lucido!!

Gracias Guiño
[Imagen: firmatwitter.png][Imagen: firmataq.png]
WWW
#10
De nada DJ, pa eso tamos Guiño
WWW


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
Bombilla [Tutorial] Aprender AJAX – Procesar un Formulario con XMLHttpRequest amner 1 42 14-03-2017, 03:07 PM
Último mensaje: Carlos Mendoza
  Como enviar un formulario por correo con php Rolando Sanchez 1 647 04-02-2016, 09:16 PM
Último mensaje: jfuentes7
  Formulario de inicio de session con html5 luis.ml 0 783 16-08-2015, 12:52 AM
Último mensaje: luis.ml
  Cómo hacer un formulario con validación en HTML5 imgur 0 264 19-11-2014, 10:24 PM
Último mensaje: imgur
  Paginas de Contacto [Inspiración] Kupula 6 468 01-10-2013, 03:30 PM
Último mensaje: JUNIOR26
  Formulario de registro ChatOrbe 1 20.533 22-04-2013, 01:36 PM
Último mensaje: Boreas
  (tuto) como crear un formulario de contacto con php y html Glock977 8 3.223 01-12-2012, 03:51 PM
Último mensaje: Drod
  pasar valor oculto sin usar formulario esteban 4 739 06-07-2012, 05:12 PM
Último mensaje: papi
  Envío de datos de un formulario con PHP (CLASE 5) HILARION 3 720 03-01-2012, 02:33 AM
Último mensaje: djblack120



Usuarios navegando en este tema: 1 invitado(s)