AddSlashes

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 29 sept. 2006 à 23:20
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 6 oct. 2006 à 22:29
Salut à tous

Voilà pffouu je commence à désespérer je fais appel à d'autres pour mon problème.
J'ajoute pas mal d'infos dans un bdd, genre des commentaires, forum etc... pour sécuriser le texte j'utilise la fonction :
// Formate le texte
function FormatText($str)
{
    $str = trim($str);
    $str = htmlentities($str);
    $str = nl2br($str);
    if (get_magic_quotes_gpc()) {
       $str = $str;
    }
    else {
       $str = addslashes($str);
    }
    return $str;
}

Et la get_magic_quotes_gpc() = 0 chez moi, je sais pas pourquoi, enfin je me retrouve avec des apostrophes dans ma bdd, mais ça ne crée AUCUN problème avec les commentaires et forum etc...
Par contre j'utilise une chaine de caractère pour faire un historique de modifications, et la y'a un problème.
La chaine c'est du genre :
"date : Explications
date : Explications"

Et si Explications contient un ' tout est affiché est enregistré, mais lorsque je veux ajouter une nouvelle ligne, ça marche pas...
La ligne n'est pas ajoutée.
Il s'agit d'un champ de type "text" dans un enregistrement MySql

Voici à tout hasard la fonction qui ajoute les modifications :
// Ajoute un élément à l'historique d'un code
function AddHistorique($codeID, $codeHistoriqueAdd)
{
    global $IsConnected;
    $tempIsCo = $IsConnected;
    if (dbConnect() !=0) {        $req "SELECT `Historique` FROM `codes` WHERE `ID` '$codeID'";
        $result = mysql_query($req);
        $rs = mysql_fetch_row($result);
        $br = '';
        if ($rs[0] != '') { $br = '
'; }
        $codeHistorique = $rs[0] . $br . date('d/m/Y') . ' : ' . $codeHistoriqueAdd;
        msgbox(addslashes($codeHistorique));        $req "UPDATE `codes` SET `Historique` '$codeHistorique' WHERE `ID` = '$codeID'";
        $result = mysql_query($req);
        if ($tempIsCo == 0) { dbClose(); }
    }
}

Voilà si vous voyez où est le souci, sachant que ça pose pas problème pour les autres enregistrement, c'est juste ce champ qui foire...

Merci d'avance

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 sept. 2006 à 11:26
Hello,

pour ce qui me concerne, il faut que tu réexpliques : je n'ai rien compris.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
30 sept. 2006 à 12:06
lol ok désolé, je recommence, les bouts de code sont dans le post précédent.
Donc tout marche chez moi avec get_magic_quotes_gpc() = 0 (je sais pas pourquoi c'est 0 mais bon) pour le forum etc.... les gens peuvent très bien poster un message contenant des ' ça foire pas.

Par contre j'ai un champ "Historique" (dans une table) qui contient du texte de la forme :
"29/06/2006 : Mise à jour du site 1

30/06/2006 : Mise à jour du site2"

Et donc dès qu'une modif sur une page est faite on récupère la valeur du champ, on ajoute à cette chaine :
"
Date : Explications"
Puis on re-rentre la chaine dans la bdd au meme endroit, une simple modif quoi.

Et la si le texte contient un ' alors je n'arrive plus à y ajouter une ligne par la suite. J'ai testé avec des echo, tout se passe bien jusqu'à la modif dans la base de données, où la le ' à l'air de poser problème.
Je ne pense pas que ça vienne directement du code car quand il n'y a pas de ' tout marche.

Voilà j'espère que j'ai réussi à expliquer ??

Merci

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 sept. 2006 à 12:17
get_magic_quotes_gpc() = 0 ça veut dire que ton php n'utilise pas les magi_quotes, et que donc, il faut que tu utilises addslashes sur les champs de type texte lors d'une insertion en base, et stripslashes lors de l'affichage (ou mysql_real_escape-string() pour insertion si tu utilises mysql).
Montre le html permettant d'effectuer cette modification...? (le formulaire, et plus particulièrement la partie contenant ton "explication").
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
30 sept. 2006 à 13:27
Ben j'utilise addslashes

Voici le début du formulaire :
<form action= "okmodif.php?ID=<?php echo $codeID; ?>" method="post">
Explications de la modification :

<textarea class ="Clair" name="modifExplications" rows="4" style="width: 100%"></textarea>

La page qui reçoit le post :
$modifExplications = FormatText($_POST['modifExplications']);
[...]
AddHistorique($codeID, $modifExplications);

Pour les fonctions FormatText et AddHistorique, elles sont dans le premier post.
Pour info mon site fonctionne un peu comme Codes Sources, y'a des codes de postés, l'auteur peut les modifier et donc y'a un historique des modifications.

Merci pour ton intéret à mon problème

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st

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

Posez votre question
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
6 oct. 2006 à 22:29
Désolé de te relancer comme ça, je retente juste ma chance car j'ai enfin l'hébergement donc le site va pas tarder à aller en ligne ^^

Donc voilà as-tu une idée pour mon problème, sinon tant pis merci en tout cas d'avoir essayé

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Rejoignez-nous