Crear un formulario utilizando PHP

Aquí voy a explicar los mínimos conocimientos que se necesitan para crear un formulario simple utilizando lenguaje HTML y procesarlo con PHP.

Primero, es importante saber que el lenguaje PHP se puede ejecutar únicamente en un servidor.

Es decir, si nunca hiciste nada con PHP, y no tenés una página web subida en un hosting con acceso por FTP, vas a necesitar comenzar por un tutorial de “Primeros pasos en PHP“, o un poco más difícil los que se explican en “La manera correcta”

Es decir que empezamos pensando que ya hiciste algún programita mínimo con PHP.

También, que ya practicaste un poco creando un formulario que no utilice PHP.

Primer paso, el formulario

Para crear un formulario de contacto, por ejemplo, vamos a necesitar dos archivos. En uno va a estar el formulario en sí, en lenguaje HTML. Este podría ser el código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Enviar mensaje</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="enviamail.php" method="post" id="formulario_contacto">
 <label for="nombre">Nombre</label>
 <input name="nombre" id="nombre" type="text" size="40" value=" " />
 
 <label for="correo">Correo electrónico</label>
 <input name="correo" id="correo" type="text" size="40" value=" " />
 
 <label for="mensaje">Escriba su mensaje</label>
 <textarea name="mensaje" id="mensaje" rows="5" cols="30" ></textarea>
 
 <div><input name="enviar" id="enviar" type="submit" value="Enviar mensaje" /></div>
 </form>
</body>
</html>

Los encabezados de HTML y tipo de codificación son obligatorios para crear un documento válido. La parte del formulario comienza en la sentencia form, y en la acción se utiliza el nombre del archivo que va a procesar el formulario (enviarmail.php), que está en lenguaje PHP.

Segundo paso, el programa que procesa los datos del formulario

Este archivo (enviarmail.php) recibe la información enviada al pulsar el botón “Enviar mensaje”. ¿Cómo utiliza esa información? Utilizando $_POST y el nombre del objeto en el formulario. Aquí guardamos los tres valores en tres variables:

$nombre = $_POST[‘nombre‘];
$mail = $_POST[‘correo‘];
$mensaje = $_POST[‘mensaje‘];

Este sería el contenido completo del archivo PHP, al cual le falta mucho trabajo todavía, porque no controla la validez de los datos, no da error si algo sale mal, etc.:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Enviar mensaje</title>
</head>
<body>
<?php
////Tomar el valor recibido y almacenarlo en variables/////
$nombre = $_POST['nombre'];
$mail = $_POST['correo'];
$mensaje = $_POST['mensaje'];
 
///////Configuración del mensaje: destinatario y asunto/////
$mail_destinatario = 'blablablablabla@gmail.com';
$asunto = "Mensaje enviado desde el formulario";
///////Fin configuración//
///En esta próxima línea es donde verdaderamente se envía el mail///
mail ($mail_destinatario, $asunto, $mensaje);
echo "Mensaje enviado"
?>
</body>
</html>

Tercer paso, aprender mucho más

Hacer un formulario que no permita código HTML (para evitar códigos maliciosos), que valide datos (para obligar a completar algunos campos o evaluar el contenido), o que guarde la información de diversas maneras (creando un archivo PDF, un archivo de texto o una base de datos) serán nuestros próximos pasos.

Artículos sobre cómo crear formularios accesibles:

Crear un formulario utilizando PHP

Aquí voy a explicar los mínimos conocimientos que se necesitan para crear un formulario simple utilizando lenguaje HTML y procesarlo con PHP.

Primero, es importante saber que el lenguaje PHP se puede ejecutar únicamente en un servidor.

Es decir, si nunca hiciste nada con PHP, y no tenés una página web subida en un hosting con acceso por FTP, vas a necesitar comenzar por un tutorial de “Primeros pasos en PHP“, o un poco más difícil los que se explican en “La manera correcta”

Es decir que empezamos pensando que ya hiciste algún programita mínimo con PHP.

También, que ya practicaste un poco creando un formulario que no utilice PHP.

Primer paso, el formulario

Para crear un formulario de contacto, por ejemplo, vamos a necesitar dos archivos. En uno va a estar el formulario en sí, en lenguaje HTML. Este podría ser el código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Enviar mensaje</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="enviamail.php" method="post" id="formulario_contacto">
 <label for="nombre">Nombre</label>
 <input name="nombre" id="nombre" type="text" size="40" value=" " />
 
 <label for="correo">Correo electrónico</label>
 <input name="correo" id="correo" type="text" size="40" value=" " />
 
 <label for="mensaje">Escriba su mensaje</label>
 <textarea name="mensaje" id="mensaje" rows="5" cols="30" ></textarea>
 
 <div><input name="enviar" id="enviar" type="submit" value="Enviar mensaje" /></div>
 </form>
</body>
</html>

Los encabezados de HTML y tipo de codificación son obligatorios para crear un documento válido. La parte del formulario comienza en la sentencia form, y en la acción se utiliza el nombre del archivo que va a procesar el formulario (enviarmail.php), que está en lenguaje PHP.

Segundo paso, el programa que procesa los datos del formulario

Este archivo (enviarmail.php) recibe la información enviada al pulsar el botón “Enviar mensaje”. ¿Cómo utiliza esa información? Utilizando $_POST y el nombre del objeto en el formulario. Aquí guardamos los tres valores en tres variables:

$nombre = $_POST[‘nombre‘];
$mail = $_POST[‘correo‘];
$mensaje = $_POST[‘mensaje‘];

Este sería el contenido completo del archivo PHP, al cual le falta mucho trabajo todavía, porque no controla la validez de los datos, no da error si algo sale mal, etc.:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Enviar mensaje</title>
</head>
<body>
<?php
////Tomar el valor recibido y almacenarlo en variables/////
$nombre = $_POST['nombre'];
$mail = $_POST['correo'];
$mensaje = $_POST['mensaje'];
 
///////Configuración del mensaje: destinatario y asunto/////
$mail_destinatario = 'blablablablabla@gmail.com';
$asunto = "Mensaje enviado desde el formulario";
///////Fin configuración//
///En esta próxima línea es donde verdaderamente se envía el mail///
mail ($mail_destinatario, $asunto, $mensaje);
echo "Mensaje enviado"
?>
</body>
</html>

Tercer paso, aprender mucho más

Hacer un formulario que no permita código HTML (para evitar códigos maliciosos), que valide datos (para obligar a completar algunos campos o evaluar el contenido), o que guarde la información de diversas maneras (creando un archivo PDF, un archivo de texto o una base de datos) serán nuestros próximos pasos.

Artículos sobre cómo crear formularios accesibles:

Mi primer formulario: simple pero inútil

Crear un formulario completamente en HTML es bastante sencillo, aunque no es muy útil porque lo único que hace es enviar un mail con un formato plano, sólo si quien utiliza el formulario tiene configurado un cliente de correo, lo cual no es nada habitual en estos días.
Para empezar, se puede copiar el siguiente ejemplo y pegar en un editor de texto, guardando el archivo con extensión .html

<FORM Action="mailto:direccion@blabla.com?Subject=Formulario" METHOD="POST">
 <p>Su nombre:</p>
 <p><INPUT id="Nombre" name="Nombre" type="text"></p>
 <p>Mensaje:</p>
 <p><TEXTAREA name="mensaje" id="mensaje"></TEXTAREA></p>
 <INPUT type="submit" value="Enviar el formulario">
 </FORM>

Debemos copiar este código en un archivo de texto plano (no un procesador de textos sino un editor como Geany o el bloc de notas) y guardarlo con extensión .html. Después, hacemos doble clic en ese archivo y se abrirá el formulario en el navegador.

Formulario inútil visto en el navegador

La estructura del formulario es:

<FORM Action=……..aquí la acción que realizará el formulario……….. METHOD=”POST”>

……….aquí los elementos del formulario: botones, textos simples, áreas de texto….

</FORM>

En el primer renglón se define la acción que se realizará al pulsar “Enviar”. En este caso se intentará enviar un mail (Mail To = mailto) a la dirección indicada, con un asunto (Subject):

<FORM Action=”mailto:direccion@blabla.com?Subject=Formulario” METHOD=”POST”>

Después se define un cuadro de texto simple (type=”text”), de un solo renglón:

<p>Nombre:</p>
<p><INPUT id=”Nombre” name=”Nombre” type=”text”></p>

Y otro cuadro de texto pero de múltiples líneas (TEXTAREA):

<p>Mensaje:</p>
<p><TEXTAREA name=”mensaje” id=”mensaje”></TEXTAREA></p>

El último elemento es el botón “Enviar” (type=”submit”), que realizará la acción indicada en la apertura del formulario:

<INPUT type=”submit” value=”Enviar el formulario”>
</FORM>

Este formulario es bastante inútil porque el navegador puede intentar abrir una ventana en un cliente de correo electrónico que no esté configurado, pero es la primera aproximación para comprender cómo funcionan. Para hacer un formulario que realmente sirva, el próximo post muestra un primer paso para crear un formulario PHP.

Artículos sobre cómo crear formularios accesibles:

Mi primer formulario: simple pero inútil

Crear un formulario completamente en HTML es bastante sencillo, aunque no es muy útil porque lo único que hace es enviar un mail con un formato plano, sólo si quien utiliza el formulario tiene configurado un cliente de correo, lo cual no es nada habitual en estos días.
Para empezar, se puede copiar el siguiente ejemplo y pegar en un editor de texto, guardando el archivo con extensión .html

<FORM Action="mailto:direccion@blabla.com?Subject=Formulario" METHOD="POST">
 <p>Su nombre:</p>
 <p><INPUT id="Nombre" name="Nombre" type="text"></p>
 <p>Mensaje:</p>
 <p><TEXTAREA name="mensaje" id="mensaje"></TEXTAREA></p>
 <INPUT type="submit" value="Enviar el formulario">
 </FORM>

Debemos copiar este código en un archivo de texto plano (no un procesador de textos sino un editor como Geany o el bloc de notas) y guardarlo con extensión .html. Después, hacemos doble clic en ese archivo y se abrirá el formulario en el navegador.

Formulario inútil visto en el navegador

La estructura del formulario es:

<FORM Action=……..aquí la acción que realizará el formulario……….. METHOD=”POST”>

……….aquí los elementos del formulario: botones, textos simples, áreas de texto….

</FORM>

En el primer renglón se define la acción que se realizará al pulsar “Enviar”. En este caso se intentará enviar un mail (Mail To = mailto) a la dirección indicada, con un asunto (Subject):

<FORM Action=”mailto:direccion@blabla.com?Subject=Formulario” METHOD=”POST”>

Después se define un cuadro de texto simple (type=”text”), de un solo renglón:

<p>Nombre:</p>
<p><INPUT id=”Nombre” name=”Nombre” type=”text”></p>

Y otro cuadro de texto pero de múltiples líneas (TEXTAREA):

<p>Mensaje:</p>
<p><TEXTAREA name=”mensaje” id=”mensaje”></TEXTAREA></p>

El último elemento es el botón “Enviar” (type=”submit”), que realizará la acción indicada en la apertura del formulario:

<INPUT type=”submit” value=”Enviar el formulario”>
</FORM>

Este formulario es bastante inútil porque el navegador puede intentar abrir una ventana en un cliente de correo electrónico que no esté configurado, pero es la primera aproximación para comprender cómo funcionan. Para hacer un formulario que realmente sirva, el próximo post muestra un primer paso para crear un formulario PHP.

Artículos sobre cómo crear formularios accesibles:

Formularios PHP

En este último tiempo estuve investigando y aprendiendo muchísimo sobre formularios programados en PHP.

Hasta ahora sólo sabía crear formularios que enviaran los datos por mail a quien respondió el formulario (“Ud. ha enviado los datos bla bla”) y a quien recopila los datos (“Le ha llegado la siguiente respuesta bla bla”). Ahora aprendí a:

-Crear un formulario que cree un archivo PDF para descargar, y que deje una copia en el servidor

-Crear un formulario que escriba los datos en un archivo de texto en el servidor

-Crear un formulario que guarde los datos en una base de datos en el servidor

Por supuesto, a todo esto hay que agregarle cosas como validación de datos:

-Controlar que los datos sean más o menos los que se esperan

-Controlar que no se envíe código HTML en el formulario (código malicioso)

-Controlar que la dirección de correo tenga arroba y punto (más o menos que parezca una dirección de correo)

Y lo último que quiero aprender pero aún no logré todo lo que quiero:

-Utilizar cookies para sesiones de usuarios

¡Empezamos en el próximo post!