Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2011, 07:14
Txalito
 
Fecha de Ingreso: febrero-2010
Mensajes: 11
Antigüedad: 14 años, 2 meses
Puntos: 0
Caracteres latinos no se escriben correctamente en formularios

Hola a todos!

El motivo de mi mensaje es que estoy armando un sitio en castellano utilizando UTF-8 en el charset y hasta ahi todo sin problemas.

Ocurre que en los formularios del sitio, luego de completar la información en los campos, estos sustituyen los caracteres latinos (ñ, é, é, í, etc.) de modo equivocado, por ejemplo á, é,*ñ, etc.

Esto sucede cuando recibo el mensaje, tanto en los campos que escribe el PHP para identificarlos en el mail como en el texto completado por el usuario.

A conitinuacion les dejo el codigo que estoy usando antes de abrir el head, a ver si me pueden ayudar:

Código:
<?php 
$your_email ='[email protected]';

session_start();
$errors = '';
$name = '';
$visit_email = '';
$user_message = '';
$name_0 = '';
$visit_email_0 = '';
$user_message_0 = '';

// INICIO CODIGO FORM SIDEBAR 
if(isset($_POST['submit_side']))
{
	$name = $_POST['name'];
	$visit_email = $_POST['email'];
	$tel = $_POST['tel'];
	$host1 = $_POST['hostini'];
	$host2 = $_POST['hostava'];
	$host3 = $_POST['hostpre'];
	$registro = $_POST['regi'];
	$emailing = $_POST['mailing'];
	$otros = $_POST['otros'];
	$user_message = $_POST['message'];
	
	///------------Do Validations-------------
	if(empty($name)||empty($visit_email))
	{
		$errors .= "Name and Email are required fields. ";	
	}
	if(IsInjected($visit_email))
	{
		$errors .= "Bad email value!";
	}
	if(empty($_SESSION['6_letters_code'] ) ||
	  strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)
	{
		$errors .= "El código de verificación no coincide!";
	}
	
	if(empty($errors))
	{
		//send the email
		$to = $your_email;
		$subject="Consulta rápida > Lightfaro hosting";
		$from = $your_email;
		$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
		
		$body  = "$name ha enviado la siguiente consulta desde Lightfarohosting.com\n\n".
		"Nombre: $name\n".
		"e-mail: $visit_email\n".
		"Tel.: $tel\n\n".
		"SERVICIO/S DE INTERES:\n".
		"$host1 - $host2 - $host3 - $registro - $emailing - $otros\n\n".
		"Conmentarios:\n".
		"$user_message\n\n".
		"IP: $ip\n";	
		
		$headers = "From: $visit_email \r";
				
		mail($to, $subject, $body, $headers);
		
		header('Location: index-ok.php');
	}
} // FIN CODIGO FORM SIDEBAR

// Function to validate against any email injection attempts
function IsInjected($str)
{
  $injections = array('(\n+)',
              '(\r+)',
              '(\t+)',
              '(%0A+)',
              '(%0D+)',
              '(%08+)',
              '(%09+)'
              );
  $inject = join('|', $injections);
  $inject = "/$inject/i";
  if(preg_match($inject,$str))
    {
    return true;
  }
  else
    {
    return false;
  }
}
?>
Les agradeceré cualquier ayuda que puedan darme al respecto, muchas gracias!

Última edición por Txalito; 26/07/2011 a las 08:09 Razón: Creo que deberian mover esta consulta a formularios, no habia visto la opcion. Gracias