2009-11-29 4 views
0

J'utilise Doctrine ORM pour php et Zend MVC. J'ai une base de données mysql. Quand j'insère dans la base de données, il échappe des guillemets. En d'autres termes, lorsque j'entreDoctrine citant des apostrophes

<input name="customer_name" value="Test'ed user"> ... 

dans mon formulaire et de l'affecter à un objet de doctrine et de le sauvegarder.

Quand je regarde la base de données via la ligne de commande mysql je reçois

Test\'ed user 

est-il un moyen de désactiver cette ou dois-je appeler stripslashes() sur chaque variable?

Répondre

2

Vérifiez que magic_quotes_gpc est activé, soit en consultant php.ini, soit en exécutant get_magic_quotes_gpc().

Si vous avez accès à php.ini, désactivez-le. Sinon, vous devrez supprimer les barres obliques dans vos scripts en utilisant stripslashes().

+0

Si simple. N'ai pas utilisé un serveur avec cela activé depuis si longtemps j'ai oublié celui-là! MERCI –

1

Vous pouvez éviter la peste magic_quotes_gpc tout à fait en ajoutant quelque chose comme ceci en haut de vos pages:

if(get_magic_quotes_gpc()) { 
    if(!function_exists('stripishlashes_all')) { 
     function stripslashes_all(&$data) { 
      foreach($data as &$_value) { 
       if(is_array($_value)) { 
        stripslashes_all($_value); 
       } 
       else { 
        $_value = stripslashes($_value); 
       } 
      } 
     } 
    } 
    stripslashes_all($_REQUEST); 
} 

Très utile lorsque votre code est en cours d'exécution sur un serveur que vous ne disposez pas d'un contrôle complet sur, ou si vous prévoyez de le distribuer.

+1

Attention, ceci ne fonctionnera pas si $ _REQUEST contient des tableaux! –

+0

Bon point, Ben. J'ai mis à jour le code pour corriger cela. – Atli

+0

Bon tour. Merci. –