2012-06-20 10 views
7

sé que esto suena muy común y tan trivial, pero estoy teniendo un desafío aquí. Tengo un sitio web con Zend/Doctrine y uso ckeditor para la administración de back-end. Después de subir el sitio, me di cuenta de que, durante las pruebas de edición, la apariencia del sitio está en mal estado.cómo evitar que la base de datos agregue barras a las comillas

con la ayuda de Firebug, he visto que hay barras en todo el html. después de la edición en línea, la apariencia volvió a la normalidad. Hay tantos archivos, no puedo pensar en hacer otra decodificación antes de sacar datos de mysql.

¿Qué opciones tengo para resolver este problema. el sitio ya está listo y me siento un poco incómodo al respecto. ¿Alguien puede dar una pista? gracias

+4

Ninja secreto comillas mágicas lucha es php <5,4 estilo. – hakre

Respuesta

4

Agradezco a todos por la ayuda. Realmente la solución aceptada debería ser la de @Stanislav Palatnik. solo que no funcionó con mi .htaccess. el servidor de alojamiento fue lo suficientemente bueno como para poner un php.ini en mi public_html que me permite cambiarlo. Entonces +1 a @Stanislav Palatnik porque él señaló el problema. También encontré información interesante que pensé que compartiría en caso de que alguien se encontrara en mi situación.

info from: http://support.godaddy.com/groups/web-hosting/forum/topic/how-to-turn-off-magic_quotes_gpc/ 
Yes – the solution below worked for me: 

(1) First of all do not try to turn off the magic quotes in your .htaccess file, it won’t work on godaddy. 
(2) Second, if you’re running PHP5 on your account, rename your php.ini file to php5.ini, make sure it’s in your root folder. 
(3) Third, make sure all the lines in your php5.ini file end in a semi colon ; 
(4) Fourth, add this line to your php5.ini file: 
magic_quotes_gpc = Off; 

en la misma página que alguien dijo que no debe ser sólo magic_quotes_gpc única pero otros Aswell Al igual que se muestra a continuación:

magic_quotes_gpc = Off; 
magic_quotes_runtime = Off; 
magic_quotes_sybase = Off; 

Espero que esto ayudó a alguien.Un agradecimiento especial a @Stanislav Palatnik

+1

No, realmente, esta es la respuesta correcta en un servidor host compartido (como GoDaddy). ¡Funciona de maravilla! – Sablefoste

9

Podría ser magic_quotes_gpc. ¿Puedes verificar que está apagado?

Aquí es una manera de apagarlo: http://php.net/manual/en/security.magicquotes.disabling.php

establece el estado magic_quotes por GPC (/ Post/Cookie GET) operaciones. Cuando magic_quotes están encendidas, todo '(comilla simple), "(comillas dobles), \ (barra invertida) y NUL son con una barra invertida de forma automática.

Además, está usando comandos preparados? PHP DOP/MySQLI se escapará automáticamente. Depende del tipo de consultas que esté usando.

+0

Hola.muy amable para responder de inmediato. Desafortunadamente, agregando el servidor interno de .htaccess ¿hay gurús de Zend aquí? ¿Es posible agregarlo a la aplicación.ini? –

+0

¿Cuál es exactamente el problema? –

5

Parece que los datos se están escapando dos veces antes de insertarse en su base de datos. ¿Está usando mysql_real_escape_string o addslashes antes de insertar datos en el base de datos? En caso afirmativo, tal vez desee utilizar barras antes de insertar sus datos como sigue:

mysql_real_escape_string(stripslashes($data)); 

O de lo que teóricamente podría llamar stripslashes después de tomar los datos de la base de datos:

stripslashes($data); 

El segundo enfoque es menos deseable, sin embargo. Sería mejor tener los datos almacenados correctamente en la base de datos.

2

En caso de que esto es una magia cita problema y por lo que recuerdo que sólo tener acceso a su application.ini, se podría añadir lo siguiente y darle una oportunidad

phpSettings.magic_quotes_gpc = 0 
phpSettings.magic_quotes_runtime = 0 

Esto todavía requiere su nombre de usuario/grupo de usuarios para que se le permita cambiar la configuración predeterminada de php;)

0
<?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);} 
?> 

Agregar a su página php que tiene la inserción/actualización de consulta :)

Cuestiones relacionadas