Foros del Web » Programando para Internet » PHP »

Una curiosidad sobre addslashes e stripslashes

Estas en el tema de Una curiosidad sobre addslashes e stripslashes en el foro de PHP en Foros del Web. Hola a todos... Tengo una curiosidad sobre las funciones addslashes() y stripslashes()... Me gustaría saber... en qué ocasiones debo hacer un addslashes() y en qué ...
  #1 (permalink)  
Antiguo 29/09/2004, 21:47
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
Una curiosidad sobre addslashes e stripslashes

Hola a todos...

Tengo una curiosidad sobre las funciones addslashes() y stripslashes()...

Me gustaría saber... en qué ocasiones debo hacer un addslashes() y en qué ocasiones un stripslashes. Se... que por ejemplo cuando se va a insertar algo en una base de datos se debe usar addslashes()... para que lo inserte correctamente en caso de que tenga comillas, pero quisiera saber más al respecto.

Uso estas funciones:

Código PHP:
function GPCaddslashes($a){
  if(
get_magic_quotes_gpc()){
    return 
$a;
  }else{
    return 
addslashes($a);
  }
}

function 
GPCstripslashes($a){
  if(
get_magic_quotes_gpc()){
    return 
stripslashes($a);
  }else{
    return 
$a;
  }

Las cuales me indican si esta se agregaron los slashes o no a los arrays superglobales. Por ejemplo cuando inserto algo a mi BD uso GPCaddslashes(), si voy a hacer un echo() de algo que viene por $_POST o $_GET, etc... hago GPCstripslashes...

¿En qué otras ocasiones debo aplicar las funciones?... me siento dudoso al respecto. Gracias de antemano!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 30/09/2004, 10: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, depende de como tengas configurado la directiva (php.ini)

magic_quote_gpc =

a 1 (ON) (por defecto) .. se añade un \ ("slassh") a caractereres como comillas (dobles o simples) y otros para evitar problemas en el paso de esas variables por el URL (ya sea en un formulario en modo GET o POST, URL (GET) o cookies incluso ...)

Si la usas a ON (esa directiva) tendrás que hacer un "strip" para quitar los \ de más que obtendrás.

Justamente tus funciones ven ese valor con: get_magic_quotes_gpc() para usar esas funciones de añadir o quitar los \ y .. por otro lado es buena práctica usarlo así .. asi no dependes de la configuración de tu servidor donde uses tus scripts.

Esa configuración también se podría forzar por un ini_set() (abría que verificarlo si se puede) o bajo un .htaccess para no tener que usar por ejemplo tu función GPCaddslashes() ni la otra y usar siempre stripslashes() "a ojos cerrados" (por qué forzaras la configuración para tu aplicación).

Un saludo,
  #3 (permalink)  
Antiguo 30/09/2004, 11:41
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
Claro claro...¿Pero en qué momentos debo agregarlos y en qué momento debo eliminarlos?...
Cuando se hace un INSERT hay que agregarlos, para que la data se inserte correctamente en la base de datos. Cuando se hache un echo de algo que viene por POST o GET hay que quitarlos (si ya se agregaron) para que se muetre la data correctamente. ¿Qué otros casos hay?...

Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 30/09/2004, 14: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:
Cuando se hace un INSERT hay que agregarlos, para que la data se inserte correctamente en la base de datos.
Si, .. si no usas magic_quote_gpc a ON .. antes de generar tu sentencia SQL tendrías que usar addslashes() ... pero para ese caso concreto tienes ya funciones para tal fin que hacen prácticamente lo mismo .. por ejemplo para Mysql tienes: mysql_escape_string()

Cita:
Cuando se hache un echo de algo que viene por POST o GET hay que quitarlos (si ya se agregaron) para que se muetre la data correctamente
Si, .. sino veras los \ en las comillas simples y dobles .. ejemplo:
Esto es una prueba entre 'comillas'
veras:
Esto es una prueba entre \'comillas\'

Ahí tendrías que aplicar tu stripslashes()

Cita:
¿Qué otros casos hay?...
magic_quote_gpc significa: g de GET, p de POST y c de cookies .. así que el otro caso que pueda ser necesario aplicar stripslashes() sería al leer una cookie de: $_COOKIE por ejemplo.

Cita:
Claro claro...¿Pero en qué momentos debo agregarlos y en qué momento debo eliminarlos?...
Ya te he comentado que todo depende de la configuración de PHP y que puedes "ver" o "preguntar" por dicha configuración con la función que ya te comenté y que usas en esas funciones que pusistes tu mismo. O bien puedes forzar la configuración de PHP para tu aplicación y así podrás "asumir" que siempre vas a recibir datos de "gpc" con \ que tendrás que quitar ahorrandote "ponerlos".

Un saludo,
  #5 (permalink)  
Antiguo 30/09/2004, 17:43
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
Bueno... mi server tiene magic_quote_gpc ON, solo me queda quitarlos cuando sea necesario. Mil gracias Cluster...

¿Y cuando se habla de una variable de SESSION?... ¿no aplica el gpc?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #6 (permalink)  
Antiguo 30/09/2004, 17:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues no .. no aplica. Sólo se refiere las "quotes" a todo lo que pasa por el URL como son los datos que van y vienen en una cookie o los GET/POST de un link o formulario. Las sesiones pemanecen en el servidor por eso no afecta esta directiva pero .. hay otra que podría afectar: magic_quote_runtime (si mal no recuerdo) ..

Un saludo,
  #7 (permalink)  
Antiguo 30/09/2004, 17:56
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
Si, es magic_quotes_runtime el cual es una directiva del php.ini. Con get_magic_quotes_runtime() se obtiene el valor de la directiva.

Cita:
Si magic_quotes_runtime está habilitado, la mayoría de funciones que devuelven datos de alguna clase de fuente externa, incluyendo bases de datos y archivos de texto, tendrán las comillas escapadas con barras invertidas. Si magic_quotes_sybase se encuentra habilitado también, una comilla sencilla es escapada con una comilla sencilla en lugar de una barra invertida.
Eso lo dice el PHP.net... pero qué quiere decir cuando hablan de "funciones que devuelven datos de alguna clase de fuente externa"?...
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #8 (permalink)  
Antiguo 01/10/2004, 07:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues que leen de un archivo por ejemplo (de un archivo de texto plano .. ) (creo que eso es a lo que se refiere).

Un saludo,
  #9 (permalink)  
Antiguo 01/10/2004, 08:05
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
Entiendo... bueno Cluster... como siempre tan atento. Muchas gracias!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #10 (permalink)  
Antiguo 01/10/2004, 10:44
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
Osea que el comportamiento de mi aplicacion PHP, (EN EL EXTRICTO CASO DE magic_quote_gpc) puede variar segun el server?.

Tengo PHP en mi Pc tal y como viene por defecto, (disque asi es MUY SEGURO).

Tonces al guardar datos en MySQL, hago lo que tengo que hacer...
Puede NO SUCEDER lo mismo en el serve de mi proveedor?.

(hasta el momento no he tenido problemas).

Salu2!.
  #11 (permalink)  
Antiguo 01/10/2004, 11:22
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 13 años, 3 meses
Puntos: 5
magic_quote_gpc puede estar ON o OFF... depende de tu configuración del php.ini. En tu servidor puede estar OFF o ON... aunque lo mejor y más seguro es que este en ON. Para eso están las funciones que mencioné al principio del post, donde dichas funciones verifican si el parámetro esta en ON o OFF y toma acciones al respecto.

Son dos funciones distintas y deberás usarlas dependiendo de la situación en que te encuentres en tu script, hay casos en que deberás agregar comillas y casos en que deberás quitar las \. Todo depende de lo que estes haciendo.

Lee en detalle el post completo para que tengas una idea mejor. Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
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 15:05.