Foros del Web » Programando para Internet » PHP »

Problema al enviar html por medio de un formulario

Estas en el tema de Problema al enviar html por medio de un formulario en el foro de PHP en Foros del Web. Hola a todos, Estoy teniendo un problema muy extraño, he buscado en todos lados incluyendo otros temas de foros del web y no he localizo ...
  #1 (permalink)  
Antiguo 11/08/2007, 11:37
 
Fecha de Ingreso: noviembre-2003
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
Problema al enviar html por medio de un formulario

Hola a todos,

Estoy teniendo un problema muy extraño, he buscado en todos lados incluyendo otros temas de foros del web y no he localizo algo parecido.

Mi problema es el siguiente, estoy haciendo un formulario que envia correos con codigo html, este formulario esta hecho en javascript y es tipo WYSIWYG, ahora, todo los datos los mando a un archivo PHP que es el que hace el envio al correo en html, el problema es que mis correos no llegan como html, llegan de esta forma

<span style="font-weight: bold;">ajuste 1001</span><br>

Checando el codigo para ver como se manda vi lo siguiente:

&lt;span style=&quot;font-weight: bold;&quot;&gt;ajuste 1001&lt;/span&gt;&lt;br&gt;


Por lo visto esto esta pasando por que me esta cambiando los <> por &alt; y &gt;

mi pregunta es ¿como puedo hacer para que me reconosca < y >

Saludos a todos.
  #2 (permalink)  
Antiguo 11/08/2007, 12:14
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: Problema al enviar html por medio de un formulario

Algo sumamente fácil sería volver a reemplazar los &alt; y &gt; por < y > respectivamente.

Podrías usar la función str_replace().

Algo así serviría:
Código PHP:
// Suponiendo que el campo del formulario se llamara "texto"
$buscar = array('&alt;','&gt;');
$reemplazar array('<','>');
$texto str_replace($buscar,$reemplazar,$_POST['texto']);
// Y luego mandas el mail, teniendo en cuenta usar la variable texto. 
  #3 (permalink)  
Antiguo 11/08/2007, 14:46
 
Fecha de Ingreso: noviembre-2003
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Bonez muchas gracias por tu respuesta, no se me habia ocurrido y eso resolvio mi problema
  #4 (permalink)  
Antiguo 11/08/2007, 15:23
 
Fecha de Ingreso: noviembre-2003
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Parece que cante victoria demasiado pronto

Ahora mi problema viene que cuando mando el correo en html, en lugar de apacer espacio aparece &nbsp;,

Ejemplo como deberia ser:
Anita la huerfanita

Ejemplo como es actualmente:
Anita&nbsp;&nbsp;la&nbsp;&nbsp;huefanita

Esto si no se como cambiarlo con el str_replace, alguien me puede ayudar?
  #5 (permalink)  
Antiguo 11/08/2007, 16:13
Avatar de Spookysama  
Fecha de Ingreso: agosto-2007
Mensajes: 42
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Probaste con distintos correos? hotmail. gmail y de mas?

Proba poner el codigo aver si encontramos algo :P

Última edición por Spookysama; 11/08/2007 a las 16:19
  #6 (permalink)  
Antiguo 11/08/2007, 16:37
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Con el str_replace no podes remplazarlo?


&nbsp por " "


No te funciona?
__________________
"Las dll ya no son un problema en .NET" :patada:
  #7 (permalink)  
Antiguo 11/08/2007, 17:39
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: Problema al enviar html por medio de un formulario

Hola otra vez xcopy.

Pensé que sería que el editor cambiaba solamente los < y >, pero ahora que dices lo de los espacios... No será que usas por ahí la función
htmlentities(), ¿no?.

De todas formas, con lo que te dije antes, puedes solucionarlo, como ya ha dicho reanimar, alargando los arrays dejándolo así:

Código PHP:
$buscar = array('&alt;','&gt;','&nbsp;');
$reemplazar array('<','>',' '); // Lo último entrecomillado es un espacio
$texto str_replace($buscar,$reemplazar,$_POST['texto']); 
Aunque, si usas la función que te dije, pues igual es preferible no usarla, ya que por un lado quitas el HTML, y luego lo vuelves a aplicar. Es decir, que estás dando vueltas sin necesitarlo. Pero claro, no tengo ni idea de cómo funciona ese editor, por lo que igual hay que hacerlo así.

Saludos.
  #8 (permalink)  
Antiguo 11/08/2007, 18:47
 
Fecha de Ingreso: noviembre-2003
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Gracias por sus respuestas, lo primero que hice fue el reemplazo que me comentaron, pero no funciona .

La funcion que estoy usando es htmlspecialchars()

Espero puedan ayudarme.

A continuacion pongo el codigo

<?
include ("conexion.php");

if($_POST[tipoboletin] == "html" || $_POST[tipoboletin] == "per" ){
$_POST[textarea] = htmlspecialchars($_POST[pope]);
$_POST[textarea] = stripslashes($_POST[textarea]);

$datos = $_POST[textarea];
} else {
$_POST[textarea] = nl2br($_POST[textarea]);
$datos = htmlspecialchars($_POST[pope]);
$datos = $datos;
}

$buscar = array('&lt;','&gt;','&quot;','&nbsp;');
$reemplazar = array('<','>','"',' ');
$datos = str_replace($buscar,$reemplazar,$datos);

$base = "SELECT * FROM correos";
$sqla = mysql_query ($base);

while ($row = mysql_fetch_array ($sqla,MYSQL_ASSOC)){

$server_name = "dominioaqui.com";

$person_email ="$row[correos]";
$person_asunto ="$asunto";
$headers .="MIME-Version: 1.0\n";
$headers .="From: webmaster@$server_name\n";
$headers .="Return-path: webmaster@$server_name\n";

mail($person_email,$person_asunto,$datos,$headers) ;
?>
  #9 (permalink)  
Antiguo 11/08/2007, 18:59
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: Problema al enviar html por medio de un formulario

Y, ¿porque no sacas htmlspecialchars() y ya está?

¡Ah! El código se ve mas fácil entre [*php] y [/php] (sin asterisco :P).
  #10 (permalink)  
Antiguo 11/08/2007, 20:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 5
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Problema al enviar html por medio de un formulario

Código PHP:
//para el envío en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: noClip <[email protected]>\r\n";
$enviarmail($destinatario,$asunto,$cuerpo,$headers
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 03:15.