Foros del Web » Programando para Internet » PHP »

Problema con mi formulario...

Estas en el tema de Problema con mi formulario... en el foro de PHP en Foros del Web. Hola a todos. soy nuevo y llevo ya meses con un problema en mi formulario... Todo funciona correctamente hasta que se introducen en el campo ...
  #1 (permalink)  
Antiguo 24/04/2016, 12:44
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Problema con mi formulario...

Hola a todos. soy nuevo y llevo ya meses con un problema en mi formulario... Todo funciona correctamente hasta que se introducen en el campo comentario, 'ñ' o tildes... entonces llega a mi e-mail el contenido pero con caracteres extraños... Alguien me podría ayudar por favor?? es muy importante para mí... Gracias por adelantado...

Jose.
  #2 (permalink)  
Antiguo 24/04/2016, 13:02
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Problema con mi formulario...

Guía paso a paso para solucionar el problema de los acentos y eñes

Cotejamiento
Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas en utf_unicode_ci (más tarde en Operations > Collation de phpMyAdmin se puede cambiar)
Content type HTML
Pon en el <head> de todos los archivos HTML:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Content type PHP
Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:
header("Content-Type: text/html;charset=utf-8");
Set names
Al crear la conexión de PHP con MySQL, envía esta consulta justo tras la conexión:
mysql_query("SET NAMES 'utf8'");
(Para MySQLi escribe $acentos = $db->query("SET NAMES 'utf8'"); )
Convertir codificado a UTF-8
Convierte todo lo que esté codificado de latin1 a UTF-8
SELECT convert(cast(convert(content using latin1) as binary) using utf8) AS content
Apache
Quita el DefaultCharset del Apache o modifícalo
htmlentities
Como última y desesperada opción, quita todos los htmlentities(); y sustitúyelo por otro parser para ‘sanitizar’ los datos.

Decodificar una cadena UTF-8 con PHP - decode utf8 php

Existe una función de PHP que realiza el trabajo de conversión de los caracteres UTF8 a sus correspondientes códigos reales.

La función se llama utf8_decode() y lo que hace es convertir una cadena que realmente utiliza ISO-8859-1 pero que tiene caracteres codificados a con UTF-8. La conversión genera el string en ISO-8859-1 pero con un sólo byte para todos los caracteres, con lo que se verán correctamente.

Se utiliza así:

utf8_decode("Solución útil y apañada a UTF-8");

Devolverá una cadena el texto correctamente escrito:

Solución útil y apañada a UTF-8

Codificar una cadena al juego de caracteres UTF-8 - encode utf8 php

Existe una función para hacer justo el paso contrario, que vamos a ver también en desarrollo web .com. Es decir, partiendo de una cadena en el juego de caracteres ISO-8859-1, obtener la correspondiente traducción a UTF-8.

Esto lo podemos necesitar, por ejemplo, si nuestra base de datos está definida con UTF-8 y tenemos entrada de datos ISO-8859-1.

El uso es bien simple:

echo utf8_encode("Mañanas de programación PHP");

Y devolverá el correspondiente string convertido a UTF-8, que si lo mostramos en una página que utiliza el juego de caracteres ISO-8859-1, se vería de esta manera:

Mañanas de programación PHP

Lee e ingresa a los links de las fuentes si te es necesario, Saludos

fuente:
http://www.desarrolloweb.com/articul...8-con-php.html
http://xaviesteve.com/354/acentos-y-...-8-iso-8859-1/
  #3 (permalink)  
Antiguo 24/04/2016, 15:54
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Tengo el UTF DECODE como puedes ver en mi código... pero no consigo que acepte las ñ ni los acentos... a ver si me puedes hechar una mano... Gracias...



Cita:
<?php

if($_POST["nombre"] && $_POST["email"] && $_POST["comentario"] != ""){

$de = $_POST["nombre"];

$destino = "[email protected]";

$asunto = "FORMULARIO NUEVO";

$mensaje .= "FORMULARIO NUEVO."."\n";

$mensaje .= "\n";

$mensaje .= "NOMBRE: " . utf8_decode($_POST["nombre"]) ."\n";

$mensaje .= "\n";

$mensaje .= "EMAIL: " . utf8_decode($_POST["email"]) ."\n";

$mensaje .= "\n";

$mensaje .= "ASUNTO: " . utf8_decode($_POST["asunto"]) ."\n";

$mensaje .= "\n";

$mensaje .= "COMENTARIO: " . utf8_decode($_POST["comentario"]) ."\n";

$emailheader = "From: LO QUE TU QUIERAS <[email protected]>\r\n";

mail($destino, $asunto, $mensaje, $emailheader) or die ("Lo sentimos, tu solicitud no ha sido enviada.<br/>Intentelo de nuevo.");


} else {

if($_POST["nombre"] == ""){

echo utf8_encode ('Por favor, indica tu nombre.');

exit; }

if($_POST["email"] == ""){

echo utf8_encode ('Por favor, indica un email de contacto.');

exit; }

if($_POST["comentario"] == ""){

echo utf8_encode ('Por favor, indicanos tu comentario.');

exit; }

}

?>
  #4 (permalink)  
Antiguo 24/04/2016, 15:58
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Puede ser el problema del servidor que utilizo?
  #5 (permalink)  
Antiguo 24/04/2016, 18:51
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Problema con mi formulario...

Puedes colocar el codigo de formulario donde se ingresan los datos tambien, para ayudarte mejor.

Saludos
  #6 (permalink)  
Antiguo 25/04/2016, 07:18
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Gracias Kit13 ... pero que es el problema de mi servidor?? si cambio de servidor me apareceran las ñ y los acentos??? Gracias...

Jose.
  #7 (permalink)  
Antiguo 25/04/2016, 07:33
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Problema con mi formulario...

El problema mas parece de codificación, el servidor puede tener incidencia pero minima(charset default del Apache)... creo que si arreglas las cosas como te lo han indicado puedes obtener el resultado deseado...

Como te dicen en el ultimo mensaje, seria bueno si nos muestras todo el codigo del documento donde esta el formulario en el que estas trabajando
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #8 (permalink)  
Antiguo 25/04/2016, 08:03
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Ok, la tengo subida al servidor de hostinger... os paso link... si no os vale os pongo todo el código aquí... muchas gracias y ya me decís...


http://josebarquero.esy.es/contacto.html
  #9 (permalink)  
Antiguo 25/04/2016, 08:39
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Problema con mi formulario...

lo primero que salta a la vista en tu codigo es:

Código HTML:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

El compañero arriba te recomendo sustituir esa linea por:
Código HTML:
Ver original
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

revisa la documentación que te dejaron arriba y realiza los cambios, te ayudará
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #10 (permalink)  
Antiguo 25/04/2016, 11:16
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Ya lo cambién pero ahora no me envía el e-mail.... jolin... esto ya me pasó otra vez... sabéis cual puede ser el motivo?? Si php está bien no?? Gracias
  #11 (permalink)  
Antiguo 25/04/2016, 12:13
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problema con mi formulario...

Cual problema exactamente, tu problema primero que indicas parece un problema por utilizar varias codificaciones si usar las conversiones para que todo este acorde, como te indicaron más arriba.

Revisa punto por punto lo que te indico el compañero kip13
__________________
Unset($vida['malRollo']);
  #12 (permalink)  
Antiguo 25/04/2016, 12:52
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Problema con mi formulario...

Coloca en el archivo PHP y el HTML de las paginas que tienen que ver con el envio del formulario esto.

Content type HTML

Pon en el <head> de todos los archivos HTML:
Código PHP:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
Content type PHP
Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:
Código PHP:
header("Content-Type: text/html;charset=utf-8"); 
Una vez hecho eso borra los decode y encode que colocaste en este codigo:

Código PHP:
<?php

if($_POST["nombre"] && $_POST["email"] && $_POST["comentario"] != ""){

$de $_POST["nombre"];

$destino "[email protected]";

$asunto "FORMULARIO NUEVO";

$mensaje .= "FORMULARIO NUEVO."."\n";

$mensaje .= "\n";

$mensaje .= "NOMBRE: " utf8_decode($_POST["nombre"]) ."\n";

$mensaje .= "\n";

$mensaje .= "EMAIL: " utf8_decode($_POST["email"]) ."\n";

$mensaje .= "\n";

$mensaje .= "ASUNTO: " utf8_decode($_POST["asunto"]) ."\n";

$mensaje .= "\n";

$mensaje .= "COMENTARIO: " utf8_decode($_POST["comentario"]) ."\n";

$emailheader "From: LO QUE TU QUIERAS <[email protected]>\r\n";

mail($destino$asunto$mensaje$emailheader) or die ("Lo sentimos, tu solicitud no ha sido enviada.<br/>Intentelo de nuevo.");


} else {

if(
$_POST["nombre"] == ""){

echo 
utf8_encode ('Por favor, indica tu nombre.');

exit; }

if(
$_POST["email"] == ""){

echo 
utf8_encode ('Por favor, indica un email de contacto.');

exit; }

if(
$_POST["comentario"] == ""){

echo 
utf8_encode ('Por favor, indicanos tu comentario.');

exit; }

}

?>
Ya no es necesario decodificar o codificar puesto que estas aclarando en ambos archivos el charset indicado.

Prueba aquello y nos cuentas, espero puedas resolverlo.

Saludos.
  #13 (permalink)  
Antiguo 25/04/2016, 15:49
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Muchas gracias Kit13. no te imaginas lo que te lo agradezco... No me ha quedado claro en qué parte de mi documento de php pongo la siguiente línea de codigo que me comentas:
Cita:
header("Content-Type: text/html;charset=utf-8");
Saludos y gracias
  #14 (permalink)  
Antiguo 25/04/2016, 17:11
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Problema con mi formulario...

Aqui esta como debes tener el codigo php que colocaste alla arriba, sin nindun encode ni decode y con el head correcto.

Código PHP:
<?php 

header
("Content-Type: text/html;charset=utf-8");

if(
$_POST["nombre"] && $_POST["email"] && $_POST["comentario"] != ""){ 

$de $_POST["nombre"]; 

$destino "[email protected]"

$asunto "FORMULARIO NUEVO"

$mensaje .= "FORMULARIO NUEVO."."\n"

$mensaje .= "\n"

$mensaje .= "NOMBRE: " . ($_POST["nombre"]) ."\n"

$mensaje .= "\n"

$mensaje .= "EMAIL: " . ($_POST["email"]) ."\n"

$mensaje .= "\n"

$mensaje .= "ASUNTO: " . ($_POST["asunto"]) ."\n"

$mensaje .= "\n"

$mensaje .= "COMENTARIO: " . ($_POST["comentario"]) ."\n"

$emailheader "From: LO QUE TU QUIERAS <[email protected]>\r\n"

mail($destino$asunto$mensaje$emailheader) or die ("Lo sentimos, tu solicitud no ha sido enviada.<br/>Intentelo de nuevo."); 


} else { 

if(
$_POST["nombre"] == ""){ 

echo  (
'Por favor, indica tu nombre.'); 

exit; } 

if(
$_POST["email"] == ""){ 

echo  (
'Por favor, indica un email de contacto.'); 

exit; } 

if(
$_POST["comentario"] == ""){ 

echo  (
'Por favor, indicanos tu comentario.'); 

exit; } 



?>
Fijate que el head va al inicio, prueba de esa manera y nos avisas.

Saludos
  #15 (permalink)  
Antiguo 25/04/2016, 20:53
 
Fecha de Ingreso: abril-2016
Mensajes: 30
Antigüedad: 8 años
Puntos: 2
Respuesta: Problema con mi formulario...

Buenas buenas...

Yo tuve un problema parecido...
Primero coloqué los <head> con cotejamiento utf-8... Nada ocurrió
Luego cambié el cotejamiento de la base de datos y de las tablas... Nada ocurrió.
Lo que me funcionó fue escribir éste código al inicio del php.

Código PHP:
Ver original
  1. mysql_set_charset("utf8", $link);
($link es la conexión a la base de datos.)

Espero que te sirva esta solución.
Saludos y suerte.
  #16 (permalink)  
Antiguo 27/04/2016, 12:47
 
Fecha de Ingreso: abril-2016
Mensajes: 8
Antigüedad: 8 años
Puntos: 0
Respuesta: Problema con mi formulario...

Hola, antes que nada muchas gracias por vuestra ayuda... He cambiado el código a como me dice Kit13 pero ahora cual es mi sorpresa que no me llega ningún e-mail del formulario... ¿Puede esto estar debido al servidor o se trata de que mi código está mal?? Muchas gracias a todos
  #17 (permalink)  
Antiguo 29/04/2016, 15:52
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: Problema con mi formulario...

Me gustaria que colocases de forma completa el codigo del formulario y el php del mismo, ahora que lo has modificado para ayudarte, si lograste resolverlo me alegra.

Saludos

Última edición por kip13; 29/04/2016 a las 16:00

Etiquetas: 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 09:34.