Foros del Web » Programando para Internet » PHP »

problema con comillas y barra invertida

Estas en el tema de problema con comillas y barra invertida en el foro de PHP en Foros del Web. hola les cuento que tengo un problema con las comillas y la barra invertida. tengo una cadena la cual guardo en una db Mysql de ...
  #1 (permalink)  
Antiguo 04/08/2010, 21:02
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
problema con comillas y barra invertida

hola les cuento que tengo un problema con las comillas y la barra invertida.
tengo una cadena la cual guardo en una db Mysql de la siguiente manera

$cadena = htmlentities($cadena, ENT_QUOTES);

y para recuperarla

$cadena = html_entity_decode($cadena, ENT_QUOTES);

El problema se presenta en el servidor remoto al momento que la imprime en pantalla me antepone una barra invertida \ a cada comilla, y no se cual sea la causa ya que en Local no pasa esto...bueno eso seria.

Gracias de antemano.
  #2 (permalink)  
Antiguo 04/08/2010, 21:07
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 0
Respuesta: problema con comillas y barra invertida

utiliza la funcion addslashes(), para que para escapar de caracteres especiales, y mas para cuando los almacenas en una DB, y posteriormente los puedes recuperar, aqui te muestro un ejemplo: <?php
$cadena = "¿Te apellidas O'reilly?";

// La salida seria: ¿Te apellidas O\'reilly?
echo addslashes($cadena);
?>

Devuelve una cadena con barras invertidas delante de los caracteres que necesitan escaparse en situaciones como consultas de bases de datos, etc. Los caracteres que se escapan son la comilla simple ('), comilla doble ("), barra invertida (\) y NUL (el byte NULL).

El ejemplo más habitual de utilización de la función addslashes() es la insersción de información en una base de datos. Por ejemplo, para insertar el nombre O'reilly en una base de datos, debe escaparse previamente. Para ello, la mayoría de bases de datos emplean el carácter \, por lo que el nombre quedaría como O\'reilly. Si la opción de configuración magic_quotes_sybase tiene un valor de on, entonces las comillas simples de tipo ' se escapan añadiendo otra comilla simple delante.

La directiva de PHP magic_quotes_gpc tiene un valor por defecto de on, por lo que de forma automática se llama a la función addslashes() en todos los datos que llegan a través de los métodos GET y POST y a través de las cookies. Por tanto, no es necesario emplear la función addslashes() en las cadenas que ya han sido escapadas mediante la directiva magic_quotes_gpc ya que si no, se harí un doble escape. La función get_magic_quotes_gpc() puede ser útil para comprobar el valor de esta directiva.

Y con stripslashes() recuperas lo borrado con addslashes()
  #3 (permalink)  
Antiguo 04/08/2010, 21:30
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: problema con comillas y barra invertida

gracias por la pronta respuesta, efectivamente el problema se debe a que el server tiene configurado la directiva magic_quotes_gpc = On , y en local la tengo como Off , ahora voy a probar la solucion que me has dado.

Se agradece saludos!!
  #4 (permalink)  
Antiguo 04/08/2010, 21:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: problema con comillas y barra invertida

bueno tengo entendido si lo que lo estas usando es para evitar la inyeccion sql lo mejor es usar mysql_real_escape_string aki hay un vinculo donde hablan un poco de la seguridad mencionan ambas funciones si kieres lo lees y ve si te serve suerte http://www.tufuncion.com/php_seguridad_II
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 04/08/2010, 22:12
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: problema con comillas y barra invertida

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno tengo entendido si lo que lo estas usando es para evitar la inyeccion sql lo mejor es usar mysql_real_escape_string aki hay un vinculo donde hablan un poco de la seguridad mencionan ambas funciones si kieres lo lees y ve si te serve suerte [URL="http://www.tufuncion.com/php_seguridad_II"]http://www.tufuncion.com/php_seguridad_II[/URL]
Muy interesante voy a aprovechar de leerlo y comprenderlo bien...
Es que estoy algo confundido en este respecto, el problema se acentua ya que guardo codigo en la db y por ahora estoy usando $content = htmlentities($content, ENT_QUOTES); para guardar los datos y el tema de la inyeccion es lo que mas me preocupa...

se agradece saludos!
  #6 (permalink)  
Antiguo 04/08/2010, 22:34
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: problema con comillas y barra invertida

una cosa que siempre debes tener en cuenta es la codificación que utilizas.
en mi caso, siempre utilizo utf-8 y me ahorro problemas (trabajando en LINUX)
la idea es que cuadren la que utilizas en el PHP y la de la Base de Datos

Última edición por fcopacheco; 04/08/2010 a las 22:44

Etiquetas: barra, comillas
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 17:44.