Foros del Web » Programando para Internet » PHP »

urlencode en get

Estas en el tema de urlencode en get en el foro de PHP en Foros del Web. Hola... Tengo el siguiente problema... paso una cadena por GET con urlencode y cuando lo leo a través por $_GET['var'] me mantiene el caracter '/' ...
  #1 (permalink)  
Antiguo 24/02/2005, 11:18
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 13 años, 6 meses
Puntos: 0
urlencode en get

Hola...

Tengo el siguiente problema...

paso una cadena por GET con urlencode y cuando lo leo a través por
$_GET['var']

me mantiene el caracter '/'

ejemplo:
url= http://artexoops/modules/contact/ind...%25%27&debut=0

variable: city LIKE \'%CARACAS%\'

codigo:
index.php?pa=$pa&order=".urlencode($order)

mil gracias
  #2 (permalink)  
Antiguo 24/02/2005, 11:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. es que ahí te hace falta:

stripslasshes()

Un saludo,
  #3 (permalink)  
Antiguo 24/02/2005, 13:02
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 13 años, 6 meses
Puntos: 0
hola cluster...

yo marco la cadena con urlencode para pasarla por GET en la URL.

al hacer stripslashes($valor), continúa manteniendo los /

qué puedo hacer???

Lo más curioso es que no me ocurre en todos los servidores, la diferencia entre ellos es la versión de PHP..

gracias
  #4 (permalink)  
Antiguo 24/02/2005, 13:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. como lo usas exactamente? ..

primero tienes que aplicar tu urldecode() y luego (de lo que resulte o anidado) tu stripslashes() .. no al reves .. pues antes de aplicar urldecode() si te fijas .. tu "cadena" no tiene ningún \ que quitar .. por eso no actua.

El hecho de que se añadan automáticamente un \ (caracter de control de "escape") a una comilla (simple/doble) para tus datos que propagas por GET (o cookies) sucede por la configuración de la directiva:

magic_quotes_gpc (de tu php.ini) que suele estar a ON .. es decir .. por defecto se añaden esos \ (slash) a ese tipo de caracteres para evitar problemas al propagarlos por el URL ...

Un saludo,

Un saludo,
  #5 (permalink)  
Antiguo 24/02/2005, 13:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A todo esto .. es muyyyyyyyy peligroso que hagas esto:

index.php?variable=código SQL ...

fijate que lo mismo que tu introduces un simple "nose LIKE tal cosa" ..podría poner DELETE FROM tabla o algo así y borrar tu BD cuando no usar otros comandos SQL para obtener tus usuarios .. borrarlos y crear los mios .. En fin . .no es Seguro lo que estás haciendo .. NOOOO deberías pasar por el URL nada de SQL sólo las variables que necesites .. NUNCA SQL puro!!! ..

Ten presente tambien que los datos que se pueden pasar por el URL no son infinitos ..

Un saludo,
  #6 (permalink)  
Antiguo 24/02/2005, 14:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 159
Antigüedad: 13 años, 6 meses
Puntos: 0
gracias por tus consejos... solo estoy haciendo experimentos en casa... no es una web online...

pero aprovechando tus conocimiento... te contaré...

tengo una pantalla de buscar dónde el usuario puede seleccionar diferentes campos para buscar en la bd, y los resultados serán paginados cuando sean mayores de 15. Entonces cómo mantengo entre página y página la query original del usuario????

gracias
  #7 (permalink)  
Antiguo 24/02/2005, 14:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. tu buscador textualmente deja que el usuario escriba "SQL"? ..

O lo basas en base a factores como "cierto campo" y cierta tabla de tu BD .. para las busquedas filtradas?

Lo que debes generar son links tipo:
buscar.php?por_campo=valor&buscar_termino=valor

para que luego en función de esos parámetros compongas tu SQL en el script PHP (no que se lo dés en el URL):

Código PHP:
$sql="SELECT * FROM tabla WHERE ".mysql_escape_string($_GET['por_campo'])." LIKE '%".mysql_escape_string($_GET['buscar_termino'])."'%"
La función mysql_escape_string() justamente evita algunos problemas de "SQL inyection" para que no se pueda ejecutar ahí más SQL del que tu quieres.

A todo esto .. tienes como un médio más seguro para "propagar" datos entre tus scripts de tu aplicación las sesiones (www.php.net/session) . Datos que permanecen en el servidor .. pero igualmente en algún momento se los "envias" por el URL (tampoco es seguro esto .. la primera instancia podría ser igualmente "alterada" no así las subsiguientes peticiones).

Un saludo,
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 20:31.