Foros del Web » Programando para Internet » PHP »

Acentos en recogida de datos.

Estas en el tema de Acentos en recogida de datos. en el foro de PHP en Foros del Web. Hola a todos. Se que este tema se trató mucho, pero no encuentro como solucionarlo. Tengo un formulario html en el que recojo datos mediante ...
  #1 (permalink)  
Antiguo 22/03/2010, 03:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Acentos en recogida de datos.

Hola a todos.

Se que este tema se trató mucho, pero no encuentro como solucionarlo.

Tengo un formulario html en el que recojo datos mediante una llamada a un archivo PHP que recoge los datos de los campos y me los envía a una dirección de email.

Este es el código del archivo PHP:
Código PHP:
<?php

/* Set e-mail recipient */
$myemail  "[email protected]";
$subject "Asunto: Recogida de datos"


/* Check all form inputs using check_input function */
$nombre check_input($_POST['nombre'], "Nombre");
$apellidos check_input($_POST['apellidos'], "Apellidos");
$telefono check_input($_POST['telefono'], "Telefono");
$provincia check_input($_POST['provincia'], "Provincia");
$email    check_input($_POST['email'], "Email");


/* If e-mail is not valid show error message */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/"$email))
{
    
show_error("email incorrecto");
}


/* Let's prepare the message for the e-mail */
$message "Datos de contacto usuario

Name: $nombre
Apellidos: $apellidos
Telefono: $telefono
Provincia: $provincia
E-mail: $email

Fin del mensaje
"
;

/* Send the message using mail() function */
mail($myemail$subject$message);

/* Redirect visitor to the thank you page */
header('Location: thanks.htm');
exit();

/* Functions we used */
function check_input($data$problem='')
{
    
$data trim($data);
    
$data stripslashes($data);
    
$data htmlspecialchars($data);
    if (
$problem && strlen($data) == 0)
    {
        
show_error($problem);
    }
    return 
$data;
}

function 
show_error($myError)
{
?>
    <html>
    <body>

    <b>Por favor, verifique los siguientes errores:</b><br />
    <?php echo $myError?>

    </body>
    </html>
<?php
exit();
}
?>
Funciona OK, pero cuando tiene que recoger un nombre o apellidos con acentos, en la información que llega al mail, el acento aparece como una ?.

He leido en los post que puede ser por la cofificación UTF8.

He probado a añadir a la variable apellidos el siguiente código:
Código PHP:
$apellidos utf8_encode($apellidos); 
pero nada.

He de decir que soy un novel en PHP por eso mis limitaciones e ir aprendiendo.

Espero que alguien me ayude ya que no se por donde continuar para solucionarlo.

Saludos y gracias de antemano.

Última edición por seragui; 22/03/2010 a las 05:17
  #2 (permalink)  
Antiguo 22/03/2010, 04:08
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 20 años, 2 meses
Puntos: 13
Respuesta: Acentos en recogida de datos.

Tienes que indicar que el correo que envias es HTMl en la cabecera del correo
  #3 (permalink)  
Antiguo 22/03/2010, 04:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Acentos en recogida de datos.

Gracias por la respuesta, pero ¿podrías indicarme como realizo eso?. Estoy empezado con PHP y mi experiencia es muy limitada.

Gracias
  #4 (permalink)  
Antiguo 22/03/2010, 04:49
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: Acentos en recogida de datos.

Prueba asi, a mi me funciona bien

mail($myemail, $subject, $message,"MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\nFrom: tuweb.com <[email protected]>");
  #5 (permalink)  
Antiguo 22/03/2010, 05:13
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Acentos en recogida de datos.

Me da el siguiente error de PHP:
Código PHP:
Parse errorsyntax errorunexpected ')' in /var/www/vhost/servidor.com/home/html/datos/contacto.php  on line 39 
Puse tu línea de código y sustituí los datos de web e email por lo mios.
  #6 (permalink)  
Antiguo 22/03/2010, 05:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Acentos en recogida de datos.

Ok, tenía puesto un ")" de mas, pero me siguen sin llegar bien los acentos. La palabra González me llega a mi mail como: González
  #7 (permalink)  
Antiguo 22/03/2010, 05:19
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Acentos en recogida de datos.

A ver... ¿estás usando la cabecera de ejemplo que te dio Vun? Porque en este el charset es iso-8859, y tú estás usando utf-8. Prueba cambiando el charset de la cabecera a utf-8, y nos avisas. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 22/03/2010, 05:24
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Acentos en recogida de datos.

Si, estoy utilizando la cabecera de Vun.

He cambiado a utf-8:
Código PHP:
mail($myemail$subject$message"MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\nFrom: url <[email protected]>"); 
y he probado.

Sigue con el error, ahora la palabra González me aparece en emi mail como:González
  #9 (permalink)  
Antiguo 22/03/2010, 05:29
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Acentos en recogida de datos.

A ver... otra opción :

En la cabecera, envía iso-8859, y el apellido lo pasas por utf8_decode.

El utf8_decode, lo que hace, es convertir datos supuestamente codificados con utf-8, a iso-8859.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #10 (permalink)  
Antiguo 22/03/2010, 05:39
 
Fecha de Ingreso: diciembre-2008
Mensajes: 65
Antigüedad: 15 años, 10 meses
Puntos: 0
Mensaje Respuesta: Acentos en recogida de datos.

PERFECTO!!!!,

Muchas gracias. Ahora llega con el acento.

Bufffff, todo lo que me queda por aprender....
  #11 (permalink)  
Antiguo 22/03/2010, 05:41
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Acentos en recogida de datos.

Uff... funcionó . La verdad no me lo esperaba . Pero justamente así se aprende, intentando, errando... pero finalmente se aprende.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: acentos, recogida
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 22:27.