je ne suis pas très fort en code, et je m'excuse d'avance pour les énormités que je pourrais dire, mais j'essaye de comprendre et j'espère avoir de l'aide sur ce sujet.
J'ai placé sur tous mes $_GET et $_POST de mes pages le fameux mysqli_real_escape_string (en lieu et place du mysql_real_escape_string préconisé de l'époque)
($_GET provenant de l'URL, et $_POST de formulaires)
une fois que toutes mes valeurs sont récupérées, il faudrait si j'ai bien compris, utiliser htmlentities pour afficher mes infos....
néanmoins en faisant cela, j'obtiens pour l'affichage d'un commentaire (par exemple) :
"Un et double", ainsi sommes-nous tous, et le poète l'a saisi et exprimé avec une justesse vertigineuse.<br />
au lieu de
"Un et double", ainsi sommes-nous tous, et le poète l'a saisi et exprimé avec une justesse vertigineuse.
DEUX QUESTIONS :
- Est-ce que j'ai bien compris ce qu'il faut faire ?
- En mettant htmlentities pour me protéger, comment faire pour que mes textes s'affichent correctement ?
Dans ma BDD l'insertion de l'exemple est la phrase brute avec un é pas de code... mais un ne à la fin
Pourtant avec commentaires le é est transformé. ..etc
En gros qqun pourrait m'expliquer comment traiter l'info entrante dans la bdd et comment gérer l'affichage... le tout en prenant en compte l'article sur la sécurité.... car je suis encore plus perdu qu'avant ma question...
J'ai trouvé une pseudo réponse qui pourra peut-être aidé ceux qui liraient ce topic.
En mettant :
nl2br(htmlentities($list["texte"]))
mon texte s'affiche correctement avec les saut de ligne.
Par contre, vu que je suis en train de refaire tout mon site, tout les textes envoyés précédement ne s'affichent pas correctement.
Exemple, je prends un commentaire (présent dans la base depuis 6 ans), qui lui n'a jamais subi le fameux mysqli_real_escape_string, voici son affichage :
Comment est-ce que je peux faire pour que tous mes textes contenu dans ce champs de la BDD puisse en quelque sorte subir un mysql_real_escape_string ? afin de s'afficher normalement ?
je pense être venu à bout de cette petite partie de refonte du site, et grâce à vous...
Pour résumer (ça peut toujours être utile)
Niveau sécurité,
il faut utiliser pour toutes les données qui vont se rendre dans la bdd : mysqli_real_escape_string
il faut utiliser pour toutes les données qui s'afficheront: htmlentities()
Pour le problème des retour à la ligne qui ne s'affichaient pas, j'ai utilisé à l'affichage : nl2br(htmlentities($list["texte"]))
Pour convertir les anciennes bases de données qui contiennent des codes html partout (ê ou <br /> etc...) et qui ne s'afficheraient pas correctement, j'ai été obligé de convertir toutes ma base de données avec html_entity_decode()
pour cela j'ai fait une copie de ma bdd (au cas où et j'ai bien fait) et j'ai mis la boucle suivante :
$req = 'SELECT * FROM commentaires2BAK';
$result = mysqli_query($bdd,$req) or die ('Execution de la sélection impossible');
while($list = mysqli_fetch_array($result,MYSQLI_BOTH))
{
$id = $list['id'];
$texte = $list['texte'];
$texte = str_ireplace ( "<br />", "", $texte);
$texte = mysqli_real_escape_string($bdd,$texte);
$texte = html_entity_decode($texte);
mysqli_query ($bdd,"UPDATE commentaires2 SET texte='$texte' WHERE id='$id'") or die ('Execution de la sélection impossible');
}
Je ne suis pas sûr à cent pour cent de toutes les lignes, mais le résultat final est le bon...
après les commentaires, je vais m'attaquer aux forum, je crois, il y a du lourd là aussi...
mon site existe depuis 2001, la base de données est donc pleine à craquer, et passer un vieux site qui n'était même pas en utf8 dans un nouveau format n'est pas évident...
j'ai quand même teste sur une seule ligne avant de généraliser...
DERNIERE QUESTION, je l'espère...
mon texte à convertir comprends parfois des balise autorisées par un bbcode (ce bbcode est transformé en html dans la bdd)
on a donc les balises <i><b><font size=""> qui viennent s'ajouter au texte, comme sur cette page :
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Eric (https://www.lespoetes.net)
N'oubliez pas d'activer les erreurs PDO.
Eric (https://www.lespoetes.net)
N'oubliez pas d'activer les erreurs PDO.
Eric (https://www.lespoetes.net)
N'oubliez pas d'activer les erreurs PDO.
Eric (https://www.lespoetes.net)
Eric (https://www.lespoetes.net)
N'oubliez pas d'activer les erreurs PDO.
Eric (https://www.lespoetes.net)
Eric (https://www.lespoetes.net)