Bdd mysql avec 000webhost = slashes devant

Résolu
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je viens vers vous aujourd'hui car j'ai un petit soucis avec mon Hébergeur gratuit : 000webhost et ma Base De Données : mysql.

Sur ma page /blog/index.php et /blog/article.php?id=(nombre)
Je fais une requête pour aller chercher l'article ou je fais une boucle pour aller chercher plusieurs articles ; jusque-là tout est okay !

En local, sur Wamp, quand j'avais écrit un article et que je l'affichait c'était bien. Et maintenant que j'ai mit en ligne mon site internet, si j'écris un article et que je l'affiche : j'ai des slashes devant ' et devant ".
Ma question : Pourquoi cette différence ?

Je procède de cette façon pour un article, avant d'envoyer dans la bdd, je protège avec : $contenu = mysql_real_escape_string(htmlspecialchars(addslashes($_POST['contenu']))); et pour afficher, j'enlève les slashes avec : $contenu = stripslashes($données['contenu']);

Voilà le lien d'une des deux pages, vers mon site afin de vous montrer : https://www.000webhost.com/migrate?static=true

Merci d'avance,
Cordialement.
LelLex.

6 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Oui, soit tu fais addslashes, soit mysql_real_escape_string, mais pas les deux sur la même chaine.


Pour désactiver magic_quotes_gpc
https://www.php.net/manual/fr/configuration.changes.php

Avec un .htaccess :
php_flag magic_quotes_gpc off


Ou bien en annulant l'effet en PHP :
<?php 
function stripslashes_deep($value) { 
    $value = is_array($value) ? 
                array_map('stripslashes_deep', $value) : 
                stripslashes($value); 

    return $value; 
} 

$_POST = stripslashes_deep($_POST); 
$_GET = stripslashes_deep($_GET); 
$_COOKIES = stripslashes_deep($_COOKIES); 
?>

Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
1
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   112
 
+ 10 !
0
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   112
 
Après plusieurs recherches, j'ai trouvé le problème. Puisque : magic_quotes_gpc = on ; ça équivaut à un addslashes(); pour get, post et cookies.

Bon d'accord ! Donc, j'ai juste à enlever mon addslashes(); mais par contre je laisse mon stripslashes(); ; c'est bien ça ?
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Je te conseil plutôt de désactiver l'option magic_quotes_gpc.

Il faut utiliser soit addslashes, soit mysql_real_escape_string, sinon tu auras deux backslashes qui se mettront avant les « " » et « ' » : il faudra appelé 2x « stripslashes() ».
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
0
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   112
 
Je ne peux pas protéger ma variable comme ceci :
$variable = mysql_real_escape_string( htmlspecialchars( addslashes($_POST['variable']) ) ); ?
Soit je mets string, soit je mets addslashes ? ( C'est ça que tu veux dire ? )

Bon je vais voir comment désactiver magic_quotes.

Merci F16.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   112
 
Okay d'accord. !

Par contre, tu peux me dire pourquoi il ne faut pas mettre les deux sur la même chaîne ?

Merci F16. ;)
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Parce que addslashes va remplacer ' par \'.
Après, mysql_real_escape_string va encore trouvé ' donc il va le remplacer par \'
Au final, on se retrouve avec \\'
Après un coup de stripslashes, ça ne retire qu'un \ : on obtient \'
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
0