Question

J'utilise PHP et MySQL pour un forum de base. Lorsque les utilisateurs utilisent l'apostrophe ( ') ou des liens insérer dans leur poste, la fonction mysql_real_escape_string ajoute \ au texte. Lors de l'affichage du poste, les liens ne pas le travail, et toutes les années une apostrophe \ devant elle.

Le problème est que je ne suis pas en train de faire quelque chose avant de sortir le texte ou est la question que je ne suis pas nettoyer correctement les données avant d'écrire à MySQL?

Était-ce utile?

La solution

sont magicquotes sous tension? Vous pouvez vérifier rapidement en créant une page PHP comme ceci:

<?php var_dump(get_magic_quotes_gpc()) ?>

Si la page dit quelque chose comme int(1), le coupable n'est pas mysql_real_escape_string, mais PHP lui-même. Il était une caractéristique de sécurité, mais pas très sûr, et la plupart du temps tout simplement ennuyeux. Avant de désinfecter chaque variable, vous devez d'abord annuler le débroussaillage avec stripslashes.

Autres conseils

Vous pouvez également désactiver les guillemets magiques en utilisant ceci:

if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
    set_magic_quotes_runtime(0);
}

Il tournera les guillemets magiques off lorsque votre serveur exécute une version de php moins 5.3.0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top