Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problemes d'apostrophes avec php/mysql

3 réponses
Avatar
marvin
Bonjour.

J'ai un petit problème, quand j'accède à mes données de la base MySQL,
les apostrophes se retrouvent doublées, par exemple : "j'ai" devient
"j''ai".
Le problème ne se présente que chez mon hébergeur, quand je travail sur
la version hors ligne de mon site (avec EasyPHP), le problème ne se pose
pas. D'ailleurs, même en accedant aux données MySQL à partir du
PhpMyAdmin de mon hébergeur, je n'ai pas ce problème.

Quelqu'un a-t-il déjà eut ce problème ?
Quel est la solution ?

Merci.

3 réponses

Avatar
marvin
C'est un problème de "magic quotes" qui est activé sur le serveur,
j'arrive à contourner le problème en ajoutant des "stripslashes" juste
avant d'afficher les variables.
Je ne veux pas demander à mon hébergeur de desactiver le magic quotes,
dans ces conditions, ma solution est-elle la meilleure ou bien il y a
plus simple ? (ça me fait une trentaine de pages à revoir une par une !)

Merci.

Bonjour.

J'ai un petit problème, quand j'accède à mes données de la base MySQL,
les apostrophes se retrouvent doublées, par exemple : "j'ai" devient
"j''ai".
Le problème ne se présente que chez mon hébergeur, quand je travail sur
la version hors ligne de mon site (avec EasyPHP), le problème ne se pose
pas. D'ailleurs, même en accedant aux données MySQL à partir du
PhpMyAdmin de mon hébergeur, je n'ai pas ce problème.

Quelqu'un a-t-il déjà eut ce problème ?
Quel est la solution ?

Merci.


Avatar
Bruno Baguette
C'est un problème de "magic quotes" qui est activé sur le serveur,
j'arrive à contourner le problème en ajoutant des "stripslashes" juste
avant d'afficher les variables.
Je ne veux pas demander à mon hébergeur de desactiver le magic quotes,
dans ces conditions, ma solution est-elle la meilleure ou bien il y a
plus simple ? (ça me fait une trentaine de pages à revoir une par une !)

Merci.


Le mieux est de mettre un contrôle sur l'état de magic_quotes, de
manière à parer à un éventuel changement de configuration chez
l'hébergeur. Vu que les magic quotes sont à OFF par défaut dans les
nouvelles versions de PHP, il y a fort à parier que tôt ou tard votre
hébergeur pourrait emboiter le pas.

Ca vous fait 30 pages à modifier, certes, mais après vous avez la paix.

Voici la manière dont je procède :

if(get_magic_quotes_gpc()==0)
{
// Pas de magic quotes
// ==> On récupère simplement les données
$CampagneLibelle = trim($_POST['CampagneLibelle']);
$MsgTitre = trim($_POST['MsgTitre']);
$MsgContenu = trim($_POST['MsgContenu']);
}
else
{
// Il y a des magic quotes
// ==> On récupère tout en virant les slashes superflus
$CampagneLibelle = trim(stripslashes($_POST['CampagneLibelle']));
$MsgTitre = trim(stripslashes($_POST['MsgTitre']));
$MsgContenu = trim(stripslashes($_POST['MsgContenu']));
}


En espérant que ca aide :-)

--
Bruno BAGUETTE -

"Nous souhaitons aider les communautés les plus pauvres de ce pays.
Que personne ne croie qu'aux Etats-Unis tout le monde vit dans
l'abondance. Ils ont des millions de pauvres là-bas"
Aout 2005 - Hugo Chavez, Président du Vénézuela.

Avatar
ftc
C'est un problème de "magic quotes" qui est activé sur le serveur,
j'arrive à contourner le problème en ajoutant des "stripslashes" juste
avant d'afficher les variables.
Je ne veux pas demander à mon hébergeur de desactiver le magic quotes,
dans ces conditions, ma solution est-elle la meilleure ou bien il y a
plus simple ? (ça me fait une trentaine de pages à revoir une par une !)



Si ton hébergeur accepte les .htacces, tu places ceci dans un fichier
.htacces à la racine :
php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off

sinon, il faut faire à la main en plaçant au début de chaque scrpt:

if ( get_magic_quotes_gpc() ) {
function remove_mq( $array ) {
foreach($array as $key => $val){

if(is_array($val)){
remove_magic_quotes($array[$key]);
} else if(is_string($val)){
$array[$key] = stripslashes($val);
}
}
}

remove_mq($_POST);
remove_mq($_GET);
remove_mq($_REQUEST);
remove_mq($_SERVER);
remove_mq($_FILES);
remove_mq($_COOKIE);
}