Donc comme tu le vois, cela ajoutera des caractères à ta base de données, ce qui est totalement inutile et en fonction de la grandeur de ton site, pourrait ralentir mysql.Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. htmlspecialchars() remplace tous ces caractères par leur équivalent dans la chaîne string . Cette conversion est très pratique pour la programmation web. Si vous devez remplacer tous les caractères, utilisez plutôt htmlentities() à la place.
htmlspecialchars() est pratique pour éviter que des données fournies par les utilisateurs contiennent des balises HTML, comme pour un forum ou un chat.
Les remplacements effectués sont :
"&" (et commercial) devient "&"
""" (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
"'" (guillemet simple) devient "'" uniquement lorsque ENT_QUOTES est utilisée.
"<" (inférieur à) devient "<"
">" (supérieur à) devient ">"
strip_tags(stripslashes(html_entity_decode($result['texte'])),'<a>');
J'ai essayé et cela fonctionne -> http://cwdev.homeip.net/tests/pod.php<?php
header('Content-type: text/html; charset=utf-8');
$texte = mysql_escape_string(htmlspecialchars($_POST['texte']));
mysql_connect("localhost", " ** ", "**");;
mysql_select_db("tests");
mysql_query('set names utf8');
if(!empty($texte))
{
$query = mysql_query("INSERT INTO pod VALUES('','$texte')")or exit('erreur query 1');
}
$query2 = mysql_query("SELECT * FROM pod ")or exit('erreur query2');
while($result = mysql_fetch_array($query2))
{
echo '<p>'.strip_tags(stripslashes(html_entity_decode($result['texte'])),'<a>').'</p>';
}
mysql_close();
echo '<form method="post" action="pod.php">
<p><textarea name="texte"></textarea></p>
<input type="submit" value="OK"/>
</form>';
?>
Alors inscris-toiSujet résolu (je peux pas le marquer dans le titre, je ne suis qu'invité ...) !
Donc si je comprends il y a un htmlspecialchars d'office à l'insertion.
Donc pour pouvoir decoder et afficher les liens par exemple, procèdes comme suit :
J'ai essayé et cela fonctionne -> http://cwdev.homeip.net/tests/pod.phpstrip_tags(stripslashes(html_entity_decode($result['texte'])),'<a>');
.cwdev
Je te mets le code complet de la page en lien pour que tu voies
<?php header('Content-type: text/html; charset=utf-8'); $texte = mysql_escape_string(htmlspecialchars($_POST['texte'])); mysql_connect("localhost", " ** ", "**");; mysql_select_db("tests"); mysql_query('set names utf8'); if(!empty($texte)) { $query = mysql_query("INSERT INTO pod VALUES('','$texte')")or exit('erreur query 1'); } $query2 = mysql_query("SELECT * FROM pod ")or exit('erreur query2'); while($result = mysql_fetch_array($query2)) { echo '<p>'.strip_tags(stripslashes(html_entity_decode($result['texte'])),'<a>').'</p>'; } mysql_close(); echo '<form method="post" action="pod.php"> <p><textarea name="texte"></textarea></p> <input type="submit" value="OK"/> </form>'; ?>
Ok enfin il ne s'agit pas de désactiver cette fonction au niveau du serveur étant donné que pas mal de personnes travaillent sur des serveurs mutualisés (donc ils n'ont souvent pas accès à cette configuration), simplement de tester la configuration du serveur et d'utiliser stripslashes() uniquement en cas de besoin....
Oui magic_quotes est activé et je n'allais pas mettre la fonction pour le désactiver vu que ce n'est pas le but du sujet.