Meilleure solution Dans votre fichier php.ini, il y a de fortes chances que la directive magic_quotes_gpc soit activée. Cela devrait être désactivé pour des raisons de sécurité. Si vous n'avez pas accès au fichier php.ini (par exemple sur un hôte partagé), vous pouvez toujours faire la même chose en utilisant une directive .htaccess (en supposant qu'il s'agit d'un serveur apache).
Dans votre php.ini
magic_quotes_gpc Off
Dans un fichier .htaccess:
php_flag magic_quotes_gpc Off
Pourquoi est-ce qui se passe?
La raison pour laquelle cela se produit est due au déroulement logique suivant.
Une chaîne qui doit être échappée est envoyée au serveur. Ceci est ma chaîne. C'est génial. Magic Quotes échappe à l'apostrophe avant qu'elle n'atteigne votre code. Ceci est ma chaîne. Il est génial mysql_real_escape_string a maintenant deux caractères à échapper, la barre oblique inverse \ ainsi que l'apostrophe \ '. Ceci est ma chaîne. C'est génial Cette nouvelle chaîne super-échappée est stockée dans la base de données. Lorsque la chaîne est extraite de la base de données, elle est transmise à stripslashes. Cela supprime les deux échappements ajoutés à l'étape 3, mais comme l'un des antislashs a été échappé, stripslashes pense qu'il appartient. Ceci est ma chaîne. C'est génial Ce problème peut vraiment devenir incontrôlable lorsque vous soumettez de nouveau ces chaînes à la base de données, car chaque fois que le nombre de barres obliques inversées se multiplie.
Alternative Solution Une alternative rapide et facile serait de simplement supprimer les barres obliques ajoutées par magic_quotes avant de passer la chaîne à mysql_real_escape_string.
$str = stripslashes($code);
$str = mysql_real_escape_string($str);
Est-ce une nouvelle version de php? lol –
[Citations magiques] (http://php.net/manual/fr/security.magicquotes.php)? –
@Kaii: Est-ce ** difficile ** pour vous les gars de comprendre que c'est une chaîne qui contient du code C++ ou que vous essayez de gagner "la pire clown" tasse? – zerkms