2010-10-27 5 views
2

Je récupération de données dans ma base de données SQL ...PHP echo() Résultat MySQL contenant des caractères <>?

données exactement comme il est dans le DB = (21:48:26) <username> some text here. is it ok?

lorsque je tente de echo $row['log']."<br>";

qu'il affiche comme = (21h48: 26) du texte ici. Est-ce que c'est bon? Je suppose que cela est dû aux crochets < qui font penser à un ouvre-porte HTML ... serait-ce le cas? et si oui, comment ferait-on écho à une chaîne contenant du HTML?

+0

? Je ne comprends pas ton problème. Est-ce que ça ne fait pas écho à ce qui est dans le db. –

+1

@Ash Burlaczenko Il a rencontré le même problème en posant la question ici sur SO: il n'a pas échappé les caractères '<' and '>' – Harmen

+0

Je pensais que c'était peut-être le cas mais je n'ai pas assez de rep pour éditer les entrées pour voir . –

Répondre

8

Utilisez htmlspecialchars() pour traduire les caractères de contrôle HTML dans leurs entités:

echo htmlspecialchars($row['log'])."<br>"; 
3

Vous devez échapper aux caractères de sorte qu'il ne soit pas reconnu comme un élément HTML, mais sous forme de texte:

echo htmlentities($row['log']) . '<br/>'; 
1

je suppose que cela est dû aux <> parenthèses en faisant penser à un ouvre-porte HTML ...

Oui, toute construction dans <> parenthèses est traitée par le navigateur Web comme balise HTML. Ainsi, vous devez utiliser htmlspecialchars() ou htmlentities() ou une fonction personnalisée similaire pour convertir les symboles "<" et ">" en "& lt;" et "& gt;" chaînes, qui sont affichés à l'utilisateur sous forme de crochets.

Quelques autres commentaires:

  • doivent être transmis toutes les données de texte affichées à l'utilisateur par htmlspecialchars() funciton (ou par d'autres fonctions avec un comportement similaire), puisque « texte » peut également contenir des balises, etc.

  • Il serait probablement préférable de stocker la date et l'heure, le nom d'utilisateur et "du texte" dans des colonnes de table séparées dans DB, afin de satisfaire les contraintes de base de données relationnelles. Cela peut nécessiter une analyse supplémentaire des données d'entrée.

+0

De bons points, en particulier la partie sur la sécurité. –

Questions connexes