Foros del Web » Programando para Internet » PHP »

Mi problema con tildes en formulario

Estas en el tema de Mi problema con tildes en formulario en el foro de PHP en Foros del Web. Hola a todos como andan... estoy armando un formulario de contacto con php +jquery que valida en el momento. El problema que tengo es que ...
  #1 (permalink)  
Antiguo 02/02/2011, 07:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 2 meses
Puntos: 3
Mi problema con tildes en formulario

Hola a todos como andan... estoy armando un formulario de contacto con php +jquery que valida en el momento.

El problema que tengo es que cuando se envía, los carácteres especial (ya sean tildes, ñ. etc) llegan mal al correo electrónico.

Probé usando la codificación ISO y UTF-8 tanto en la página del contacto como en el php que hace el envío y sigue sin funcionar...

(aclaro que la codificación la agregué en el código (<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />) y también cuando guarde el .txt (ANSI - UTF -8).

Lei en un montón de posts en el foro que es posible modificar los carácteres por código HTML (por ej: &Aacute;), lo intenté pero no estoy seguro donde agregarlo, y no funciona. Agradecería si alguien me puede dar una mano... dejo aquí el código del .JS y el .PHP por si alguien me puede ayudar:

JS
Código:
$(function() {
  $('.error').hide();
  $('input.text-input').css({backgroundColor:"#FFFFFF"});
  $('input.text-input').focus(function(){
    $(this).css({backgroundColor:"#FFDDAA"});
  });
  $('input.text-input').blur(function(){
    $(this).css({backgroundColor:"#FFFFFF"});
  });

  $(".button").click(function() {
		// validate and process form
		// first hide any error messages
    $('.error').hide();
		


	  var inp1 = $("input#inp1").val();
		if (inp1 == "") {
      $("label#inp1_error").show();
      $("input#inp1").focus();
      return false;
    }

	  var inp2 = $("input#inp2").val();
		if (inp2 == "") {
      $("label#inp2_error").show();
      $("input#inp2").focus();
      return false;
    }	

	  var inp3 = $("input#inp3").val();
		if (inp3 == "") {
      $("label#inp3_error").show();
      $("input#inp3").focus();
      return false;
    }	


		var dataString = 'inp1='+ inp1 + '&inp2=' + inp2 + '&inp3=' + inp3;
		//alert (dataString);return false;
		
		$.ajax({
      type: "POST",
      url: "bin/process.php",
      data: dataString,
      success: function() {
        $('#contact_form').html("<div id='message'></div>");
        $('#message').html("<h2>Formulario enviado con exito!</h2>")
        .append("<p>Proximamente recibira la respuesta</p>")
        .hide()
        .fadeIn(1500, function() {
          $('#message').append("<img id='checkmark' src='check.png' />");
        });
      }
     });
    return false;
	});
});
runOnLoad(function(){
  $("input#name").select().focus();
});
PHP
Código PHP:

<?php
if ((isset($_POST['inp1'])) && (strlen(trim($_POST['inp1'])) > 0)) {
    
$inp1 stripslashes(strip_tags($_POST['inp1']));
} else {
$inp1 'No inp1 entered';}

if ((isset(
$_POST['inp2'])) && (strlen(trim($_POST['inp2'])) > 0)) {
    
$inp2 stripslashes(strip_tags($_POST['inp2']));
} else {
$inp2 'No inp2 entered';}

if ((isset(
$_POST['inp3'])) && (strlen(trim($_POST['inp3'])) > 0)) {
    
$inp3 stripslashes(strip_tags($_POST['inp3']));
} else {
$inp3 'No inp3 entered';}

ob_start();
?>
<div style="width:641px;margin:0 auto;">
<table width="641" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Nombre: <?=$inp1;?></td>
  </tr>
  <tr>
    <td>Apellido: <?=$inp2;?></td>
</tr>
  <tr>
    <td>Empresa: <?=$inp3;?></td>
  </tr>
</table>
</div></body></html>
<?
$body 
ob_get_contents();


$to '[email protected]';
$email '[email protected]';
$fromaddress "[email protected]";
$fromname "Online Contact";

require(
"phpmailer.php");

$mail = new PHPMailer();

$mail->From     "[email protected]";
$mail->FromName "TEST";
$mail->AddAddress("[email protected]","Name 1");
$mail->AddAddress("[email protected]","Name 2");

$mail->WordWrap 50;
$mail->IsHTML(true);

$mail->Subject  =  "Asunto del formulario";
$mail->Body     =  $body;
$mail->AltBody  =  "This is the text-only body";

if(!
$mail->Send()) {
    
$recipient '[email protected]';
    
$subject 'Contact form failed';
    
$content $body;    
  
mail($recipient$subject$content"From: [email protected]\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
  exit;
}
?>
Desde ya muchas gracias!
Saludos!
  #2 (permalink)  
Antiguo 03/02/2011, 11:32
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Mi problema con tildes en formulario

Que tal si cuando mandas esa información al mail le aplicas alguna función para el tratado de esos caracteres, como por ejemplo htmlentities?
  #3 (permalink)  
Antiguo 03/02/2011, 12:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Mi problema con tildes en formulario

Hola areslepra!

Sí, vi que algunos usuarios del foro con mi mismo problema encontraron la solución con htmlentities.

Intenté agregarlo y no pude, me empezaba a fallar el formulario. Mis conocimientos en PHP son muy básicos.
  #4 (permalink)  
Antiguo 03/02/2011, 12:56
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mi problema con tildes en formulario

para cambiar los caracteres funcionan de esta forma: supongamos que quieres escribir
contraseña, para que aparesca la ñ tendrias q poner Contrase&ntilde;a
y en el caso de los acentos seria lo misma solo q cambia la sentencia
para escribir atención tendria q ser de esta forma atenci&oacute;n
  #5 (permalink)  
Antiguo 03/02/2011, 13:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Mi problema con tildes en formulario

Hola bullarobert,

Cita:
para cambiar los caracteres funcionan de esta forma: supongamos que quieres escribir
contraseña, para que aparesca la ñ tendrias q poner Contrase&ntilde;a
y en el caso de los acentos seria lo misma solo q cambia la sentencia
para escribir atención tendria q ser de esta forma atenci&oacute;n
Claro, eso lo se.. el tema es que yo necesito que el php haga esa modificación automaticamente, pues no se lo que va a escribir la gente en los campos del formulario
  #6 (permalink)  
Antiguo 03/02/2011, 13:50
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Mi problema con tildes en formulario

Para esto podrías hacer conversión del set de caracteres, con utf8_encode o utf8_decode según sea el caso. O bien para casos muy extremos con iconv(), aunque éste último no todas las instalaciones de php la tienen.
  #7 (permalink)  
Antiguo 03/02/2011, 13:51
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Mi problema con tildes en formulario

al imprimir las variables en el server , antes de mandarlas al mail se ven bien?
  #8 (permalink)  
Antiguo 03/02/2011, 14:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Mi problema con tildes en formulario

Cita:
al imprimir las variables en el server , antes de mandarlas al mail se ven bien?
Hola mogurbon.. si se ven bien!
  #9 (permalink)  
Antiguo 03/02/2011, 14:48
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Mi problema con tildes en formulario

Cita:
Iniciado por margancia Ver Mensaje
Hola mogurbon.. si se ven bien!
eso , quiero creer que es cada variable por separado al recibirla, ¿como se ve el body
despues de esta linea?

$body = ob_get_contents();
  #10 (permalink)  
Antiguo 03/02/2011, 19:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 193
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Mi problema con tildes en formulario

Cita:
Iniciado por mogurbon Ver Mensaje
eso , quiero creer que es cada variable por separado al recibirla, ¿como se ve el body
despues de esta linea?

$body = ob_get_contents();
Disculpá mogurbon no comprendo tu pregunta...

Etiquetas: tildes, formulario
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 11:12.