Foros del Web » Programando para Internet » PHP »

Como eliminar %20 en la barra de direcciones??

Estas en el tema de Como eliminar %20 en la barra de direcciones?? en el foro de PHP en Foros del Web. Buenas, tengo un listado de productos. cada uno tiene un link con lo siguiente a otra pagina para mostrar mas informacion del producto: <a href="productos.php?familia=<?echo ...
  #1 (permalink)  
Antiguo 03/02/2004, 12:28
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Como eliminar %20 en la barra de direcciones??

Buenas, tengo un listado de productos. cada uno tiene un link con lo siguiente a otra pagina para mostrar mas informacion del producto:

<a href="productos.php?familia=<?echo $row['familias']?>">

productos.php?familia=Soplantes%20para%20aire%20in dustrial%20hasta%202%20bar

pq se me muestra asi? hay alguna manera de hacer que esto no me salga? alguna manera de hacer que no se vea en la url la variable?

salu2
  #2 (permalink)  
Antiguo 03/02/2004, 13:17
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
Para que no salgan las variables por la URL una solución es enviarlas por POST en vez de GET.

Respecto al %20, algunos navegadores sustituyen el espacio en blanco por la cadena %20 . Lo único que se me ocurre es que o evitas los espacios en blanco o colocas tú un carácter concreto que te permita posteriormente volver a colocar espacios cuando los necesites. No sé si me expliqué.

Antes de enviar la variable sustituyes los espacios en blanco por el carácter +, por ejemplo. Cuando vayas a mostrar el valor de esas variables vuelves a sustituir el carácter + por espacios en blanco.

Más o menos es lo mismo pero al menos limpia un poco más el código los caracteres + en vez de %20. Aunque si te decides por el envío mediante el método POST, todo esto no te haría falta ya que lo de colocar la cadena %20sólo es de algunos navegadores en la barra de direcciones.

Suerte!

Un beso

P.D.: Un ejemplo de función en PHP para sustituir caracteres/subcadenas en una cadena es str_replace()
  #3 (permalink)  
Antiguo 03/02/2004, 13:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Como ha dicho, eso te lo hacen automaticamente algunos navegadores. Y es lo correcto. Hay que codificar los caracteres "extraños", segun esta definido en el protocolo.

Es mas, habria que usar la funcion urlencode() (www.php.net/urlencode) o rawurlencode() (www.php.net/rawurlencode), para los valores de los parametros.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 03/02/2004, 13:42
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias a los 2. una cosa helvira, si es un vinculo, como puedo enviarlo mediante post??

salu2
  #5 (permalink)  
Antiguo 03/02/2004, 14:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En un vinculo "link" .. no puedes definir metodo POST directamente .. Puedes "simularlo" con una conexión vía sockets o usando las librerias cURL de PHP. Y todo esto sería valido entre datos que genere PHP o lea de algún sitio (una BD .. etc) o bien que al script que haga el link final usando estos métodos de sockets o similares reciba sus datos por POST desde un formulario (sino en algún momento debes usar GET y ya no tendría sentido complicarse ..)

La otra opción más simple (dependiendo de la situación) es que propagues esas variables en una sesión o cookie.


También puedes usar identificadores numericos en lugar de tus "frases" .. es decir:

producto.php?familia=1

donde familia=1 es "Soplantes para no se que y bla blab la".

(si es que esa cadena es fija .. por qué si llega desde un formulario .. como ya te han dicho usa método POST y asunto zanjado).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 04/02/2004, 03:28
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
La respuesta de Cluster es bastante completa y acertada pero para que complicarse!!!

Un enlace puede hacer las veces de un submit de un formulario y puedes definir un formulario con todos sus campos ocultos (tipo hidden) y cuando hagan clic en tu enlace se ejecute el action (página de destino de tu enlace) de ese formulario.

Más sencillo imposible. Aquí ya tienes que mezclar un poco de JavaScript.

Te pongo un ejemplo de como sería:

Código PHP:
<html>
<
head>
<
title></title>
</
head>
<
body>

<
form name="MiForm" action="productos.php" method="POST">
<
input type="hidden" value="Soplantes para aire industrial" name="familia">

<
a href="javascript:document.MiForm.submit();void(0);">Submit</a>
</
form>

</
body>
</
html
Suerte!
  #7 (permalink)  
Antiguo 04/02/2004, 09:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Buena solución desde javacript la que propone Helbira (cuando se sabe javascript xDD)

Pero como soy cabezón .. yo prefiero usar indentificadores en mis links en lugar de "frases". Por lo menos el método GET tiene restricción de tamaño máximo (mas que el POST) y con el método javascript .. esos "links" no serían indexados por buscadores (de hecho ya dán problemas con links tipo: nose.php?id=1 .. como para "ocultarlo" más con javascript).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 04/02/2004, 09:43
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias a los dos. muy interesante tu solucion cluster. esto vendria a ser como reladcionar dos tablas, no? intentare hacer lo que me dices, y ois cuento

salu2
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:14.