Foros del Web » Programando para Internet » PHP »

problemas con consulta y register globals

Estas en el tema de problemas con consulta y register globals en el foro de PHP en Foros del Web. Hola, estoy teniendo un problema en mi aplicacion PHP, el mismo ocurre solo en el hosting, no así en mi servidor local. tengo la siguiente ...
  #1 (permalink)  
Antiguo 09/03/2010, 20:10
 
Fecha de Ingreso: septiembre-2009
Ubicación: Uruguay
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta problemas con consulta y register globals

Hola, estoy teniendo un problema en mi aplicacion PHP, el mismo ocurre solo en el hosting, no así en mi servidor local.

tengo la siguiente linea
Código PHP:
 $buscarCat "select NombreCategoria from categorias where idCat=".$_GET["cat"]; 
esta consulta devuelve el registro correspondiente en mi servidor local, pero cuando la ejecuto en el hosting, no devuelve nada.
Por lo tanto opté por hacer un echo de $buscarCat y el resultado fue el siguiente...

Código:
select NombreCategoria from categorias where idCat=\'valor\'
agrega \' antes y despues del valor de $_GET["cat"]

por que sucede esto? consulte al proveedor de hosting y dice que register_globals esta en OFF.

como lo soluciono???

muchas gracias
  #2 (permalink)  
Antiguo 09/03/2010, 21:06
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: problemas con consulta y register globals

Esto se debe a las "magic quotes"; no tiene nada que ver con el register globals. Puedes buscar información al respecto en el manual de PHP.
Yo personalmente, y precisamente para evitar estos problemas entre distintas configuraciones de php, uso esta sencilla función:

Código PHP:
Ver original
  1. function clear_gpc_slashes($string) {
  2.     return (get_magic_quotes_gpc()) ? stripslashes($var):$var;
  3. }

De tal forma que tu código quedaría así:
$buscarCat = "select NombreCategoria from categorias where idCat=".clear_gpc_slashes($_GET["cat"]);

Así te funcionará tanto en local como en el servidor.

Sin embargo te recomiendo encarecidamente que leas al respecto de las magic quotes en el manual, ya que implica temas de seguridad importantes y que estás pasando por alto.(Inyección SQL para más referencias)

Saludos.
__________________
Perros y cachorros
  #3 (permalink)  
Antiguo 09/03/2010, 23:52
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 9 meses
Puntos: 11
Respuesta: problemas con consulta y register globals

y si estas poniendo así a secas tu GET/POST OTROS en tu query sugiero uses también la función mysql_real_escape_string como prevención básica en tus queries.


slaudos
__________________
http://dev.wsnetcorp.com
  #4 (permalink)  
Antiguo 10/03/2010, 06:48
Avatar de normal  
Fecha de Ingreso: octubre-2009
Ubicación: Ibagué, Colombia
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problemas con consulta y register globals

En la documentación en linea de PHP, explica como desabilitar las famosas "magic quotes", lo explica de las dos maneras: en tiempo de ejecucion o directamente en el archivo de configuracion.

El link es el siguiente http://es.php.net/manual/en/security.magicquotes.php

Última edición por normal; 10/03/2010 a las 06:49 Razón: elñ link no q
  #5 (permalink)  
Antiguo 10/03/2010, 20:10
 
Fecha de Ingreso: septiembre-2009
Ubicación: Uruguay
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: problemas con consulta y register globals

Gracias por las respuestas

al final lo solucione con el siguiente script

Código PHP:
if (get_magic_quotes_gpc()) {
    
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list(
$key$val) = each($process)) {
        foreach (
$val as $k => $v) {
            unset(
$process[$key][$k]);
            if (
is_array($v)) {
                
$process[$key][stripslashes($k)] = $v;
                
$process[] = &$process[$key][stripslashes($k)];
            } else {
                
$process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset(
$process);

lo que no sabria decir exactamente es si esto deja algun hueco de seguridad, yo creería que no, pero agradeceria si alguien me dice si es asi...

soy bastante nuevo trabajando con php y este tipo de temas y problemas recien los empiezo a conocer.

muchas gracias

Etiquetas: contrabarra, globals, register, string, variables, cadenas
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 10:43.