Tengo una web que entregar en una semana y llevo esta última semana intentando hacer que funcione el correo desde mi archivo.swf.
Me he repasado el "tuto" de Freddi al respecto y lo tengo todo bien, he estado en diferentes sitios buscando el posible error pero como siempre nadie se acerca a la ayuda y contenidos de Cristalab.
Mi problema es que si ejecuto directamente el php desde la barra de direcciones, me llega el mail sin problemas (con caracteres especiales y todo), pero si lo llamo desde mi archivo flash no se ejecuta el php.
He ido utilizando la función trace() para ver por donde pasa en cada momento y después del "sendAndLoad" también pongo la función trace(), y así compruebo que este método de "LoadVars" también se ejecuta.
He pensado, puede ser que no llegue a ver el archivo.php, así que lo he cambiado una carpeta, y he modificado el .swf para que vaya a esta carpeta, pero nada.
La web está hecha totalmente en Flash, estoy cargando imagenes desde un XML sin problemas, y he utilizado el método send AndLoad de LoadVars en otras webs y me ha funcionado, desgraciadamente no tendo acceso ya a estas páginas con lo que no puedo recuperar el código.
Posteo el código por si alguien se ha encontrado con algo parecido.
Comentar que el código lo tengo en el primer fotograma de clip que cargo con AttachMovie, en la _root.
Flash:
enviar = function ()
{
var envio_lv:LoadVars = new LoadVars();
var recibo_lv:LoadVars = new LoadVars();
envio_lv.nombre = "pepe";
envio_lv.cuerpo = "arrikitaun";
trace("antes de sendandload");
envio_lv.sendAndLoad("correo/prueba2.php", recibo_lv, "POST");
//por aquí pasa
info_txt.text = "Enviando datos otra vez...";
recibo_lv.onLoad = function(exito)
{
if (exito)
{
//estado es lo que devuelve el php, pero no llega a devolverlo
info_txt.text = this.estado;
} else
{
//PROBLEMAS en el envio del mensaje
info_txt.text = "An error has occurred. Please try again later. Thank you.";
}
};
};
Y este es el archivo prueba2.php
<?php
$mail="micorreo@este_es.com";
$subject="Petición de información de \"".$nombre."\"";
//creo el cuerpo del mensaje con los checkeds enviados
$contenido="El Sr. o Entidad desea informarse acerca de:\n\n";
//AÑADO EL CUERPO DEL MENSAJE
$contenido.=$cuerpo;
//AÑADO LAS CABECERAS DEL MAIL
$header = "From:".$mail."\nReply-To:".$mail."\n";
$header .= "X-Mailer:PHP/".phpversion()."\n";
$header .= "Mime-Version: 1.0\n";
$header .= "Content-Type: text/plain";
mail($mail, $subject, $contenido, $header);
//devuelvo el OK a flash
echo "estado=ok";
?>
Tengo entendido que si manejas el mismo nombre de variables en el objeto LadVars que en el archivo PHP, no necesitas comprobar que existan en el PHP así como recibirlas mediante $_POST.
El método sendAndLoad empaqueta las variables cuando utilizas "POST" y PHP las recibe sin problemas.
Gracias de antemano y espero que me puedan ayudar