Foros del Web » Programando para Internet » PHP »

Problemas con las comillas simples ( ' )

Estas en el tema de Problemas con las comillas simples ( ' ) en el foro de PHP en Foros del Web. El problema es el siguiente, intento almacenar textos en una BD a traves de un formulario (tipo gestor de noticias) pero al momento de ingresar ...
  #1 (permalink)  
Antiguo 03/10/2005, 22:40
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 18 años, 11 meses
Puntos: 1
Problemas con las comillas simples ( ' )

El problema es el siguiente, intento almacenar textos en una BD a traves de un formulario (tipo gestor de noticias) pero al momento de ingresar una comilla simple ( ' ) en medio del texto me lo rechaza.
Despues de buscar un poco en la web, encontre un codigo que reemplaza caracteres de un string.
ej:

$resultado = preg_replace("/\b'(s)?\b/i", " /' ", "$contenid");

En este caso reemplaza la comilla simple ( ' ) por un ( /' ) ya que ingresando de esta forma la comilla en el formulario (anticipada de un / ) me la aceptaba en el codigo y me la mostraba solo la comilla posteriormente al hacer la consulta.

El problema es que este codigo solo me funciono en mi localhost ya que al momento de implementarlo en mi hosting no funcionó.

Ojala alguno de ud tenga idea de como puedo hacer para que me acepte este tipo de comillas o algun truquillo para arreglar el problema. A continuacion adjunto el trozo de codigo correspondiente al ingreso de datos a la BD y que no me funciona como quiero.
.
.
.
.
$titul = $_GET["titulo"];
$topic = $_GET["Topico"];
$contenid = $_GET["contenido"];
$resultado = preg_replace("/\b'(s)?\b/i", "/'", "$contenid");
if($_GET["titulo"]!="")
{
$sql = "INSERT INTO noticias (titulo, imagen, noti) VALUES('$titul', '$topic', '$resultado')";
mysql_query($sql,$db);
.
.
.
.
De antemano muchas gracias!
  #2 (permalink)  
Antiguo 04/10/2005, 00:45
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
El que en local te funcionara y en tu hosting no es por motivo de configuración. Ve el estado de "magic_quotes_gpc", seguramente tú lo tienes en Off y el hosting en On.

Lo que hace dicha directiva --cuando esta activada-- es escapar los carácteres especiales ', " y \ de manera automática. Sería recomendable lo manejes así...

Ahora bien, olvidate de la función que tienes!!!!, esta mal, los carácteres deben escaparse con una barra invertida (\) no con una diagonal (/). Tienes funciones que hacen eso directamente:
- addslashes(): escapa los carácteres. Si tienes magic_quotes activado no necesitarás usarla, si esta desactivado usala antes de guardar los datos
- stripslashes(): desmarca carácteres escapados. La usarás a el recuperar tus datos.

Un saludo!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 04/10/2005, 21:00
Avatar de ecerpa  
Fecha de Ingreso: mayo-2005
Mensajes: 61
Antigüedad: 18 años, 11 meses
Puntos: 1
Te agradezco mucho socio, me sirvio 100%...lo ocupe de esta forma:

function GPCaddslashes($a)
{
if(get_magic_quotes_gpc())
{
return $a;
}
else
{
return addslashes($a);
}
}

Gracias por la solución...quedó super bien implementado.
Thanks
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 21:59.