Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2012, 05:56
Avatar de elacunza
elacunza
 
Fecha de Ingreso: mayo-2011
Mensajes: 46
Antigüedad: 13 años
Puntos: 0
Codificación de caracteres en formulario, problema.

Hola buenas!

Veréis, estoy intentando implementar un formulario de email a una web y al parecer al cliente en los emails le llegan los carácteres (tildes eñes y demás) codificados. El formulario es el siguiente:

<?php
if(isset($_POST['boton'])){
if($_POST['nombre'] == ''){
$errors[1] = '<span class="error">Ingrese su nombre</span>';
}else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
$errors[2] = '<span class="error">Ingrese un email correcto</span>';
}else if($_POST['asunto'] == ''){
$errors[3] = '<span class="error">Ingrese un asunto</span>';
}else if($_POST['mensaje'] == ''){
$errors[4] = '<span class="error">Ingrese un mensaje</span>';
}else{
$dest = "[email protected]"; //Email de destino
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$asunto = $_POST['asunto']; //Asunto
$cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
//Cabeceras del correo
$headers = "From: $nombre $email\r\n"; //Quien envia?
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //

if(mail($dest,$asunto,$cuerpo,$headers)){
$result = '<div class="result_ok"><h5>Email enviado correctamente </h5></div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['asunto'] = '';
$_POST['mensaje'] = '';
}else{
$result = '<div class="result_fail"><h5>Hubo un error al enviar el mensaje</h5> </div>';
}
}
}
?>

<form class='contacto' method='post' action=''>
<div><label>Your name:</label><input type='text' class='nombre' name='nombre' value='<?php echo $_POST['nombre']; ?>'/><?php echo $errors[1] ?></div>
<div><label>Email:</label><input type='text' class='email' name='email' value='<?php echo $_POST['email']; ?>'/><?php echo $errors[2] ?></div>
<div><label>Subject:</label><input type='text' class='asunto' name='asunto' value='<?php echo $_POST['asunto']; ?>'/><?php echo $errors[3] ?></div>
<div><label>Message:</label><textarea rows='6' cols="1" class='mensaje' name='mensaje'><?php echo $_POST['mensaje']; ?></textarea><?php echo $errors[4] ?></div>
<div><input type='submit' value='SEND' class='boton' name='boton'/></div>
<?php echo $result; ?>
</form>

---------------------



Había pensado sustituir el charset por utf-8 en la siguiente línea:
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //

Desde la total ignorancia de php, creo que podría ser lo más sencillo del mundo o la mayor chapuza.
¿Tiene algún sentido esto? o conllevaría un proceso mucho más costoso?

Un saludo y gracias.