Foros del Web » Programando para Internet » PHP »

No me respeta el formato

Estas en el tema de No me respeta el formato en el foro de PHP en Foros del Web. Hola a todos. Tengo un problema de formato, gracias a la ayuda aquí en el foro tengo un código que envía datos desde un flash ...
  #1 (permalink)  
Antiguo 15/05/2007, 13:05
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Pregunta No me respeta el formato

Hola a todos.

Tengo un problema de formato, gracias a la ayuda aquí en el foro tengo un código que envía datos desde un flash a un e-mail, pero el formato no lo respeta y se va todo de corrido, el código que tengo es este:

Código PHP:
<?php 
/* 
Si enviaste los datos por post, $nombre y las demás variables deberían ser 

$nombre=$_POST['nombre']; y el resto con el mismo formato.  
*/ 
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";  
$adminaddress "[email protected]"
$date date("d/m/Y H:i:s"); 
if (
$REMOTE_ADDR == ""$ip "no ip"
else 
$ip getHostByAddr($REMOTE_ADDR); 
$cuerpo="El usuario $nombrereg ha dejado sus datos \nFecha: $date\Nombre: $nombrereg\E-mail: $mailreg\Empleado: $numempleado\Agente o Corredor: $numagente\Calificación: $calif"
mail("$adminaddress","Solicita ayuda $nombrereg",$cuerpo,$headers); 
//y aquí un echo '&status=enviado correctamente&'; si querés mandarle la variable status a 

flash o un header("gracias.php"); si quer&#233;s redireccionar a una página de agradecimiento 
?>
El flash tiene este código:

Código:
loadVariables("http://www.enkiproducciones.com/pld/test.php", "", "POST");
Toma las variables asignadas desde campos de texto de entrada, las toma bien.

y me llega así al e-mail:
Con el encabezado "solicita ayuda" pero sin el nombre de usuario ($nombrereg)

Cita:
El usuario Oliver ha dejado sus datos Fecha: 15/05/2007 12:54:14\Nombre: Oliver\E-mail: [email protected]\Empleado: 12345\Agente o Corredor: 09876\Calificación: 9.25
Cómo hago para que me respete el formato

Y me llega desde [email protected] no desde $adminaddress = "[email protected]";

Qué lío, cuántas preguntas, espero me puedan ayudar en algo, mil mil gracias.

Última edición por RobiBaggio; 15/05/2007 a las 13:11
  #2 (permalink)  
Antiguo 15/05/2007, 21:18
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato :'(

Bueno, solo saber por qué con el "\" no da el salto de línea ???

Gracias!
  #3 (permalink)  
Antiguo 15/05/2007, 21:45
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 14 años, 9 meses
Puntos: 0
Re: No me respeta el formato :'(

hola RobiBaggio
El salto de línea es \n (barra invertida seguido de una n), entonces en esta linea cambiala asi
$cuerpo="El usuario $nombrereg ha dejado sus datos \n Fecha: $date \n Nombre: $nombrereg \n E-mail: $mailreg \n Empleado: $numempleado \n Agente o Corredor: $numagente \n Calificación: $calif";
Espero te sirva
__________________
Suerte! (;Þ)>-<[
------------------------
http://www.gira-sol.com.ar
  #4 (permalink)  
Antiguo 15/05/2007, 21:58
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato :'(

Gracias pero, nones, lo estoy probando y lo modifiqué tal cual:

Código PHP:
$cuerpo="El usuario $nombrereg ha dejado sus datos \n Fecha: $date \n Nombre: $nombrereg \n E-mail: $mailreg \n Empleado: $numempleado \n Agente o Corredor: $numagente \n Calificación: $calif"
y me llega así:

Cita:
El usuario Oliver ha dejado sus datos Fecha: 15/05/2007 21:51:38 Nombre: Oliver E-mail: [email protected] Empleado: 12345 Agente o Corredor: 09876 Calificación: 9.25
Todo en una sola línea... :S

Qué puede pasar??? Cómo se guarde el php?? Si lo guardo como UTF-8 los acentos ya no responden, no se, quizá algo de eso... Help!! :P
  #5 (permalink)  
Antiguo 16/05/2007, 00:15
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.103
Antigüedad: 15 años, 8 meses
Puntos: 791
Re: No me respeta el formato

A ver, si ponemos cabeceras para que el mail tenga formato html ($headers .= "Content-type: text/html; charset=iso-8859-1\r\n";), los saltos de línea no deben definirse ni como \n, ni como \r ni como \r\n, porque los mismos no tienen nada que ver con html. Para html debe usarse <br> o, mejor aún, <br />.
En cuanto al from, sale mal porque justamente, el from debe definirse también dentro de los headers.
Fijate si esto te ayuda a definir mejor todo tu formulario: http://www.disegnocentell.com.ar/new...los.php?id=123
y este otro para html:
http://www.disegnocentell.com.ar/new...los.php?id=119
  #6 (permalink)  
Antiguo 16/05/2007, 09:34
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato

Lo reviso, hago pruebas y aviso

Gracias nuevamente Panino5001
  #7 (permalink)  
Antiguo 16/05/2007, 13:47
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 14 años, 9 meses
Puntos: 0
Re: No me respeta el formato

Cita:
Iniciado por Panino5001 Ver Mensaje
A ver, si ponemos cabeceras para que el mail tenga formato html ($headers .= "Content-type: text/html; charset=iso-8859-1\r\n";), los saltos de línea no deben definirse ni como \n, ni como \r ni como \r\n, porque los mismos no tienen nada que ver con html. Para html debe usarse <br> o, mejor aún, <br />.
En cuanto al from, sale mal porque justamente, el from debe definirse también dentro de los headers.
Fijate si esto te ayuda a definir mejor todo tu formulario: http://www.disegnocentell.com.ar/new...los.php?id=123
y este otro para html:
http://www.disegnocentell.com.ar/new...los.php?id=119
Totalmente de acuerdo, no miré los headers
__________________
Suerte! (;Þ)>-<[
------------------------
http://www.gira-sol.com.ar
  #8 (permalink)  
Antiguo 16/05/2007, 14:02
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato

Pues sí.. con el <br> ya hace el salto de línea... Lo otro lo reviso con más calma y seguro queda...

Gracias, muchas gracias.
  #9 (permalink)  
Antiguo 16/05/2007, 20:29
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato

Esteeee... Siguiendo los ejemplos de la página web, he estado armando o reestructurando el archivo php, llevo un rato moviéndole y nada... en el ejemplo del web que mencionas no esta definido lo de HTML... y si se lo agrego en las definiciones simplemente no lo toma, ya respeta los saltos de línea con /r (con <br> me manda a la burguer) y los acentos igual no los muestra... el código que resultó reemplazando elementos del ejemplo es el siguiente:

Código PHP:

//Comienzo definiendo variables igual que en el ejemplo. Y el $nombrereg lo
// toma literal, no como variable.

<?php 
$destino
='[email protected]'
$origen_nombre='$nombrereg'
$origen_mail='$mailreg'
$subject='Resultado Curso PLD $nombrereg'

//En el bloque siguiente defino lo de los acentos y el html

$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"

//Acá le dejo lo que tenía el anterior archivo.

$date date("d/m/Y H:i:s"); 
if (
$REMOTE_ADDR == ""$ip "no ip"
else 
$ip getHostByAddr($REMOTE_ADDR);

$headers "From: $origen_nombre <$origen_mail>\r\n"
$headers .= "Reply-To: $origen_mail\r\n";  
$headers .= "Return-Path: $origen_nombre <$origen_mail>\r\n";   
$mensaje="El usuario $nombrereg ha dejado sus datos \r Fecha: $date \r Nombre: $nombrereg \r E-mail: $mailreg \r Empleado: $numempleado \r Agente o Corredor: $numagente \r Calificación: $calif"

mail($destino,$subject,$mensaje,$headers); 
echo 
"&contestar=Estado: mensaje enviado correctamente.&"
?>
El anterior archivo, dodne usaba <br> tiene formato y el asunto del mail lo respeta, solo falta corregir lo del origen del mail... pero nada que ver con el ejemplo del sitio web que esta más limpio...

Una manito porfavor, estoy tratando de entender cómo colocar todo pero no encuentro la manera exacta... Gracias

-------------
No estaría enloquecido si dejara de hacer cosas raras el codigo

Ya le valió el:
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

Y los acentos nuevamente no salen

Última edición por RobiBaggio; 16/05/2007 a las 21:00
  #10 (permalink)  
Antiguo 17/05/2007, 01:41
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.103
Antigüedad: 15 años, 8 meses
Puntos: 791
Re: No me respeta el formato

Van comentarios dentro del código ;)
Código PHP:
<?php 
/*
Todas las variables recibidas desde Flash deberían estar definidas con este formato:
si usás el método post:
$variable= $_POST['variable'];
si usás el método get:
$variable= $_GET['variable'];
Yo lo dejo como vos lo pusiste, pero tené en cuenta que si no lo hacés, en versiones más
modernas o mejor configuradas de php no va a funcionarte
*/
$destino='[email protected]'
$origen_nombre=$nombrereg
$origen_mail=$mailreg
$subject="Resultado Curso PLD $nombrereg"
$date date("d/m/Y H:i:s"); 
if (
$REMOTE_ADDR == ""$ip "no ip"
else 
$ip getHostByAddr($REMOTE_ADDR);
/*
acá, dos consideraciones:
1) si no colocás el punto luego de la primera declaración de $headers
en lugar de sumarle cosas la redefinís (era lo que te pasaba)
2)Los 'enters' que se usan en los headers dependen del sistema operativo con que 
trabajes, de manera que conviene averiguarlo primero con algo como lo que sigue:
*/
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) { 
  
$eol="\r\n"
} elseif (
strtoupper(substr(PHP_OS,0,3)=='MAC')) { 
  
$eol="\r"
} else { 
  
$eol="\n"
}
$headers "MIME-Version: 1.0$eol"
$headers .= "Content-type: text/html; charset=iso-8859-1$eol";
//en esta línea era donde reescribías la variable $headers al no poner el punto,
//que es es signo de concatenación de php
$headers .= "From: $origen_nombre <$origen_mail>$eol"
$headers .= "Reply-To: $origen_mail$eol";  
$headers .= "Return-Path: $origen_nombre <$origen_mail>$eol";   
/*
Acá, en el cuerpo del mensaje, como definiste en los headers que eta html, tenés que usar
<br> para los saltos de línea. Si el mail se enviara como texto plano, sí funcionaría el 
\n o el \r o el \r\n (depende del sistema operativo)
*/
$mensaje="El usuario $nombrereg ha dejado sus datos <br> Fecha: $date <br> Nombre: $nombrereg <br> E-mail: $mailreg <br> Empleado: $numempleado <br> Agente o Corredor: $numagente <br> Calificación: $calif"

mail($destino,$subject,$mensaje,$headers); 
/*
acá hay que fijarse cómo se llama la variable que es devuelta a flash: si es 
contestar, se deja tal cual, si se llama de otra manera, se reemplaza; si no se usa, se elimina
la línea:
*/
echo "&contestar=Estado: mensaje enviado correctamente.&"
?>

Última edición por Panino5001; 17/05/2007 a las 03:09
  #11 (permalink)  
Antiguo 17/05/2007, 10:49
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 15 años, 1 mes
Puntos: 150
Re: No me respeta el formato

Wow!!! Eres mi ídolo!!! Con esto he aprendido más de PHP que leyendo ejemplos en sitios web !!!

Ya quedó, solo con un ajuste ... En el ejemplo dices:

charset=iso-8859-1

Lo cambié por:

charset=utf-8

Y voilá !!!

Que he de decir que el nombre que llega como remitente no respeta los acentos, pero no necesito ese nombre, solo eliminé la línea:

$origen_nombre=$nombrereg;

Y llega el remitente como el mail, que esta perfecto

Muchas gracias man, en verdad te lo agradezco, sobre todo la explicación, con eso ya puedo entender cómo van las cosas en el código.

  #12 (permalink)  
Antiguo 18/05/2007, 03:27
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.103
Antigüedad: 15 años, 8 meses
Puntos: 791
Re: No me respeta el formato

Me alegra que te haya servido
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 18:49.