05 enero 2010

Adobe kuler con Dreamweaver CS4

Adobe kuler

04 enero 2010

Validar formulario con Dreamweaver CS4

03 enero 2010

Mandar formulario con PHP mail (II)


Puede obtener el código del script myform.php en este artículo

Mandar formulario con PHP mail

En otras entradas de este blog se han tratado los aspectos de como gestionar un formulario a través de un cliente de correo y del uso de scripts cgi tipo FormMail. Ambos sistemas tienen sus problemas propios: en el caso de correo, que no todos los usuarios, ni siquiera la mayoría usan un programa de correo tipo Outlook; en el caso de los scripts CGI, que no todos los servidores los permiten o que son a veces confusos de configurar.
Hoy en día están más impuestos los scripts basados en PHP que utilizan la función mail(). Problema: debe asegurarse de que su proveedor de alojamiento web admite soporte para PHP y que, además, tiene activada la función mail. Si, además busca un servidor gratuito con estas características, no encontrará muchos. Puede probar en 260mb.com, como es nuestro caso.
No entraremos en la creación del formulario, pues damos por supuesto que conoce los diversos elementos que pueden incluirse, como campos de texto, listas y menús, casillas de verificación, botones, etc.
Trataremos solo de su gestión, esto es, de pasar las variables que conforman el formulario a un script denominado myform.php que se encargará de procesar estos campos y mandar un correo electrónico al destinatario deseado.
El script que se propone a continuación es una mejora de scripts que se encuentran en internet en páginas tales como lawebdelprogramador.com y en la referencia sobre PHP en php.net, en concreto, http://www.php.net/manual/en/function.mail.php, donde podremos aprender más opciones sobre la función mail.
Así, el script propuesto (por el usuario de internet llamado MatedeCoca) es el siguiente:

<?php
$field_name = array_keys($_POST);
$value_name = array_values($_POST);

for ($i=0;$i<count($field_name);$i++)
{
$msg .= "".$field_name[$i].": ".$value_name[$i]."\n\n";
}

$recipient = "sudireccion@decorreo.com"; // el correo donde desea recibir elcontenido del formulario
$subject = "El asunto"; // el asunto del correo que usted recibirá y que puede ser "petición" o "consulta" o algo por el estilo

$headers = "From: Su dominio debe aparecer aquí <http://sudominio.com>\n"; // quien lo manda y el dominio
$headers .= "Cc: otradireccion@decorreo.com\r\n"; // (opcional) dirección de quien recibirá una copia del formulario

mail($recipient, $subject, $msg, $headers);// mandamos el mail con los todos los datos
header('location:confirmacion.html'); //(opcional) así vamos a la página de confirmación tras haber mandado el formulario (debe haberse creado una página denominada confirmacion.html o si no, esta línea debe eliminarse).
?>

En el formulario debe aparecer la línea en el encabezado del formulario de la siguiente forma:

<form action="myform.php" method="post">

También es de mencionar que todo este script puede incluirse dentro de la propia página del formulario como un elemento PHP. Así, el formulario podría contener elementos HTML, tales como el propio formulario y elementos PHP incluidos. Para ello la página habría de guardarse con la extensión *.php y la acción debería llamarse a sí misma. Esto es, si el formulario con el script se guarda como formulario.php, en la línea action debería aparecer action="formulario.php", es decir, se llamaría a sí misma o lo que es igual, al script PHP que llevaría en el seno de la propia página.
Preferimos no hacerlo de esta forma, ya que así las direcciones de correo que usemos para recibir los contenidos del formulario no estarán disponibles en el formulario directamente, que es el primer lugar donde buscan los bots que se dedican a cazar direcciones de correo para usarlas como objetivos de Spam.
El script anterior lo que hace es recopilar los nombres y valores de todos los campos del formulario, (incluidos los campos ocultos), pasarlo a las variables PHP correspondientes, construir con todas ellas un mensaje denominado $msg, mandar dicho mensaje al recipient con la función mail y, por último acabar en una página de confirmación del envío denominada confirmation.html. En caso de no existir dicha página el visitante acabaría en la propia página del formulario. Puede verse un ejemplo en acción en el videotutorial relacionado.