Comunidad de diseño web y desarrollo en internet online

Problema con eñes y acentos en formulario PHP+Flash

Citar            
MensajeEscrito el 17 Oct 2008 05:18 pm
Hola!
Estuve buscando en varios post anteriores y este tema lo trataron muchas veces... Varios daban la solución de agregar en el script parte de UTF8... pero lamentablemente niguno de esos posts pudieron ayudarme a resolver el problema puntual en mi formulario de contacto PHP+Flash.

El problema es cuando me llegan los mensajes a mi correo... las ñ y los acentos de los campos que completa el usuario llegan con caracteres de este tipo: ñ
Por favor si alguien puede darme una ayuda lo agradecería muchísimo. Acá pego el código de mi PHP.
Mil gracias!!!!

Código :

<?
if(!empty($HTTP_POST_VARS['sender_mail']) || !empty($HTTP_POST_VARS['sender_message']) || !empty($HTTP_POST_VARS['sender_telefono']) || !empty($HTTP_POST_VARS['sender_name']))
{
   $to = "[email protected]";
   $subject = "Mensaje desde el sitio web";
   $body = stripslashes($HTTP_POST_VARS['sender_message']);
   $body .= "\n\n---------------------------\n";
   $body .= "Mensaje enviado por:\n" . $HTTP_POST_VARS['sender_name'] . "\nE-mail: " . $HTTP_POST_VARS['sender_mail']  . "\nTeléfono: " . $HTTP_POST_VARS['sender_telefono']  . "\n";
   $header = "From: " . $HTTP_POST_VARS['sender_name'] . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";
   $header .= "Reply-To: " . $HTTP_POST_VARS['sender_name'] . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";
   $header .= "X-Mailer: PHP/" . phpversion() . "\n";
   $header .= "X-Priority: 1";
   if(@mail($to, $subject, $body, $header))
   {
      echo "output=sent";
   } else {
      echo "output=error";
   }
} else {
   echo "output=error";
}
?> 

Por diegustin

5 de clabLevel



 

Bariloche

msie7
Citar            
MensajeEscrito el 17 Oct 2008 05:46 pm
Es muy simple la solución, solo hazlo en esta línea:

Código :

   $body = ut8_decode( stripslashes($HTTP_POST_VARS['sender_message']) );


Si con eso no te funciona, entonces pon esta:

Código :

   $body = ut8_encode( stripslashes($HTTP_POST_VARS['sender_message']) );



Con una de esas dos te va a funcionar, es que lo traes de una forma y no sé si necesitas codificarlo o decodificarlo.

Es todo!! ^^

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 17 Oct 2008 06:57 pm
Bueniiisimoo Dano!!!
Le agregué el código que me enviaste, solamente tuve que cambiar ut8 por utf8.
Me animé un poco más y lo puse en otras partes del PHP... ahora anda perfecto!!!
Muchísimas gracias!


Código :

<?
if(!empty($HTTP_POST_VARS['sender_mail']) || !empty($HTTP_POST_VARS['sender_message']) || !empty($HTTP_POST_VARS['sender_telefono']) || !empty($HTTP_POST_VARS['sender_name']))
{
   $to = "[email protected]";
   $subject = "Mensaje desde el sitio web";
//   $body = stripslashes($HTTP_POST_VARS['sender_message']);
   $body = utf8_decode( stripslashes($HTTP_POST_VARS['sender_message']) );
   $body .= "\n\n---------------------------\n";
   $body .= "Mensaje enviado por:\n" . utf8_decode($HTTP_POST_VARS['sender_name']) . "\nE-mail: " . $HTTP_POST_VARS['sender_mail']  . "\nTeléfono: " . $HTTP_POST_VARS['sender_telefono']  . "\n";
   $header = "From: " . utf8_decode($HTTP_POST_VARS['sender_name']) . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";
   $header .= "Reply-To: " . utf8_decode($HTTP_POST_VARS['sender_name']) . " <" . $HTTP_POST_VARS['sender_mail'] . ">\n";
   $header .= "X-Mailer: PHP/" . phpversion() . "\n";
   $header .= "X-Priority: 1";
   if(@mail($to, $subject, $body, $header))
   {
      echo "output=sent";
   } else {
      echo "output=error";
   }
} else {
   echo "output=error";
}
?> 

Por diegustin

5 de clabLevel



 

Bariloche

msie7
Citar            
MensajeEscrito el 27 Nov 2008 12:18 pm
Gracias Dano.
Llevaba tiempo buscando la solución.

Por rover

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Nov 2008 06:36 pm
y yo te agrego q deberias dejar de utilizar $HTTP_POST_VARS y cambiarlas por $_POST trabajan mas rapido y son mas actuales y compatibles con mas servidores ;-)

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 26 Oct 2011 03:48 pm
Bueno, esto es de hace tiempo pero estaba buscando esta info y me ha venido al pelo, e igualmente, y sin ver el último post, directamente me dió por probar con $_post pues el resto de las variables las recogía igual, y perfecto... a la primera.

Gracias a TO2!!

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 02 Feb 2012 12:15 pm
Buenas, después de leer este mensaje me surge una duda, no sé dónde meter la parte del UTF8 en este php para que no me lo devuelva sin "eñes" ni acentos, y a poder ser un poco "maquetado" no en bruto ¿Podéis ayudarme?


Código PHP :

<? 
$from = $_POST['email'];
$subject = 'cuestionario'; 
$message = 'Nombre y Apellidos:  ' . $_POST['name'] . "\n".

 'Tel. Fijo:  ' . $_POST['telfijo'] . "\n".  

  
$headers = "From: ". $from . "\n";
mail ('[email protected]', $subject, $message, $headers); 
header('Location: pagina que sale.html'); 
?>

Por bwdis00

1 de clabLevel



 

safari
Citar            
MensajeEscrito el 11 May 2012 02:55 am
Seguro que ya diste con la solución pero... para quien le pueda valer:

Código :

<? 
$from = $_POST['email'];
$subject = 'cuestionario'; 
$message = 'Nombre y Apellidos:  ' . utf8_encode($_POST['name']). "\n".

 'Tel. Fijo:  ' . $_POST['telfijo'] . "\n".  

  
$headers = "From: ". $from . "\n";
mail ('[email protected]', $subject, $message, $headers); 
//Sería pagina que sale.html pero sin espacios en blanco -->header('Location: pagina que sale.html');
header('Location: pagina_que_sale.html'); 
?>


el utf8_encode o utf8_decode será en función de cómo lo tengas. Habría que probar de las 2 formas.

y si quieres dar formato puedes usar html en la línea de message sólo que no podrás usar " (dobles comillas)...digamos que podría quedar tal que...

Código :

$message="<html><head></head><body><table border='0'><tr><td>De:  </td><td>". $_POST['mail']."</td></tr><tr><td>Asunto:  </td><td>". $_POST['subject']."</td></tr><tr><td>Nombre y Apellidos:  </td><td>". utf8_encode($_POST['name'])."</td></tr></table></body></html>"


Si te fijas, en las propiedades de table, he puesto la propiedad border y lo que hay tras el igual va entre comillas simples mientras que si quiero que se interprete el código como php uso comillas dobles. Lo de las comillas simples habría de hacerse para propiedades de divs, styles, etc.... y también muy importante, no dejar 'retornos de carro' y dejar el código todo continuado.

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 12 May 2012 06:43 am
Gracias Pitger! Todavía lo tengo sin resolver, pero seguro pruebo lo q me dices, muchísimas gracias! Ya t contaré

Por bwdis00

1 de clabLevel



 

safari
Citar            
MensajeEscrito el 14 May 2012 09:06 am
Genial!! me funcionó con utf8 :) decode!

Gracias de nuevo!

Por bwdis00

1 de clabLevel



 

safari
Citar            
MensajeEscrito el 21 Sep 2012 04:23 pm
no me funciona, de hecho ya ni me llegan los mensajes. he colocado así el código:

Código :

<?php

if(!empty($HTTP_POST_VARS['contenido'])

extract($_POST);
$MailTo="[email protected]";
$dia=date("m.d.Y");
$hora=date("H:i:s");
$contenido= utf8_decode( stripslashes($HTTP_POST_VARS['contenido']) );"
Mensaje enviado desde ccc el $dia a las $hora:\n\n
- - - - - - - - - - - - - - - - -\n
Nombre: $nombre\n
E-mail: $email\n
Telefono: $tel\n
Direccion: $direccion\n
Ciudad: $ciudad\n
Pais: $pais\n
Codigo postal: $codigo\n

- - - - - -\n
Mensaje: $mensaje\n

- - - - - - - - - - - - - - - - -\n
";
mail($MailTo, "$subject (de $nombre $apellido)", $contenido, "From: $email");
?>


por favor, alguien puede orientarme

Por raider33

55 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2012 04:28 pm
El código que has posteado tiene varios errores.

Primero la sintaxis del if es errónea. Faltan las llaves que indican el ámbito de la sentencia:

Código :

if ([condición]) {
[código que se ejecuta si la condición se cumple]
} else {
[código que se ejecuta si la condición NO se cumple]
}


El array $HTTP_POST_VARS está obsoleto. En su lugar debes usar $_POST (o $_GET).

No se debe usar extract() sobre $_POST porque abre la puerta a la sobreescritura de variables.

Solo deberías usar stripslashes si el servidor está configurado para escapar automáticamente los caracteres especiales, para ello debes verificar el estado de magic-quotes-gpc porque corres el riesgo de quitar las barras inclinadas que no son escapes rompiendo el dato que intentas capturar. De todas formas esta característica está eliminada en la versión 5.4 de PHP.

La función mail() solo funciona si previamente está configurada. Si estás probando esto en tu servidor local necesitas que esté instalado el programa sendmail, de otra forma no funcionará. Muchos hosting desactivan el uso de esta función así que no la puedes usar.

En su lugar es mejor usar PHPMailer o SwiftMailer los cuales son bibliotecas que te permiten enviar correos electrónicos mucho más fácil y aislándote de las complejidades de formateo, envío y armado de los correos electrónicos (además te permiten adjuntar archivos o enviar correos en formato HTML).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Sep 2012 05:46 pm
gracias man! como te has dado cuenta no tengo la menor idea del php, es un código que uso desde hace tiempo para los formularios pero me da mucha lata cuando escriben con acentos, entonces agregue algunos detalles de lo que se ha comentado este post y los he configurado de diferentes maneras sin éxito..

después de tanto quebradero de cabeza use un tip que leí (utf8_decode) y me está funcionando sólo para el cuerpo del mensaje, el code me ha quedado así:

Código :

<?php
extract($_POST);
$MailTo="[email protected]"; 
$dia=date("m.d.Y");
$hora=date("H:i:s");
$contenido="
Mensaje enviado desde ccc el $dia a las $hora:\n\n
- - - - - - - - - - - - - - - - -\n
Nombre: $nombre\n                                                        
E-mail: $email\n
Telefono: $tel\n
Direccion: $direccion\n                                                        
Ciudad: $ciudad\n
Pais: $pais\n
Codigo postal: $codigo\n

- - - - - -\n
Mensaje: $mensaje\n

 - - - - - - - - - - - - - - - - -\n
";
mail($MailTo, "$subject (de $nombre $apellido)", utf8_decode($contenido), "From: $email");
?>


gracias man, seguiré picándole con los señalamientos que me has hecho. mientras la pequeña adición me está funcionando. saludos!

Por raider33

55 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.