Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/12/2008, 15:51
Avatar de yoseman
yoseman
 
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 21 años, 2 meses
Puntos: 5
Respuesta: Formulario php que no funciona

Hola, te pongo posibles causas a comprobar:

1./ el servidor en el que estes no admite la función mail al ser gratuito.

Forma de comprobar esto, directemnte lanzar una función mail a un mail conocido tuyo y llamar al script, si no recibes nada es que la función mail no pita en el server por la razón que sea.

2./ error de envio en flash:

2.1/ Utilizar sendAndLoad de flash:

tu script en flash debería de ser así(supongo que recoges de formulario campos de textArea y checkboxes o radiobuttons):

Código PHP:
    enviar=new LoadVars();
    
recibir=new LoadVars();

        
enviar.nombre=De_donde_saques_el_nombre;
        
enviar.email=De_donde_saques_el_email;
        
enviar.email2=De_donde_saques_el_email2;
        
enviar.texto=De_donde_saques_el_texto;
        
// con este trace comprobamos que todo este correcto antes de enviar
        
trace(enviar.nombre+enviar.email+enviar.email2+enviar.texto);

    
enviar.sendAndLoad("script.php",recibir,"POST");

    
recibir.onLoad=function()
    {
        
trace(recibir.enviado);
    } 
pones en tu script en php esta línea sustituyendo la que envia el mail:
Código PHP:
    echo "enviado=".( (mail($mail,$asunto,$mensajedatos,$headers)) ? "si" "no")."&fin=si"
Que lo que hace es devolver a flash una variable 'enviado' cuya valor será 'si' si el mail se envió y 'no' si falló.

Si lo quieres probar en local debes de cambiar:

enviar.sendAndLoad("script.php",recibir,"POST");

poniendo la dirección completa de la página(http//etc...), pero al subirlo al servidor es mejor que sólo pongas la ruta del script php respecto a dónde esté el swf y quitar (http//etc...), porque eso puede hacer que flash no permita envio.

Probando en local tu película, el trace del recibir.onLoad te debería de devolver un flamante 'si' que php devuelve si el mail se envió con éxito.

Si ves que en local te va pero en el servidor no, prueba de crear un campo de texto dinámico en flash y al onLoad de recibr pones(texto.text=recibir) para ver que devuelve php.

otra cosa que puedes hacer tb es cambiar los $_POST por $_GET y pasar por query string los datos y ver si se envia, con eso sabrías que tu script en php no falla.

la forma de enviar por query string es la siguiente:

script.php?email=loquesea&mail=loquesea&etc=loques ea

Otra posibilidad es que algunos servidores(aunque esto es muy raro) no te cogen el array superglobal $_POST y has de usar el array $HTTP_POST_VARS.

En fin son muchas cosas.

Yo te digo posibilidades de cosas que me han pasado a mí, porque trabajo mucho con flash y php para formularios online.

Salu2 y perdona el caos de mensaje pero estoy un poco saturado.
__________________
[+]
[+]

Última edición por yoseman; 03/12/2008 a las 16:03