Der korrekte Weg, um Daten in Tinymce einzufügen, wäre nicht, es auszudrucken oder htmlentities
zu verwenden. Betrachten Sie den folgenden Code
<div class="editor" id="editor">
</div>
<script>
tinymce.init({
selector: 'div.editor',
theme: 'inlite',
plugins: 'image table link paste contextmenu textpattern autolink',
insert_toolbar: 'quickimage quicktable',
selection_toolbar: 'bold italic | quicklink h1 h2 h3 blockquote',
inline: true,
paste_data_images: true,
automatic_uploads: true,
init_instance_callback : function(ed) {
// ed.setContent("<h1>Title</h1><p>Content...</p>");
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
ed.setContent(xhttp.responseText);
}
};
xhttp.open("GET", "content.php", true);
xhttp.send();
},
content_css: [
'//www.tinymce.com/css/codepen.min.css'
]
});
</script>
und die Datei content.php
sollte einfach nur den HTML-Inhalt an init_instance_callback
<?php
$content = ''; // Fetch from database
print $content;
?>
Mitteilung der Funktion drucken, während i tinymce initialisieren. Das ist die Funktion, die nach dem Initialisieren von tinymce aufgerufen wird. Nun, anstatt direkt print
im Editor zu verwenden, machen Sie einen Ajax-Aufruf innerhalb von init_instance_callback
und rendern Sie ihn dort. Ich habe eine Beispiel-Kommentarzeile eingefügt, um Ihnen dabei zu helfen. Dies sorgt auch für die Sicherheitsvalidierung (keine Ausführung des Skript-Tags, falls vorhanden).
auch zugleich den Inhalt des Editors zu bekommen, während es zu Datenbank gespeichert ist
var content = tinyMCE.get('editor').getContent();
Und dann können Sie eine Ajax-Post-Anforderung machen Daten in der Datenbank zu speichern.
Jetzt warum ich Ajax benutze, ist wichtig. Ich habe viele andere Methoden ausprobiert, bei denen ich direkt drucken konnte. Dies führt jedoch zu einer Sicherheitslücke, da Skript-Tags vor der Initialisierung des Editors ausgeführt werden können.
Ich habe div in diesem Beispiel verwendet, aber es wäre egal für Textbereich. Verwenden Sie nicht htmlentities, da dies dem HTML-Inhalt entgehen würde und Sie möchten, dass der Inhalt in tinymce gerendert wird und nicht in der maskierten Version.
'htmlentities' wird keine Auswirkungen auf den Text haben, die in HTML-Entitäten umgewandelt bereits wurde. Dein Problem ist wahrscheinlich woanders. – apokryfos
Wie sehen die Rohdaten in der Datenbank aus? Um festzustellen, ob sich diese Änderungen ändern, geschieht dies beim Speichern oder erneuten Aufrufen der Daten. – Martin
Es ist genau, was es in "tools> source code" von tinymce ist. –