2009-07-16 4 views
2

Ich versuche, ein Flash-Video in eine benutzerdefinierte Einrichtung des tinyMCE-Editors einzubetten. Es ist getrennt von der WordPress-Hauptseite, aber es befindet sich immer noch im WordPress-Admin-Bereich.tinyMCE & wordpress gibt ungerade Zeichen ... versuchte Kombination von Lösungen

Der Ausgangscode aus einem einfachen Block youtube einbetten ist wie folgt:

<p><img mce_src=\"../wp-content/themes/porcelain/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif\" src=\"../wp-content/themes/porcelain/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif\" width=\"560\" height=\"340\" style=\"\" class=\"mceItemFlash\" title=\"&quot;allowFullScreen&quot;:&quot;true&quot;,&quot;allowscriptaccess&quot;:&quot;always&quot;,&quot;src&quot;:&quot;http://www.youtube.com/v/26Ywp6vUQMY&amp;hl=en&amp;fs=1&amp;&quot;,&quot;allowfullscreen&quot;:&quot;true&quot;\"></p> 

Wie Sie sehen können, ist es, die Anführungszeichen zu entkommen, wenn ich es Jede Hilfe zu ...

nicht wollen wird massiv geschätzt, und ich weiß, dass dies ein Schuljungenfehler ist. Ich brauche nur gerade zu setzen.

Danke.

Antwort

2

Dies passiert häufig, wenn Sie Code haben, der Daten entzieht, bevor Sie ihn in SQL verwenden (wie es der Fall sein sollte) auf einem Server, auf dem die Funktion magic_quotes aktiviert ist. Diese Funktion bewirkt, dass php beim Laden automatisch get und post Daten versendet. Wenn Sie es dann wieder entkommen, gehen die Dinge schief - es wird doppelt maskiert, so dass maskierte Daten in die db gehen.

PHP hat diese Funktion nun veraltet, sie haben erkannt, dass es ein Ärgernis war, verursacht mehr Schmerzen als es gespart hat - sie haben versucht, Sicherheit zu schaffen, aber letztendlich muss der Entwickler Sicherheitsfragen kennen und umgehen Sie haben sich still um sie gekümmert. Ich selbst habe am Ende regelmäßig Code in Sachen eingefügt, um zu erkennen, ob dies aktiviert war, und es in der Ausführung umgekehrt umzukehren, wenn dies der Fall war.

+0

Ich denke, Sie sind wahrscheinlich hier richtig. Ich speichere die Daten in einer MySQL-Datenbank. Das ist ein echter Schmerz, wenn das der Fall ist ... hmm. Was ich versuche ist, ein nettes kleines Plugin für WordPress zu erstellen, also möchte ich vermeiden, die Kerndateien zu berühren, und ich möchte auch andere in der Lage sein, dieses Plugin ohne viel technisches Wissen zu verwenden (in Gesicht, praktisch nein technisches Wissen) ... also ist das Erstellen von php.ini Dateien usw. eine große Frage. Ich muss vielleicht überdenken, wie ich ein Video in das Dokument eingebettet bekommen werde. – Tisch

+0

Tippfehler sind wir !!! – Tisch

+0

endete einfach str_replace an beiden Enden des Echos ... manchmal ist die Antwort so einfach !!! – Tisch

1

Wenn Sie Ihre Daten über $ _POST übertragen, wird es maskiert, wenn magic_quotes aktiviert ist (es ist jetzt veraltet und wird automatisch aus PHP 5.4 und höher entfernt). Verwenden Sie einfach stripslashes(), wenn es maskiert ist, behoben meine Probleme mit HTML in WordPress mit mindestens tinymce entkommen.

+0

Irgendwie witzig lief ich wieder in dieses Problem, und ich suchte Stackoverflow nach einer Antwort - und kam zu meiner eigenen Lösung. Gut, dass ich aus meinen Fehlern lerne. –

1

Ich hatte dies mit den Funktionen "the_editor()" und "wp_editor()" geschehen. Ich glaube nicht, dass auf meinem Server magische Anführungszeichen aktiviert sind, weil ich es nicht aktiviert habe und alles installiert habe.

Wie auch immer, ich habe stripslashes hinzugefügt ... überall.

Als ich den Editor aufrufen:

<?php wp_editor(stripslashes($custom_text), 'custom_text'); ?> 

Wenn ich die POST-Daten zu speichern:

if (isset($_REQUEST['custom_text'])) { 
    update_option('my_custom_text', esc_sql(stripslashes($_POST['custom_text']))); 
    $updated = true; 
} 

Und wenn ich Abrufen der gespeicherten Daten:

$custom_text = apply_filters('the_content', stripslashes(get_option('my_custom_text'))); 

Diese feste es ist für mich, obwohl ich gerne wissen würde, ob es einen anderen Weg gibt. Ich dachte, die Filter hätten das eingebaut, ich habe mich geirrt, aber ich frage mich, ob ich nicht noch etwas anderes vermisse.

Verwandte Themen