Foros del Web » Programando para Internet » PHP »

Paremetros %

Estas en el tema de Paremetros % en el foro de PHP en Foros del Web. Hola, intento enviar como parámetros el símbolo del porcentaje (para una consulta LIKE de MySQL) y en la página de destino me llega mal. Pongo ...
  #1 (permalink)  
Antiguo 23/02/2005, 11:09
Avatar de Hurgui  
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 360
Antigüedad: 14 años, 10 meses
Puntos: 0
Exclamación Paremetros %

Hola, intento enviar como parámetros el símbolo del porcentaje (para una consulta LIKE de MySQL) y en la página de destino me llega mal. Pongo el ejemplo:

Código:
ver.php?consulta=WHERE palabrasclave LIKE '%hola%' OR titulo LIKE '%hola%'
pues en la de destino se recibe

Código:
WHERE palabrasclave LIKE \'%hola%\' OR titulo LIKE \'%hola%\'
cuando se debería recibir

Código:
WHERE palabrasclave LIKE '%hola%' OR titulo LIKE '%hola%'
Me huelo que debe haber un carácter (o dos) para enviar el porcentaje, eso o que el %20 de los espacios está interfiriendo, como puedo solucionarlo?

MUCHAS GRACIAS
  #2 (permalink)  
Antiguo 23/02/2005, 11:37
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 15 años, 7 meses
Puntos: 7
Deberias usar urlencode() y urldecode()
  #3 (permalink)  
Antiguo 24/02/2005, 01:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

www.php.net/stripslashes :
Cita:
An example use of stripslashes() is when the PHP directive magic_quotes_gpc is on (it's on by default), and you aren't inserting this data into a place (such as a database) that requires escaping. For example, if you're simply outputting data straight from an HTML form.
De todas formas, supongo que seras consciente del alto peligro que tiene enviar trozos de consultas por la URL donde todo el mundo la puede y la puede modificar.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 24/02/2005, 08:20
Avatar de Hurgui  
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 360
Antigüedad: 14 años, 10 meses
Puntos: 0
Se que es una chapuza, pero como puedo hacerlo de forma segura ??
(es bastante urgente)

SALUDOS
  #5 (permalink)  
Antiguo 24/02/2005, 09:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé por qué pasas toda la consulta SQL a por el URL .. eso es altamente peligroso .. tan sólo debes pasar tus "variables" tipo:

ver.php?palabra=nose

para hacer algo tipo

$sql="SELECT * FROM tabla WHERE campo LIKE '%".mysql_escape_string($_GET['palabra'])."%'";

Un saludo,
  #6 (permalink)  
Antiguo 24/02/2005, 10:01
Avatar de Hurgui  
Fecha de Ingreso: febrero-2003
Ubicación: Madrid
Mensajes: 360
Antigüedad: 14 años, 10 meses
Puntos: 0
Yo tampoco se porque lo hago (seguramente porque soy un puto vago), lo haré como me comentais, gracias.

SALUDOS
  #7 (permalink)  
Antiguo 24/02/2005, 10:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Cita:
Iniciado por Mickel
Deberias usar urlencode() y urldecode()
pero como funcionan estas etiquetas,un ejemplo porfa,y para que sirven?
  #8 (permalink)  
Antiguo 24/02/2005, 10:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por InterSoft
pero como funcionan estas etiquetas,un ejemplo porfa,y para que sirven?
Puedes ver la documentación oficial de PHP ... (no son "etiquetas" (esto no es HTML) .. son funciones)

www.php.net/urlencode
www.php.net/urldecode

Se trata de que codifiques tu "dato" (valor) a pasar por el URL y en la otra parte (donde recibes el dato) lo decodifiques ..

Ejemplo:
Código PHP:
<a href="nose.php?variable=".urlencode($variable).">nose.php</a> 
nose.php
Código PHP:
echo urldecode($_GET['variable']); 
Así no tendras problemas con caracteres como ñ, acentos, dieresis .. %& .. etc . que puedan contener como valor una variable que tengas que propagar por el URL (aplicable también a valores en cookies).

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 03:43.