Foros del Web » Programando para Internet » PHP »

Caracter "%20" en url php

Estas en el tema de Caracter "%20" en url php en el foro de PHP en Foros del Web. Estimados: Tengo la siguiente pregunta. Estoy haciendo un aplicativo en donde se genera un mail con los datos que rescato de una base de datos. ...
  #1 (permalink)  
Antiguo 31/08/2011, 07:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Caracter "%20" en url php

Estimados:

Tengo la siguiente pregunta.
Estoy haciendo un aplicativo en donde se genera un mail con los datos que rescato de una base de datos.
El problema específico es que hay unos links que me funcionan bien cuando los armo en php pero uno en particular me entrega la url con un "%20"

A continuación detallo

Código PHP:

$url 
$server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=0&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3";

$url $server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=3&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3"
El tema es que armo una tabla con estos datos. El primer link me funciona sin problemas, al pinchar sobre el me trae los datos.
El segundo link al pinchar sobre este me arma la siguiente url:

Código PHP:

http
://localhost/sistema/paginas/detalle_estadistica.php?usuario=7&tiposo%20l=3&fingreso=24-08-2011&ftermino=31-08-2011&origen=3 
Como ven me agrega un "%20" siendo exactamente casi la misma instrucción que el primer link con la diferencia de tan solo el valor de la variable "tiposol" que es 3 en el segundo link y 0 en el primer link, pero lo demás es idéntico.

¿Alguna sugerencia?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 31/08/2011, 07:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

El %20 corresponde a un espacio codificado.

Así que en algún lugar de tus variables hay un espacio, intenta limpiarlas con trim() cuando las uses.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/08/2011, 07:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

pateketrueke:

Las variables que paso por get para ese caso especial serían:
usuario=7
tiposol=3
fingreso=24-08-2011
ftermino=31-08-2011
origen=3

Es el único caso que me dá problemas, los demás funcionan ok pero este caso específico es extraño porque agrega esos caracteres.

¿En donde estaría el espacio?
  #4 (permalink)  
Antiguo 31/08/2011, 07:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

No se donde estaría el espacio pues no soy adivino y a simple vista no se ve, pero si no está en el código que muestras en algún otro punto lo estarás agregando.

PHP no tiene porque inventar ni agregar cosas que tu no programaste, así que si en la URL sale un %20, es porque en algún lado está el espacio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 31/08/2011, 07:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Bueno, la idea es que me sugieran a ver el problema de acuerdo a los datos que puse. Disculpa pateketrueke si te he quitado tiempo con mi pregunta.
  #6 (permalink)  
Antiguo 31/08/2011, 07:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Un tema a considerar es que yo imprimo en una pagina el valor y me imprime la url sin problemas ni espacios, no obstante cuando esta es enviada por email es ahi donde empieza el problema y agrega ese caracter "%20" a la url.
  #7 (permalink)  
Antiguo 31/08/2011, 07:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

No me quitas el tiempo, disculpa mi forma de expresarme, pero no es en mala onda.

Volviendo con tu problema, sería bueno conocer que estás usando en dicho código donde generas el mail entonces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 31/08/2011, 07:50
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Gracias por tu ayuda pateketrueke.

Mira este es el codigo que utilizo para enviar email:
La variable $mensaje contiene el cuerpo del mail.

Código PHP:


$boundary
md5(time()); //valor boundary
                    
$htmlalt_boundary$boundary"_htmlalt"//boundary suplementario
                    
$subject=$asunto//titulo del correo

                    //cabeceras para enviar correo en formato HTML
                    
$headers "MIME-Version: 1.0\r\n";
                    
$headers .= "Content-Type: multipart/mixed; boundary=\""$boundary"\"\r\n"//datos mixteados 
                    
$headers .= "From: ".$from."\r\n"//correo del que lo envia

                    //incia cuerpo del mensaje que se visualiza
                    
$cuerpo="--"$boundary"\r\n";
                    
$cuerpo .= "Content-Type: multipart/alternative; boundary=\""$htmlalt_boundary"\"\r\n\r\n"//contenido alternativo: texto o html
                    
$cuerpo .= "--"$htmlalt_boundary"\r\n";
                    
//modo de contenido del cuerpo del mensaje a mostrar

                    //modo texto plano
                    //$cuerpo .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
                    //$cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";

                    //modo html
                    
$cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
                    
$cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";

                    
$cuerpo .= $mensaje."<br><be>Nota: Mail enviado en forma automática, favor no responder...".$mensaje_periodo;
                     
                    
$cuerpo .= "\r\n\r\n";
                    
$cuerpo .= "--"$htmlalt_boundary"--\r\n\r\n"//fin cuerpo mensaje a mostrar

                    
$cuerpo .= "--"$boundary"--\r\n\r\n"
                    
//------------------------------------------------------------------------------

                    //funcion para enviar correo
                    
set_time_limit(600);
                    if( 
mail($to$subject$cuerpo$headers) == FALSE ){
                        
//return 0;
                        
echo "Mail NOK<br>";
                    }
                    else{
                        
//return 1;
                        
echo "Mail OK<br>";
                    } 

¿Alguna idea donde puede generarse ese maldito caracter?
  #9 (permalink)  
Antiguo 31/08/2011, 07:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

Veo que hay una variable $mensaje, pero no se ve donde la defines, ¿es ahí donde incluyes el enlace?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 31/08/2011, 07:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Exacto:

La variable $mensaje viene con todo la tabla html que se arma y en cada celda los enlaces a cada consulta.
El mail se arma y se envia exitosamente, el tema es que para un caso en particular viene con ese caracter.
Los demás enlaces funcionan sin problemas y siendo la misma consulta con la diferencia de que en la variable tiposol es diferente, nada mas.
  #11 (permalink)  
Antiguo 31/08/2011, 08:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

Pues entonces sería interesante leer como estás armando el $mensaje, ¿no te parece?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 31/08/2011, 08:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Asi escribo la variable $mensaje:


Código PHP:
$server "http://localhost/solicitudes/"
$mensaje "At. Señores.<br>A continuación se indica el desempeño de los usuarios <b>";
$mensaje .= '<br><br>';
$mensaje .= '<table border=1>';
$mensaje .= '<tr>';
$mensaje .= '<td>';
$mensaje .= 'Usuario';
$mensaje .= '</td>';
$mensaje .= '<td>';
$mensaje .= 'Solicitudes Asignadas';
$mensaje .= '</td>';
$mensaje .= '<td>';
$mensaje .= 'Solicitudes Contestadas';
$mensaje .= '</td>';
$mensaje .= '<td>';
$mensaje .= 'Solicitudes Pendientes';
$mensaje .= '</td>';
$mensaje .= '<td>';
$mensaje .= "Solicitudes Vencidas";
$mensaje .= '</td>';
$mensaje .= '</tr>';
$mensaje .= '<tr>';
$mensaje .= '<td align=center>';
$mensaje .= $u->usuarioNombre;
$mensaje .= '</td>';
$url $server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=0&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3";
$mensaje .= '<td align=center><a href="'.$url.'" target="_blank">';
$mensaje .= $u->asignadas;
$mensaje .= '</a></td>';
$url $server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=1&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3";
$mensaje .= '<td align=center><a href="'.$url.'" target="_blank">';
$mensaje .= $u->contestadas;
$mensaje .= '</td>';
$url $server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=2&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3";
$mensaje .= '<td align=center><a href="'.$url.'" target="_blank">';
$mensaje .= $u->pendientes;
$mensaje .= '</td>';
$url $server."paginas/detalle_estadistica.php?usuario=".$u->usuarioId."&tiposol=3&fingreso=".$fecha_anterior_url."&ftermino=".$fecha_actual_url."&origen=3";
$mensaje .= '<td align=center><a href="'.$url.'" target="_blank">';
$mensaje .= $u->vencidas;
$mensaje .= '</td>';
$mensaje .= '</tr>'
  #13 (permalink)  
Antiguo 31/08/2011, 08:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

Bien, aparentemente no existe un problema con el código PHP o eso es lo que pienso.

Mi teoría es que de algún modo el texto se corta a cierta longitud y por ende, al tratarse de un salto de linea se consideraría un espacio.

Lo cual es curioso, pues debería afectar también a las lineas con igual o mayor longitud.

Sería bueno que agregases verdaderos saltos de linea al final de cada linea de hipertexto, así evitas forzar el cortado automático de linea, solo es una teoría.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 31/08/2011, 08:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Cita:
Iniciado por pateketrueke Ver Mensaje
Bien, aparentemente no existe un problema con el código PHP o eso es lo que pienso.

Mi teoría es que de algún modo el texto se corta a cierta longitud y por ende, al tratarse de un salto de linea se consideraría un espacio.

Lo cual es curioso, pues debería afectar también a las lineas con igual o mayor longitud.

Sería bueno que agregases verdaderos saltos de linea al final de cada linea de hipertexto, así evitas forzar el cortado automático de linea, solo es una teoría.
¿Donde deberia agregar esos saltos de linea de hipertexto?
¿Me podrías explicar mas detalladamente?
Esto como para hacer una prueba con lo que me estás indicando.
Gracias.
  #15 (permalink)  
Antiguo 31/08/2011, 08:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracter "%20" en url php

Claro, mira:
Código PHP:
$mensaje .= '<td align=center><a href="'.$url.'" target="_blank">' "\n"
Así sería la idea, mas o menos has lo mismo con cada linea que generas en $mensaje.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 31/08/2011, 08:23
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

Gracias pateketrueke, lo voy a probar y te comento.
  #17 (permalink)  
Antiguo 31/08/2011, 08:41
 
Fecha de Ingreso: octubre-2009
Mensajes: 39
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Caracter "%20" en url php

GRACIAS pateketrueke, me ha resultado excelente tu teoría, de verdad muchas gracias. Agrege a cada linea el caracter "\n" y me resultó genial.
Muchas gracias nuevamente.

Etiquetas: tabla, url, variables, usuarios, caracteres
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 02:01.