[résolu] Problème Backslash-Requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [résolu] Problème Backslash-Requête

Re: [résolu] Problème Backslash-Requête

par sam12 » 10 janv. 2012, 18:39

Non mais tu protèges à l'insertion et retires à l'affichage (stripslashes/stripcslashes).

Re: [résolu] Problème Backslash-Requête

par ladinho58 » 10 janv. 2012, 10:19

Mais dans l'exemple d'utilisation de la fonction que j'ai posté, le type qui a fait l'exemple utilise d'abord la fonction mysql_escape_string, puis il fait un "no-magic-quotes".

Re: [résolu] Problème Backslash-Requête

par sam12 » 09 janv. 2012, 19:15

Il faut retirer les backslashes à l'affichage tout simplement ;)

Re: [résolu] Problème Backslash-Requête

par ladinho58 » 09 janv. 2012, 18:09

En revanche, quelque chose me turlupine
Si j'utilise la fonction no_magic_quotes, c'est justement pour supprimer les antislashs. Mais le fait de l'utiliser avant, je comprend pas pourquoi ca fonctionne, dans le sens où juste après on utilise mysql_real_escape_string qui va servir à protéger la chaine de caractere.
En gros, je comprend :
1- on a notre chaine
2- dans le cas ou il y ait un antislash, on le supprime
3- on fait appel a la fonction mysql_escape qui va protéger la chaine de caractère, donc retour avec les backslash..

Re: Problème Backslash-Requête

par ladinho58 » 09 janv. 2012, 17:01

xTG, tu es mon dieu !

Re: Problème Backslash-Requête

par xTG » 09 janv. 2012, 16:45

C'est à cause de l'ordre des fonctions.
Utilises ton anti-magic quote avant le mysql_real_escape_string. ;)

[résolu] Problème Backslash-Requête

par ladinho58 » 09 janv. 2012, 15:34

Bonjour,

j'ai un problème qui va finir par me rendre dingue.
L'utilisateur peut à un moment rentrer un commentaire. Mais à partir du moment où il utilise une apostrophe, il y a systématiquement un backslash qui se génère juste avant l'apostrophe.
ex :
Commentaire : je n'ai pas besoin de faire de commentaire

Valider

Commentaire final : je n\'ai pas besoin de faire de commentaire

Alors j'ai trouvé sur un forum une petite fonction :
<?php

function no_magic_quotes($query) {
        $data = explode("\\",$query);
        $cleaned = implode("",$data);
        return $cleaned;
}

// I'm using mysql_escape_string as a simple example, but this function would work for any escaped string.
$query = "It's amaizing! Who's to say this isn't a simple function?";
$badstring = mysql_escape_string($query);

echo '<b>Without funtion:</b> '.$badstring;
echo '<br><br>';
echo '<b>With function:</b> '.no_magic_quotes($badstring);

?>

Output:
Without funtion: It\'s amaizing! Who\'s to say this isn\'t a simple function?

With function: It's amaizing! Who's to say this isn't a simple function?
Je pensais alors m'être débarassé de ce problème, mais alors maintenant, le fait d'avoir enlevé le backslash me crée un problème dans ma requête SQL:

Requête invalide : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'est un test', derniereMAJ = NOW(), datecontact = '1010-10-10', ' at line 9 Requête complète :
UPDATE affaire SET id_societe = '44', id_interlocuteur = '914', id_offre_commerciale = '1', id_repertoire = '75', id_naf = 1, id_division_naf = null, id_region_etude = null, commentaires = 'c'est un test', derniereMAJ = NOW(), datecontact = '1010-10-10', dateligne = '1010-10-10', dateeval = '1010-10-10', typecontact = 'Entretien téléphonique', libtarif = '', pte = '10', hph = '82', hpd = '0', hch = '82', hcd = '0', hpe = '83', hce = '87', ja = '0', label_tarif = 'Basse tension OH & NO Base & EJP (UM, UL)', taille = '0', fourchette = '0', representation = 'histogrammes', choix_taille = 'superficie', annee_etude = '2010' WHERE id_affaire = 'aa'

Est-ce que vous savez comment parer ce problème ?