Scour Design. Tutoriales de Flash, ActionScript, CSS, Photoshop, ImageReady...

\n"; } } } lecturas();

          


Formulario de contacto en Flash y PHP

      

Autor: Carlos Carmona

Actualización III:

Me habeis mandado ya varios correos preguntandome como se configura el archivo php2excel_csv.php, así que paso a explicarlo aquí para quien pueda interesar:

El archivo php2excel_csv.php es el encargado de recoger lo que ha escrito el usuario en el formulario (los datos de las variables) y pasarselo al archivo libmail.php para que este haga el resto. Pero este archivo hay que configurarlo, dandole los datos de nuestro correo y las variables que hayamos declarado en Flash.

Donde esté la página que cargará el formulario, en esa misma carpeta en vuestro servidor, debe estar también el archivo swf (Flash), los 2 archivos de php, libmail.php y php2excel_csv.php y el archivo formulario.csv

Os pongo y comento aquí el archivo en cuestión (php2excel_csv.php):

<?PHP
$archivo = fopen("formulario.csv" , "w");
if ($archivo) {
//variables que hayamos declarado en la pelicula de flash
$datos="Nombre del autor: $nom
+ Su email:,$email
+ Su empresa:,$empresa
+ Motivo del contacto:,$contacto
+ Mensaje:,$mensaje
";
fputs ($archivo, $datos);
}
echo $pulsado;
fclose ($archivo);
?>
<?php
include "/articulos/tutoriales/flash/libmail.html";
$m= new Mail;
//correo desde el que se enviará
$m->From( "correo@correo.com" );
//correo al que se enviará. Se puede poner en ambos lugares el mismo correo
$m->To( "correo@correo.com" );
//el subject del email, será el email que haya escrito el usuario, salvo que lo cambiemos, pon lo que quieras
$m->Subject( "$email" );
//variables que hayamos declarado en la pelicula de flash
$m->Body( "Nombre del autor:
$nom
Su email:
$email
Su empresa:
$empresa
Motivo del contacto:
$contacto
Mensaje:
$mensaje
" );
//Si queremos que el correo se envíe a más cuentas de correo, quitar las barras de comentario y especificar los correos
//$m->Cc( "alguien@algun_server.au");
//$m->Bcc( "alguien_mas@otro_server.es");
$m->Priority(1) ;
$m->Attach( "formulario.csv", "application/vnd.ms-excel", "attachment" );
$m->Send();
?>

Lo que está de color azul es lo que hay que cambiar, os comento por partes.

Donde dice:

$datos="Nombre del autor: $nom
+ Su email:,$email
+ Su empresa:,$empresa
+ Motivo del contacto:,$contacto
+ Mensaje:,$mensaje
";

Eso es el archivo adjunto que os llegará con el email, ahí hay que poner el nombre de las variables que pusimos en flash ($nom, $email, $empresa, etc...) y el texto de introducción antes de cada campo.

Si en el campo 'Nombre' el usuario puso Pepe García, en 'Email' puso pepe@pepe.com, en empresa puso DecoHogar, etc..., en el correo que nos llegue, pondrá:

Nombre del autor: Pepe García
Su email: pepe@pepe.com
Su empresa: DecoHogar
Etc...

Tal y como está declarado, el texto que aparece antes de las variables se escribirá siempre tal y como está, y las variables se sustituirán por lo que escriba el usuario.

Si en la película de flash de vuestro formulario solo teneis 3 campos que se llaman:

Correo, Ciudad y mensaje y las variables las habeis llamado respectivamente elcorreo, laciudad y elmensaje, ese trozo de código debería quedar así:

$datos="Su correo: $elcorreo
+ Su Ciudad: $laciudad
+ Su mensaje: $elmensaje
";

El siguiente código a configurar es:

//correo desde el que se enviará
$m->From( "correo@correo.com" );
//correo al que se enviará. Se puede poner en ambos lugares el mismo correo
$m->To( "correo@correo.com" );
//el subject del email, será el email que haya escrito el usuario, salvo que lo cambiemos, pon lo que quieras
$m->Subject( "$email" );

Bien, en correo desde el que se enviará y correo al que se enviará, poned vuestra dirección de correo, sin más. Y el Subject es el asunto que aparecerá en el correo. Tal y como está puesto ahí, en el asunto aparecerá lo que el usuario escriba en el campo email, ya que a ese campo le he dado el nombre de variable email en Flash (a las variables en php se les añade el simbolo del Dolar antes, $email). Podeis poner lo que querais, si poneis una variable de las declaradas en Flash, aparecerá lo que el usuario ponga en dicho campo, si quereis podeis poner un texto fijo, por ejemplo:

$m->Subject( "Correo enviado desde mi web" );

Con lo que en el asunto siempre aparecería dicha frase.

Bien, pasemos al siguiente código:

$m->Body( "Nombre del autor:
$nom
Su email:
$email
Su empresa:
$empresa
Motivo del contacto:
$contacto
Mensaje:
$mensaje
" );

Hay que hacer exactamente lo mismo que en el primer código que he explicado, solo que este de aquí es para el mensaje de correo electrónico, y el anterior era para el archivo adjunto.

Y por último, donde dice:

//Si queremos que el correo se envíe a más cuentas de correo, quitar las barras de comentario y especificar los correos
//$m->Cc( "alguien@algun_server.au");
//$m->Bcc( "alguien_mas@otro_server.es");

Si quereis que el mensaje del formulario solo os llegue a vosotros, no lo toqueis, ya que ese código es para que el correo se mande a varias cuentas de correo cuando el usuario le de a enviar. Si quereis que tal cosa suceda, quitad las barras de comentario "//" al principio de la 2ª y 3ª línea y poned las otras 2 cuentas a las que quereis que el correo se mande, por ejemplo:

$m->Cc( "ramon@miweb.com");
$m->Bcc( "lorena@miotraweb.com");

Y con eso, el correo llegará a esas dos cuentas a parte de la vuestra.

Espero haber resuelto las dudas sobre como configurar este archivo.

Actualización IV:

Señores, para que el formulario funcione es Imprescindible que el servidor web donde esté alojada la página del formulario tenga un servidor de correo (SMTP), de lo contrario no podrá enviar el mail.

Para que un correo funcione hacen falta 2 servidores web, uno que envía (SMTP) y otro que recibe (POP3); un solo servidor puede hacer ambas funciones, por ello, el formulario funciona perfectamente si lo usamos con correos gratuitos tipo Hotmail, por que dicho servidor POP3 recibirá el correo, pero no tendrá nada que recibir sin un servidor SMTP que lo envíe desde nuestra web. los que intenteis usar el formulario en servidores gratuitos tipos Iespana, Webcindario, Web1000, etc... no lo conseguireis, por que estos servidores web no tienen servidor de correo SMTP. Tenedlo en cuenta.

Actualización V:

Muchos me habeis comentado que teneis problemas para recibir el email; mejor dicho, recibís el email pero está vacío:

Nombre:
Email:
etc...

Bien, esto es debido a que en PHP se registra un parámetro denominado "Register Global" que indica el alcance de las variables. Un método de seguridad usado en los servidores es desactivar este parametro de modo que no se puedan definir variables globales por lo cual, para que reconozca las variables que se pasan, tenemos que indicar por qué método han sido pasadas. En el caso que nos ocupa como en el formulario flash pasamos las variables por el método POST lo que debes hacer es cambiar las variables que fueron enviadas por el formulario en el php, en vez de $variable cambiarlo por $_POST[variable].

Scour Design ™ Todos los Derechos Reservados © Carlos Carmona Xhtml 1.1 Strict Válido!CSS Nivel 2 Válido! Nivel Triple-A de Conformidad con las Directrices de Accesibilidad Web (WAI)