Foros del Web » Programando para Internet » PHP »

Formulario php que no funciona

Estas en el tema de Formulario php que no funciona en el foro de PHP en Foros del Web. Hola a todos; comentaros que no soy un experto en esto del php, asi que disculpad si no me entero mucho. Explico mi caso, tengo ...
  #1 (permalink)  
Antiguo 03/12/2008, 15:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Formulario php que no funciona

Hola a todos; comentaros que no soy un experto en esto del php, asi que disculpad si no me entero mucho. Explico mi caso, tengo un archivo php que recoge unas variables que manda un archivo flash, todo llega correctamente, pero lo que necesito que haga ese archivo es que compara una variable de las que paso, elija un fondo determinado dependiendo de la palabra que ponga y justo debajo de esta imagen coloque el texto que va en otra variable. Creo que todo esta correcto, pero no me funciona y no se por lo que es y me estoy volviendo loca, seriais tan amables de ayudamer. Un saludo

Aqui pongo lo que va en el archivo php:
Código PHP:
<?php

    
//Tomamos las variables desde la pelicula
    
switch($_POST['nombre']){
        case 
"abrazo":
            
$template="abrazoemail";
            break;
        case 
"beso":
            
$template="besoemail";
            break;
        case 
"sonrisa":
            
$template="sonrisaemail";
            break;
    }

    
//Resto de variables
    
$elemail$_POST['email'];
    
$elemail2 $_POST['email2'];
    
$elmensaje $_POST['texto'];
    
    
//Puedes modificar el asunto del mail
    
$asunto="Te Felicito la navidad con AES";
    
        
    
    
//////////////////////////////[MODELO ACTUAL]/////////////////////////////////////7]
    
$mensajedatos="<html><body style=\"width:952px; height:560px;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><div style=\"width:952px; margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><img src=\"http://www.respaldoglucogeno.com/aes/fondos/".$template.".jpg\"><div style='width:550px; margin:10px 0px 50px 100px; line-height:16px;'><font style='font-family: Verdana; font-size:13px; font-weight:580;'>enviado por: ".$elemail."<br>".$elmensaje."</font></div></div></body></html";
    
        
    
    
    
    
//E-mail al cual se envia el mensaje
    
$mail "$elemail2";
    
    
    
//Para que acepte el template del mensaje en HTML hay que especificar Content-type
    
$headers  'MIME-Version: 1.0' "\r\n";
    
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
    
$headers .= 'Reply-To: '.$_POST['email'].'' "\r\n" ;
    
//Añadimos el remitente a la cabecera del mensaje
    
$headers .= 'From: '.$elemail;
    
    
//Accion de enviar el mensaje
    
mail($mail,$asunto,$mensajedatos,$headers); 
    
//mail($mail,$asunto,$mensajedatos,"From: ".$elemail); 
    
    
?>
  #2 (permalink)  
Antiguo 03/12/2008, 15:51
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 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
  #3 (permalink)  
Antiguo 03/12/2008, 16:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Formulario php que no funciona

Hola, gracias por contestar, te comento. Yo envio las variables desde flash ( utilizo swishmax ) con este script:
Código HTML:
on (press) {
    if (nombre == "" || email == "" || email2 == "" || texto == "") {
    } else {
        loadVariablesNum("http://www.nombredelaweb.com/recomendar.php",0,'POST');
        nombre = "";
        email = "";
        email2 = "";
        texto = "";
    }
}
Esto que he puesto funciona bien, ya que cuando utilizo este php lo manda correctamente:
Código PHP:
<?

//Tomamos las variables desde la pelicula
$elnombre $_POST['nombre'];
$elemail $_POST['email'];
$elemail2 $_POST['email2'];
$elmensaje $_POST['texto'];

//Puedes modificar el asunto del mail
$asunto="Asunto del mail";

//Informacion del e-mail
$mensajedatos="

        Enviado por: $elemail

        NOMBRE: $elnombre
        E-MAIL: $elemail
        MENSAJE: $elmensaje"
;

//E-mail al cual se envia el mensaje
$mail="$elemail2";

//Accion de enviar el mensaje
mail($mail,$asunto,$mensajedatos,"From: ".$elemail); 
?>
Entonces, realmente no se donde esta el problema, mi sospechas van encaminadas al tema de introducir html dentro del mail, pero claro es la unica forma de adjuntar la imagen. Gracias
  #4 (permalink)  
Antiguo 03/12/2008, 16:20
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Formulario php que no funciona

Fijate que aquí:
Código PHP:
    $mensajedatos="<html><body style=\"width:952px; height:560px;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><div style=\"width:952px; margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><img src=\"http://www.respaldoglucogeno.com/aes/fondos/".$template.".jpg\"><div style='width:550px; margin:10px 0px 50px 100px; line-height:16px;'><font style='font-family: Verdana; font-size:13px; font-weight:580;'>enviado por: ".$elemail."<br>".$elmensaje."</font></div></div></body></html"
No has cerrado bien el tag </html> (falta el ">" final). Imagino que directamente en el mail no aparecía nada o casi nada.

Por otro lado, las comillas dobles (") lo que hacen es evaluar lo que haya dentro, es decir, que realmente no hace falta que concatenes las variables PHP con el operador "." porque con las dobles comillas ya se evalúan. Eso sería necesario con las simples ('). Por eso mismo de la evaluación es recomendado usar las simples, ya que a lo mejor quieres poner realmente un símbolo del dólar en el texto o quizás una operación matemática y puede que las comillas dobles te lo evalúen.
En resumen, te recomiendo usar las dobles sólo cuando realmente necesites su función, si no usa siempre las simples, es mucho más seguro.
__________________
Un Lannister siempre cumple sus promesas
  #5 (permalink)  
Antiguo 03/12/2008, 16:25
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Respuesta: Formulario php que no funciona

Cita:
Iniciado por Mort20 Ver Mensaje
Fijate que aquí:
Código PHP:
    $mensajedatos="<html><body style=\"width:952px; height:560px;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><div style=\"width:952px; margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><img src=\"http://www.respaldoglucogeno.com/aes/fondos/".$template.".jpg\"><div style='width:550px; margin:10px 0px 50px 100px; line-height:16px;'><font style='font-family: Verdana; font-size:13px; font-weight:580;'>enviado por: ".$elemail."<br>".$elmensaje."</font></div></div></body></html"
No has cerrado bien el tag </html> (falta el ">" final). Imagino que directamente en el mail no aparecía nada o casi nada.

Por otro lado, las comillas dobles (") lo que hacen es evaluar lo que haya dentro, es decir, que realmente no hace falta que concatenes las variables PHP con el operador "." porque con las dobles comillas ya se evalúan. Eso sería necesario con las simples ('). Por eso mismo de la evaluación es recomendado usar las simples, ya que a lo mejor quieres poner realmente un símbolo del dólar en el texto o quizás una operación matemática y puede que las comillas dobles te lo evalúen.
En resumen, te recomiendo usar las dobles sólo cuando realmente necesites su función, si no usa siempre las simples, es mucho más seguro.
Anda pues es verdad, tiene Vd. un ojo muy agudo :) y yo contado cosas para depurar :$. Ays ...

En fin solucionado se llevará una alegría.

Salu2 ;)
__________________
[+]
[+]
  #6 (permalink)  
Antiguo 03/12/2008, 16:45
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Formulario php que no funciona

Gracias a los dos por contestar, pero tengo que decir que depurando el error de ">" es decir, poniendo esto:
Código PHP:
$mensajedatos="<html><body style=\"width:952px; height:560px;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><div style=\"width:952px; margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;\"><img src=\"http://www.webasdf.com/fondos/".$template.".jpg\"><div style='width:550px; margin:10px 0px 50px 100px; line-height:16px;'><font style='font-family: Verdana; font-size:13px; font-weight:580;'>enviado por: ".$elemail."<br>".$elmensaje."</font></div></div></body></html>"
Me sigue sin funcionar. No entiendo porque uno si funciona el otro no. Gracias de nuevo
  #7 (permalink)  
Antiguo 09/12/2008, 12:09
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Formulario php que no funciona

Todo arreglado, el problema estaba en mi servidor, gracias por contestar. Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:51.