Formulario de contacto en PHP

Script en PHP para recibir comentarios de tus visitantes

En este tutorial veremos cómo crear un formulario de contacto en PHP. Al finalizar, los usuarios podrán rellenarlo y recibiremos sus comentarios por email.

Formulario HTML

Crearemos un archivo llamado contactar.php que contendrá el formulario de contacto en HTML.

<form action="contactar.php" method="post">
  <p>
    <label for="mensaje">Mensaje</label>
    <textarea name="mensaje"></textarea>
  </p>
  <p>
    <input type="submit" value="Enviar" />
    <input name="accion" type="hidden" value="enviar_comentario" />
  </p>
</form>

En el tag form de html definiremos el método de envío del formulario a POST. También es importante que en el atributo action escribamos el nombre del archivo que se ejecutará cuando el usuario haga clic en el botón de envío. En este caso llamaremos el mismo archivo en el que estamos contactar.php (Aunque no es obligatorio, nuestro script PHP para procesar el formulario también se encontrará en el mismo archivo que el formulario).

Finalmente definiremos un campo invisible "hidden", de nombre accion y valor enviar_comentario que servirá para controlar que el usuario haya ejecutado el formulario.

Script PHP

Primero comprobaremos que la variable acción (La que habíamos añadido en modo invisible en el formulario HTML) tenga valor. Si lo tiene ya podemos procesar los datos y enviar el comentario a una dirección de correo que queramos.

if(isset($_POST['accion']) && $_POST['accion']=="enviar_comentario"){
  $mensaje = addslashes($_POST['mensaje']);
  if (mail("[email protected]","Formulario de Contacto",$mensaje)) {
    echo "Gracias por enviar el email, pronto lo leeremos.";
  } else {
    echo "No se pudo enviar el email.";
  }
} else {
    // Aquí va el formulario HTML
}

Código Completo

A continuación mostramos el código completo del script para un formulario de contacto.

<?php
if (isset($_POST['accion']) && $_POST['accion']=="enviar_comentario") {
  $mensaje = addslashes($_POST['mensaje']);
  if (mail("[email protected]", "Formulario de Contacto", $mensaje)){
    echo "Gracias por enviar el email, pronto lo leeremos.";
  } else {
    echo "No se pudo enviar el email.";
  }
} else {
?>
  <form action="contactar.php" method="post">
    <div>
      <label for="mensaje">Mensaje</label>
      <textarea name="mensaje"></textarea>
    </div>
    <div>
      <input type="submit" value="Enviar" />
      <input type="hidden" name="accion" value="enviar_comentario">
    </div>
  </form>
<?}?>

Si todo ha salido correctamente, se habrá enviado un email a la cuenta correspondiente con el mensaje entrado.