Foros del Web » Programando para Internet » PHP »

Problema con tildes en formulario (no es el típico, creo...)

Estas en el tema de Problema con tildes en formulario (no es el típico, creo...) en el foro de PHP en Foros del Web. Hola, tengo un pequeño problemilla con un formulario PHP. Vaya por delante que yo no tengo ni zorra de PHP e incluso no demasiada experiencia ...
  #1 (permalink)  
Antiguo 25/11/2014, 05:14
Avatar de cubeman  
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 1
Pregunta Problema con tildes en formulario (no es el típico, creo...)

Hola, tengo un pequeño problemilla con un formulario PHP.
Vaya por delante que yo no tengo ni zorra de PHP e incluso no demasiada experiencia en HTML, pero lo esencial, sí.

Aclaro de inicio que tanto mi código HTML como PHP están codificados en UTF-8. En realidad el contenido me llega correctamente, con tildes y todo, pero no sucede así con el remitente cuando aparece en la bandeja de entrada del correo (hotmail). El caso es que soy totalmente incapaz de resolverlo.

Mi código PHP es el siguiente. ¿Alguien sabe dónde puede estar el error?:

Código PHP:
<?php
$remitente 
$_POST['email'];
$destinatario '';  // borrado por irrelevante
if (!$_POST){
?>

<?php
}else{
     
    
$cuerpo "Nombre: " $_POST["nombre"] . "\r \n"
    
$cuerpo .= "Téléphone: " $_POST["telefono"] . "\r \n";
    
$cuerpo .= "E-mail: " $_POST["email"] . "\r \n";
    
$cuerpo .= "Website: " $_POST["web"] . "\r \n";
    
$cuerpo .= "Message: " $_POST["mensaje"] . "\r \n";
    
    
$headers  "MIME-Version: 1.0\n";
    
$headers .= "Content-type: text/plain; charset=utf-8\n";
    
$headers .= "X-Priority: 3\n";
    
$headers .= "X-MSMail-Priority: Normal\n";
    
$headers .= "X-Mailer: php\n";
    
$headers .= "From: \"".$_POST['nombre']." ".$_POST['apellido']."\" <".$remitente.">\n";

    
mail($destinatario$asunto$cuerpo$headers);
    
    include 
'confirmacion_form.html';
}
?>
Gracias por adelantado.
  #2 (permalink)  
Antiguo 25/11/2014, 11:33
Avatar de cubeman  
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

¿Nada? ¿nadie?
  #3 (permalink)  
Antiguo 25/11/2014, 11:53
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

yo no me complicaría la vida en rebuscarle tanto

en tu código cambia \r \n por <br />
después cambia text/plain por text/html
y por ultimo en la función mail cambia $cuerpo por htmlentities($cuerpo)
  #4 (permalink)  
Antiguo 26/11/2014, 02:30
Avatar de cubeman  
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

Gracias por tu respuesta. Lo probaré y te digo qué ha pasado.
  #5 (permalink)  
Antiguo 26/11/2014, 04:04
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

Sobre tu duda la verdad que no se que puede ser... Todo parece estar OK.
Yo uso la clase PHPMailer en vez de la tipica mail()

Simplemente tienes que descargartela de internet e incluirla en tu proyecto.

Después, puedes usar esta funcion PHP que me he creado yo, adaptandola a tu proposito:

Código PHP:
Ver original
  1. <?php
  2. function enviar_mail($Subject, $address, $cuerpo) {
  3.    
  4.     /*
  5.      $Subject = asunto del mail
  6.      $address = correo del destinatario
  7.      $cuerpo = texto del correo
  8.      */
  9.    
  10.     require_once('PHPMailer/class.phpmailer.php');
  11.     //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
  12.  
  13.     $mail             = new PHPMailer();
  14.     $mail->IsSMTP(); // telling the class to use SMTP
  15.     $mail->Host       = "smtp.1and1.es"; // SMTP server
  16.     //    $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  17.                                             // 1 = errors and messages
  18.                                             // 2 = messages only
  19.     $mail->SMTPAuth   = true;                  // enable SMTP authentication
  20.     $mail->Host       = "smtp.1and1.es"; // sets the SMTP server
  21.     $mail->Port       = 587;                    // set the SMTP port for the GMAIL server
  22.     $mail->Username   = "[email protected]"; // SMTP account username
  23.     $mail->Password   = "xxxxxxxxx";        // SMTP account password
  24.     $mail->SetFrom("[email protected]","Intranet");
  25.     $mail->AddReplyTo("[email protected]","Intranet");
  26.    
  27.     $mail->Subject    = $Subject;
  28.  
  29.  
  30.     $mail->MsgHTML("<html>
  31.            <body>
  32.                <STYLE type='text/css'>
  33.                    
  34.                    body{
  35.                        font-family: Arial, Helvetica, sans-serif;
  36.                        font-size: 12px;
  37.                        color: #415178;
  38.                        font-weight: normal;
  39.                    }
  40.                    a:link, a:visited {
  41.                      
  42.                        color: #b38ebe;
  43.                        text-decoration: none;
  44.                    }
  45.                    a:hover {
  46.                        color: #8f5f9d;
  47.                        font-weight: normal;
  48.                        text-decoration: underline;
  49.                    }
  50.                  
  51.                </STYLE>
  52.                <table bgcolorborder='0' cellspacing='0' cellpadding='0' width='600' align='center'>
  53.                    <tr>
  54.                        <td>
  55.                            <p><a href='http://xxx' title='Intranet'><img src='imagenes/logos.png' title='Intranet' alt='Intranet'/></a></p>
  56.                        </td>
  57.                    </tr>
  58.                    <tr>
  59.                        <td>
  60.                        <table border='0' cellspacing='0' cellpadding='0' width='580' align='center'>
  61.                                <p><br></p>
  62.                                <p style='font-family:Arial, Helvetica, sans-serif; font-size:26px; color:#ff9900;'>>> Intranet</p>
  63.                                <p>$cuerpo</p>
  64.                                <p><b><i>Recuerde tratar el contenido de este correo con privacidad.</i></b></p>
  65.                        </table>
  66.                        </td>
  67.                    </tr>
  68.                </table>
  69.            </body>  
  70.        </html>
  71.    ");
  72.  
  73.     $mail->AddAddress($address, $address);
  74.    
  75.     $mail->Send();
  76.  
  77. }
  78. ?>

Aunque lo anterior no de respuesta a tu problema... como alternativa, espero que te sirva.

Saludos.

**EDITO:

La clase puedes descargarla de aqui: https://github.com/PHPMailer/PHPMailer
La funcion la puedes probar asi: enviar_mail("prueba", "[email protected]", "asdfasddas");
__________________
Follow me on twitter @franbedia

Última edición por fbedia; 26/11/2014 a las 04:06 Razón: Agregar info
  #6 (permalink)  
Antiguo 26/11/2014, 10:22
Avatar de cubeman  
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

Gracias a ti también. Todavía no he probado lo anterior, pero lo haré en un rato. Si no funciona, pasaré a la siguiente propuesta ;) Sí había leído ya por la red que lo de PHPMailer es una bendición del cielo para evitar errores con los caracteres especiales.
  #7 (permalink)  
Antiguo 26/11/2014, 12:05
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 6 meses
Puntos: 2
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

Si es por eñes, tildes y otros símbolos, yo utilizo esto:

Código PHP:
Ver original
  1. ini_set('default_charset', 'utf-8');

Y si quiero que esos caracteres se guarden en la base de datos, 1 de estas 2 (prefiero la segunda, estoy más acostumbrado a que las queries son insert, select, update, delete...):
Código PHP:
Ver original
  1. $conexion->query('SET NAMES utf8');
  2. $conexion->set_charset("utf8");

Aunque no estoy seguro si algo de esto te soluciona tu problema.
  #8 (permalink)  
Antiguo 26/11/2014, 12:14
Avatar de cubeman  
Fecha de Ingreso: enero-2013
Mensajes: 12
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Problema con tildes en formulario (no es el típico, creo...)

Gracias por tus consejos. Lo tendré en cuenta.

Etiquetas: Ninguno
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 19:25.