Foros del Web » Programando para Internet » PHP »

en local funciona, en remoto no

Estas en el tema de en local funciona, en remoto no en el foro de PHP en Foros del Web. Hola amigos. Necesito vuestra ayuda. En un script, paso una consulta por la url para ir filtrando una pagina. Si lo hago en local, funciona ...
  #1 (permalink)  
Antiguo 15/06/2011, 01:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
en local funciona, en remoto no

Hola amigos. Necesito vuestra ayuda. En un script, paso una consulta por la url para ir filtrando una pagina. Si lo hago en local, funciona perfecto, si lo hago en remoto, no funciona porque la consulta no muestra resultados.
He estado desmenuzando el codigo hasta ver donde falla, y es en lo siguiente.
He cogido lo que devuelve la url en la barra del navegador, tanto en local como en remoto, y este es el resultado.

EN LOCAL

?consulta=SELECT+total_retencion%2C+t_facturas.id_ factura%2C+t_facturas.id_empresa%2C+numero_factura %2C+fecha_factura%2C+nombre_empresa%2C+tipo_empres a%2C+fecha_entrada%2C+fecha_visto_bueno%2C+suma%2C +descuento%2C+total_descuento%2C+base_imponible%2C +iva%2C+total_iva%2C+retencion%2C+total_factura%2C +total_pagar+FROM+t_facturas+INNER+JOIN+t_empresas +ON+t_empresas.id_empresa+%3D+t_facturas.id_empres a+WHERE+tipo_empresa+%3D+%27proveedores%27+AND+t_f acturas.id_empresa+%3D+%271%27+ORDER+BY+fecha_fact ura+DESC%2C+fecha_entrada+DESC&nombre_pagina=Resul tado+de+la+Busqueda%3A+%3Cstrong%3EProveedores%3A+ VOLCONSA+CONSTRUCCION+Y+DESARROLLO+DE+SERVICIOS%2C +S.A.%3C%2Fstrong%3E&page=2

EN REMOTO

?consulta=SELECT+total_retencion%2C+t_facturas.id_ factura%2C+t_facturas.id_empresa%2C+numero_factura %2C+fecha_factura%2C+nombre_empresa%2C+tipo_empres a%2C+fecha_entrada%2C+fecha_visto_bueno%2C+suma%2C +descuento%2C+total_descuento%2C+base_imponible%2C +iva%2C+total_iva%2C+retencion%2C+total_factura%2C +total_pagar+FROM+t_facturas+INNER+JOIN+t_empresas +ON+t_empresas.id_empresa+%3D+t_facturas.id_empres a+WHERE+tipo_empresa+%3D+%5C%27proveedores%5C%27+A ND+t_facturas.id_empresa+%3D+%5C%271%5C%27+ORDER+B Y+fecha_factura+DESC%2C+fecha_entrada+DESC&nombre_ pagina=Resultado+de+la+Busqueda%3A+%3Cstrong%3EPro veedores%3A+VOLCONSA+CONSTRUCCION+Y+DESARROLLO+DE+ SERVICIOS%2C+S.A.%3C%2Fstrong%3E&page=2

La diferencia de un resultado y otro, esta en esta parte

EN LOCAL

3D+%27proveedores%27

EN REMOTO

3D+%5C%27proveedores%5C%27

y en esta parte

EN LOCAL

t_facturas.id_empresa+%3D+%271%27

EN REMOTO

t_facturas.id_empresa+%3D+%5C%271%5C%27

Resumiendo, en remoto, en la condicion de la consulta, añade 5C al principio de la condicion y al final.

La pregunta es si sabeis porque añade esto, es decir, que es esto de 5C que no me hace funcionar la consulta.

Añado que he probado las funciones urlencode, stripslashes y addslashes pero devuelve lo mismo.

A ver que me podeis decir. Gracias de antemano. Un saludo.
  #2 (permalink)  
Antiguo 15/06/2011, 03:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: en local funciona, en remoto no

%5C = \
%27 = '

Estas enviando toda la consulta por URL... lo que me parece muy mala practica y:

tipo_empresa = 'proveedores' AND t_facturas.id_empresa = '1'

Las comillas simples (o apostrofes) son los causantes de ese %5C porque el servidor remoto seguramente tiene la directiva de PHP magic_quotes en ON y, la solucion rapida seria:

$consulta = stripslashes($_GET['consulta']);

Pero, ya que tienes a la vista muchos datos de la tabla, seria muy facil inyectar codigo malicioso para obtener o dañar la informacion.

Solucion semi-rapida:
1- Envia por URL solo los datos que necesites para filtrar los resultados, ejemplo: ?tipo_empresa=proveedores&id_empresa=1&otro_dato=v alor
2- Tomas cada variable recibida y armas la consulta, verificando que cada campo sea del tipo esperado y pasandolo por mysql_real_escape_string()

Solucion ideal:
Busca informacion sobre seguridad e inyeccion SQL, aplica todo lo que aprendas y no tomes las opciones faciles como enviar toda la consulta por URL.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/06/2011, 10:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: en local funciona, en remoto no

Hola, gracias por tu respuesta.

Estaba realizando unas pruebas con la barra del navegador, precisamente estudiando el tema de las inyecciones de codigo.

De ahí, la pregunta que puse en el foro.

En cualquier caso, gracias por la información.

Etiquetas: local, remoto
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 04:38.