Foros del Web » Programando para Internet » PHP »

Problema de tildes en formularios

Estas en el tema de Problema de tildes en formularios en el foro de PHP en Foros del Web. Hola! Tengo armado un contact.php, el cual me da problemas si escribo desde él palabras que contengan tildes, al llegar el mail se muestran símbolos ...
  #1 (permalink)  
Antiguo 08/05/2009, 04:47
Avatar de ken_masters  
Fecha de Ingreso: febrero-2005
Mensajes: 422
Antigüedad: 19 años, 2 meses
Puntos: 5
Problema de tildes en formularios

Hola!

Tengo armado un contact.php, el cual me da problemas si escribo desde él palabras que contengan tildes, al llegar el mail se muestran símbolos estraños.

Según he leído, se debe a la codificación usada en la aplicación con la que se creó el documento php, dando la UTF8 esta serie de problemas. Por ello, he cambiado el charset a "iso-8859-1" que es con el que mejor se llevan los navegadores, si no me equivoco. Pero no ha surgido efecto.

El código del php es el siguiente:

<?php
//-----------------Getting data sent by flash---------------------
foreach ($_POST as $key => $value){

if ($key != 'mail_to' && $key != 'smtp_server' && $key != 'smtp_port' && $key != 'mail_from' && $key != 'mail_subject' && $key != 'plain_text'){

$mail_body .= '<b>'.str_replace('_',' ',$key).'</b>:<br/>';

$mail_body .= ''.stripslashes($value).'<br/>';
}
}
//-----------------------------------------------------------------



$message = '<html><body>'.$mail_body.'</body></html>'; // mail body

//------------if plain text is set to true removing html tags------
if ($_POST['plain_text']=='true') {

$message = str_replace('<br/>',"\r\n", $message);

$message = strip_tags($message);

//------------------------------------------------------------------
} else {
//----otherwise composing message headers---------------------------
$headers = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
//------------------------------------------------------------------
}

//------------setting conf data-------------------------------------
$to = $_POST['mail_to'];

$from = $_POST['mail_from'];

$subject = $_POST['mail_subject'];

$smtp_server = $_POST['smtp_server'];

$smtp_port = $_POST['smtp_port'];
//------------------------------------------------------------------

//---------setting header info--------------------------------------


$headers .= 'From:' .$from;
//------------------------------------------------------------------


if (mail($to, $subject, $message, $headers)){ // sending mail

print('&mail=1'); //succes

} else {

print('&mail=0');//failure

}

?>
__________________
Here comes a new challenger?
  #2 (permalink)  
Antiguo 08/05/2009, 04:59
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Problema de tildes en formularios

Prueba a cambiar las tildes por su codificación en HTML:

Cita:
// Minúsculas \\

à=&agrave;
è=&egrave;
ò=&ograve;

á=&aacute;
é=&eacute;
í=&iacute;
ó=&oacute;
ú=&uacute;

ç=&ccedil;
ñ=&ntilde;


// Mayúsculas \\

À=&Agrave;
È=&Egrave;
Ò=&Ograve;

Á=&Aacute;
É=&Eacute;
Í=&Iacute;
Ó=&Oacute;
Ú=&Uacute;

Ç=&Ccedil;
Ñ=&Ntilde;


// Diéresis \\

ä=&auml;
ë=&euml;
ï=&iuml;
ö=&ouml;
ü=&uuml;

Ä=&Auml;
Ë=&Euml;
Ï=&Iuml;
Ö=&Ouml;
Ü=&Uuml;
Yo pasé de comerme la cabeza porque me ocurría lo mismo, al final cogí e hice "buscar y reemplazar", activando el chekcbox de "Diferenciar mayúsculas de minúsculas" y me puse a cambiar las tildes por su codificación.

Haz la prueba cambiando un par de tildes manualmente, y si te funciona bien, haz un reemplazar para cambiarlo en todas las páginas.

Saludos

PD: Hay que reemplazar la vocal por el &loquesea; literalmente como está en la tabla, con el & y el ; incluidos

Última edición por Kamae; 08/05/2009 a las 05:13
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 15:04.