junio 21, 2011 0

Crear un formulario de contacto en PHP

Por en Internet y Tecnología

Valencia, 21/06/2011, G.B.
Por una extraña razón que todavía no he averiguado, dejó de funcionarme la página de contacto de los directorios Webcontenidos.es e INDAGA.net, ambos realizados con el script de directorios de enlaces PHP Link Directory (php LD). Eso fue desde el cambio de servidor.

Bien, como no he podido solucionarlo por ahora – tampoco lo he intentado demasiado ni tengo los conocimientos sobre php LD necesarios, debo confesar- he buscado en la Red una solución y la he encontrado. Para crear un formulario de contacto en php, simplemente necesitas un archivo HTML (en mi caso contacta.html) y un archivo en php que realice la acción. He encontrado el código en la siguiente dirección:http://paratupagina.com/topic/21-como-crear-un-formulario-de-contacto-en-php/ Desde aquí, muchas gracias. Envío también trackback.

Sólo he tenido que hacer unos pequeños cambios y una pequeñísima corrección en el enlace de retorno a la página. Desde luego, tengo que personalizarlo mucho más todavía, pero hoy no. Os dejo el código:

Los archivos necesarios:

1.- Página contacta.html, en donde estará el formulario de contacto propiamente dicho.
2.- Archivo PHP enviar_correo.php, en donde está la lógica o programación, incluyendo el control de errores.

1) contacta.html (inserto a partir del body, pero lo que necesitas es el código del formulario <form></form>)
<body>
<div align=”center”>
<form action=”enviar_correo.php” method=”post”>
<p>
<br /><br /><br /><br />
<b>Tu Nombre:<b>
<input name=”name” type=”text” id=”name” size=”40″ />
</p>
<p><b>Tu email:</b>
<input name=”email” type=”text” id=”email” size=”42″ />
</p><br />
<p>
<b> Escribe tu mensaje o consulta:</b>
</p>
<textarea name=”query” cols=”46″ rows=”20″ id=”query”></textarea>
<p>
<input name=”submit” type=”submit” value=”Enviar mensaje” />
</p>
</form><br /><br />
<p align=”center”> Si el correo se ha enviado correctamente, <br />volver&aacute;s a la p&aacute;gina principal del directorio</p><br /><br />
<p><a href=”http://webcontenidos.es/directorio/” alt=”LO QUE SEA”>LA URL DE TU WEB</a>
</div>

</body>

2) enviar_correo.php

<?

/* Para tu página web */
$mailto = ‘tucorreo@tudominio.com’; // insert the email address you want the form sent to
/* Inserta la dirección de email en donde quieras recibir el mensaje enviado desde tu página */
$returnpage = ‘/’; // insert the name of the page/location you want the user to be returned to
/* Inserta la dirección en dnde quieras que el usuario regrese tras el envío del mensaje. Crearé una página simple en html de “envío correcto” */
$sitename = ‘[EL NOMBRE DE TU PÁGINA]‘; // insert the site name here, it will appear in the subject of your email
/* Inserta el nombre de tu sitio. Aparecerá en el asunto del email que recibas*/
/* Do not edit below this line unless you know what you’re doing */
/* NO edites el código que sigue a menos que no sepas lo que haces*/

$name = $_POST['name'];
$email = $_POST['email'];
$enquiry = stripslashes($_POST['query']);

if (!$name) {
print(“<strong>Error:</strong> Escribe tu nombre.<br/><br/><a href=’javascript:history.go(-1)’>Volver</a>”);
exit;
}
if (!$email) {
print(“<strong>Error:</strong> Por favor, escribe tu direcci&oacute;n de e-mail.<br/><br/><a href=’javascript:history.go(-1)’>Volver</a>”);
exit;
}
if (!$enquiry) {
print(“<strong>Error:</strong> Por favor, escribe un mensaje.<br/><br/><a href=’javascript:history.go(-1)’>Volver</a>”);
exit;
}
if (!eregi(“^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}”, $email)){
print(“<strong>Error:</strong> Este email no es v&aacute;lido, por favor escribe una direcci&oacute;n de e-mail v&aacute;lida<br/><br/><a href=’javascript:history.go(-1)’>Volver</a>”);
exit;
}
$message = “\n$name te ha enviado el siguiente mensaje:\n\n$enquiry\n\n Sus datos son:\n\nNombre: $name\nCorreo: $email\n\n”;
mail($mailto, “$sitename Contact Form Enquiry from $name”, $message, “From: $email”);
header(“Location: ” . $returnpage);
?>

Funciona perfectamente. Puedes verlo aquí: http://webcontenidos.es/directorio/contacta.html
En breve cambiaré también el de INDAGA.net.

Posts relacionados:

WordPress instalado en modo local bajo XAMPP
Archivo .htaccess para php LD
Rescantando INDAGA y Aprendiendo PHP

Tags (etiquetas): , , ,


1&1 Programa de afiliados
Hosting recomendado

No hay respuestas a “Crear un formulario de contacto en PHP”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: No hay resumen disponible para esta anotación…

  2. Manel dice:

    Hola buenas tardes,

    estoy intentando realizar el formulario de contacto con el código que indicas y siempre me devuelve el mismo error:

    Parse error: syntax error, unexpected ‘@’ in /home/rentingh/public_html/club/enviar_correo.php on line 5

    ¿Me podrías indicar a que es debido?, te lo agradeceré eternamente.

    Saludos,

    Manel.

    • admin dice:

      Buenas noches. Parece ser que el código o no está bien copiado o hay algún tipo de error en el servidor. Creo más bien que es por el código: hay algo incorrecto en la llínea 5 de l código que has utilizado. El mío funciona correctamente .Copia y pega este en un editor de texto plano, como el bloc de notas en Windows o gedit en Linux (o el que prefieras). cambiando el texto en mayúsculas por tu configuración (correo, página de retorno, etc.). Luego salva el archivo como lo que quieras .php y súbelo al servidor. Prueba y me dices. Te adjunto el código, pero date cuenta que donde aparecen enlaces, como Volver, es Javascript que WordPress está interpretando, sería a href=’history.go(-1)’ rel=”nofollow” entre las etiquetas < y >. Aquí va:

      <?
      /* Para PON_AQUI_EL_ASUNTO o nada, es sólo un comentario, no se visualizará */
      $mailto = 'PON_TU_DIRECCION_DE_CORREO_AQUI'; // insert the email address you want the form sent to
      $returnpage = 'PON_AQUI_LA_PAGINA_A_LA_QUE_QUIERAS_VOLVER'; // insert the name of the page/location you want the user to be returned to
      $sitename = '[PON_AQUI_EL_TITULO_DE_LA_PAGINA]'; // insert the site name here, it will appear in the subject of your email
      /* Do not edit below this line unless you know what you're doing */

      $name = $_POST['name'];
      $email = $_POST['email'];
      $enquiry = stripslashes($_POST['query']);

      if (!$name) {
      print("Error: Escribe tu nombre.Volver“);
      exit;
      }

      if (!$email) {
      print(“Error: Por favor, escribe tu dirección de e-mail.Volver“);

      exit;

      }

      if (!$enquiry) {
      print(“Error: Por favor, escribe un mensaje.Volver“);

      exit;

      }

      if (!eregi(“^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}”, $email)){

      print(“Error: Este email no es válido, por favor escribe una dirección de e-mail válidaVolver“);

      exit;

      }

      $message = “\n$name te ha enviado el siguiente mensaje:\n\n$enquiry\n\n Sus datos son:\n\nNombre: $name\nCorreo: $email\n\n”;

      mail($mailto, “$sitename Contact Form Enquiry from $name”, $message, “From: $email”);

      header(“Location: ” . $returnpage);

      ?>

      Espero que te sirva,. En caso contrario, dímelo y veremos qué es lo que está pasando.

      Salu2,

      Guillermo

Deja un comentario