Foros del Web » Programando para Internet » PHP »

Problema de acentos en formulario PHP y Flash

Estas en el tema de Problema de acentos en formulario PHP y Flash en el foro de PHP en Foros del Web. Hola. Tengo un formulario hecho en Flash que pasa los datos a un php el cual envía un mail con los datos recibidos al admnistrador ...
  #1 (permalink)  
Antiguo 07/07/2005, 04:27
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Problema de acentos en formulario PHP y Flash

Hola.

Tengo un formulario hecho en Flash que pasa los datos a un php el cual envía un mail con los datos recibidos al admnistrador y otro mail de confirmación al usuario que ha rellenado el formulario.
Después de esto el php envía una variable al flash confirmando que los datos han sido enviados.
Por ahora todo correcto, los datos y ambos mails llegan a su destino.
El problema que tengo es el de los acentos. Es del tipo: "fernando acentós" donde debería mostrar: "fernando acentós".

He estado buscando la solución por internet y según creo el problema es con el charset y la codificación de caracteres en español.
El servidor en el que está alojada la página tiene:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

Lo he obtenido mirando el código fuente de su página (ver/codigo fuente en la barra del esplorador) y además según he leido por internet la tendencia es que en los nuevos servidores Linux se utiliza utf-8 y la empresa que aloja la página los acaba de cambiar.


En la página que tiene el formulario, así como en todas las que conforman el sitio web, he puesto ese mismo meta.

No soy programador en php y no sé muy bien dónde y cómo colocar la variable de $headers para decirle que envíe los datos mediante utf-8. Del mismo modo ignoro si en el formulario de flash debería decirle también que las variables las codifique en ese formato.

Adjunto el código php y el del fotograma de flash que ejecuta la orden enviar.

---------- el php :

<?

/************************************************** ****
**
** PHP Mailer 2.0
**
** This script is easy to configure. Just change the variables below to
** suit your environment and PHP does the rest!
**
** http://www.bigjolt.com
**
************************************************** *****/

/************************************************** *****

Enter your site details below!

************************************************** *****/

// Enter your contact email address here
$adminaddress = "[email protected]";

// Enter the address of your website here include http://www.
$siteaddress ="http://www.midominio.com/mailform.php";

// Enter your company name or site name here
$sitename = "LAEMPRESAENCUESTIÓN";

/************************************************** *****

No need to change anything below ...

************************************************** *****/

$headers = "Content-Type:text/html; charset=utf-8";

// Gets the date and time from your server
$date = date("d/m/Y H:i:s");

// Gets the IP Address
if ($REMOTE_ADDR == "") $ip = "no ip";
else $ip = getHostByAddr($REMOTE_ADDR);

//Process the form data!
// and send the information collected in the Flash form to Your nominated email address
if ($action != ""):
mail("$adminaddress","$fname",
"Consulta recibida en $sitename\n
Nombre de la empresa: $cname
Nombre de la persona: $fname
Puesto de trabajo: $lname
E-mail: $email
Teléfono: $telno\n
Asunto: $asunto\n
Mensaje:
------------------------------
$comments

------------------------------
Fecha/Hora: $date","FROM:$adminaddress","$headers");

//This sends a confirmation to your visitor
mail("$email","Gracias por visitar $sitename",
"Hola $fname,\n
Su consulta ha sido recibida.
En breve contestaremos a su petición.

$sitename
$siteaddress","FROM:$adminaddress");

//Confirmation is sent back to the Flash form that the process is complete
$sendresult = "Su consulta ha sido recibida.
En breve contactaremos con usted.
LAEMPRESAENCUESTIÓN
";
$send_answer = "answer=";
$send_answer .= rawurlencode($sendresult);
echo "$send_answer";

endif;

?>


--------------------------------------------------------------------------------FIN PHP



-------------- el flash:

fscommand("allowscale", "false");
//
// set some variables
//
mailform = "mailform.php";
//confirm = "Por favor, espere confirmación.";
action = "send";
//
// and focus on variable fname
//
Selection.setFocus("fname");
//
// validate email function
//
function validate(address) {
if (address.length>=7) {
if (address.indexOf("@")>0) {
if ((address.indexOf("@")+2)<address.lastIndexOf(".") ) {
if (address.lastIndexOf(".")<(address.length-2)) {
return (true);
}
}
}
}
return (false);
}
//
//form check
//
function formcheck() {
if ((((email == null)) || (email.length<1)) || (email == "ERROR! Address not valid")) {
email = "ERROR! Campo necesario";
action = "";
_root.scrollingClip._y=235;
_root.barra.scroll_knob._y=14.1;
}
if (!validate(email)) {
email = "ERROR! Dirección no válida";
action = "";
_root.scrollingClip._y=235;
_root.barra.scroll_knob._y=14.1;
}
if (fname == null) {
fname = "ERROR! Campo necesario";
action = "";
_root.scrollingClip._y=235;
_root.barra.scroll_knob._y=14.1;
}
if ((validate(email)) && (email != "ERROR!") && (fname != "") && (fname != null)) {
action = "send";
loadVariablesNum(mailform, 0, "POST");
System.useCodePage = true;
this.gotoAndPlay("wait");
_parent.gotoAndPlay("wait2");
}
}
stop();


--------------------------------------------------------------------FIN FLASH



Tengo que cambiar algunas cosas para terminar de adaptarlo a las necesidades. Pero por ahora el problema que me preocupa es el de los acentos.
Los datos y los correos llegan perfectamente a su destinatario.


Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 13/07/2005, 01:30
 
Fecha de Ingreso: julio-2005
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
hola:

Si tu correo funciona bien a mi parecer lo único que tienes que hacer es que en el primer frame de tu FLA utiliza este código

System.useCodepage = true;

éste tú lo tienes unas líneas antes de que termine tu código Flash eliminalo de ahí.

Prueba e informanos haber que pasó.

Saludos

Última edición por hergomsa; 13/07/2005 a las 01:36
  #3 (permalink)  
Antiguo 13/07/2005, 03:10
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Hola Hergomsa

Ya probé colocando " System.useCodepage = true; " en el primer frame de la película del archivo Flash y sigue ocurriendo lo mismo. Los correos llegan a su destinatario pero los acentos siguen apareciendo mal.

Haciendo más pruebas lo único que he conseguido al poner una variable $header en la cabecera del mensaje definiéndola como ISO o UTF8 es que me llegase el correo con todas las etiquetas html.

Sigo probando.

Gracias por la ayuda.
  #4 (permalink)  
Antiguo 13/07/2005, 03:33
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 14 años, 6 meses
Puntos: 60
Podrias añadir un decode en el php para las variables..

Código PHP:
//Process the form data!
// and send the information collected in the Flash form to Your nominated email address
if ($action != ""):
mail("$adminaddress","$fname",
"Consulta recibida en $sitename\n
Nombre de la empresa: $cname = utf8_decode("
$cname"); 
Nombre de la persona: $fname = utf8_decode("
$fname"); 
Puesto de trabajo: $lname = utf8_decode("
$lname"); 
E-mail: $email
Teléfono: $telno\n
Asunto: $asunto = utf8_decode("
$asunto"); \n
Mensaje:
------------------------------
$comments = utf8_decode("
$comments"); 

------------------------------ 
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #5 (permalink)  
Antiguo 17/07/2005, 05:58
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Hola ssx

He probado el código que me has facilitado pero no me funciona.
Al colocarlo se queda colgado enviándolo. Es decir, se queda parado en una pantalla en la que coloqué un mensaje " Por favor, espere confirmación" que aparece mientras conecta y envía el correo al servidor.
No debe llegar a enviarlo, pues no pasa nunca a la pantalla de confirmación de mensaje enviado.

Sigo probando.

Muchas gracias por la ayuda.
  #6 (permalink)  
Antiguo 17/07/2005, 12:24
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 14 años, 6 meses
Puntos: 60
Hola, solo debes remplazar tu php por este..

Código PHP:
<?

/************************************************** ****
**
** PHP Mailer 2.0
**
** This script is easy to configure. Just change the variables below to
** suit your environment and PHP does the rest!
**
** http://www.bigjolt.com
**
************************************************** *****/

/************************************************** *****

Enter your site details below!

************************************************** *****/

// Enter your contact email address here
$adminaddress "[email protected]";

// Enter the address of your website here include http://www.
$siteaddress ="http://www.midominio.com/mailform.php";

// Enter your company name or site name here
$sitename "LAEMPRESAENCUESTIÓN";

/************************************************** *****

No need to change anything below ...

************************************************** *****/

$headers "Content-Type:text/html; charset=utf-8";

// Gets the date and time from your server
$date date("d/m/Y H:i:s");

// Gets the IP Address
if ($REMOTE_ADDR == ""$ip "no ip";
else 
$ip getHostByAddr($REMOTE_ADDR);

//Process the form data!
// and send the information collected in the Flash form to Your nominated email address
if ($action != ""):
$cname utf8_decode("$cname");
$fname utf8_decode("$fname");
$asunto utf8_decode("$asunto");
$lname utf8_decode("$lname");
$comments utf8_decode("$comments");
mail("$adminaddress","$fname",
"Consulta recibida en $sitename\n
Nombre de la empresa: $cname\n
Nombre de la persona: $fname\n
Puesto de trabajo: $lname\n
E-mail: $email\n
Teléfono: $telno\n
Asunto: $asunto\n
Mensaje:
------------------------------
$comments;

------------------------------ 
Fecha/Hora: $date"
,"FROM:$adminaddress","$headers");

//This sends a confirmation to your visitor
mail("$email","Gracias por visitar $sitename",
"Hola $fname,\n
Su consulta ha sido recibida.
En breve contestaremos a su petición.

$sitename
$siteaddress"
,"FROM:$adminaddress");

//Confirmation is sent back to the Flash form that the process is complete
$sendresult "Su consulta ha sido recibida.
En breve contactaremos con usted.
LAEMPRESAENCUESTIÓN
"
;
$send_answer "answer=";
$send_answer .= rawurlencode($sendresult);
echo 
"$send_answer";

endif;

?>
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Última edición por _ssx; 17/07/2005 a las 12:37
  #7 (permalink)  
Antiguo 21/07/2005, 03:21
 
Fecha de Ingreso: julio-2005
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Hola ssx.

¡¡Muchísimas gracias!!!
El formulario funciona perfectamente con el código php que me has facilitado.
Anteriormente había probado utilizando un $header y utilizando en las variables el decode.
Pero no conjuntamente y definiendo antes el decode en la variable para luego usar esta.

Muchísimas gracias de nuevo.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:20.