MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
29 sept. 2006 à 23:20
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 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...
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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.