Doorgeven content editor via $_POST
Dit is niet zozeer een vraag, alswel een verslag van vrij langdurig gepuzzel met goede afloop. Maar aan einde toch nog een vraag, en reacties welkom. En laten we wel wezen, je kunt dit soort zaken vaak niet aan je partner kwijt. :)
Heb dus een beheersysteem gemaakt rond FCKeditor. Dat systeem werkt met 5 pagina's:
-aan- afmelden
-bestanden kiezen
-de editor
-pagina die verschijnt bij opslaan
-pagina die verschijnt bij previewfunctie
Het is file-based, niet mysql based. Ik werk met includes die kunnen worden ge-edit.
In aanvang had ik het zo gemaakt dat van de opslaan en preview pagina's terug naar de editor de editor steeds weer de include van de server ophaalde (dan wel de preview include bij de preview). Ik dacht dat moet efficienter kunnen, ik ga de content (dus inhoud FCK-editor venster) als je teruggaat niet uit een file halen maar ik geef de content via een hidden form variable aan de pagina's door zodat ze met $_POST kunnen worden opgehaald.
Dacht, dat werkt ok, maar niet goed getest, want, zodra er < > en ' en " in het spel zijn kun je het vergeten. Je moet dus bewerkingen uitvoeren a) omdat de editor sommige zaken escapet (zoals de double-quote) in de content als die wordt doorgegeven via de hidden var, en b) omdat als je een hidden variabele in een pagina hebt je html-entities moet hebben voor diverse tekens. Anders breekt je html-pagina.
Daar heb je dan de functies stripslashes(), en htmlspecialchars(). Er zijn er nog meer (sommige PHP 5 only) maar hier kwam ik op uit. Maar het lukte me maar niet om de zaak goed in de editor terug te krijgen.
Uiteindelijk na veel proberen kwam ik er op uit dat dit in de pagina's moet die de content door moeten geven:
Code (php)
1
2
3
2
3
<?php
echo("<input type=\"hidden\" name=\"content\" value=\"". htmlspecialchars(stripslashes($content)) ."\">\n");
?>
echo("<input type=\"hidden\" name=\"content\" value=\"". htmlspecialchars(stripslashes($content)) ."\">\n");
?>
(kan mooier met single quotes maar daar gaat het nu niet om)
en vervolgens dit in de pagina met de editor als deze opdracht heeft niet een include in te lezen maar een $_POST variabele:
Dat het dan werkt, dus dat je de html dan in de editor terugkrijgt exact zoals bedoeld. Niet uit een file, maar uit $_POST. Maar die dubbele stripslashes() dus bij de zendende pagina en de ontvangende pagina, het lijkt onzin, maar het werkt... een soort blinde gok zo van 'laten we het maar proberen'.
Helemaal 100% zeker ben ik niet van die $_POST methode, maar het lijkt tot nu toe te werken, ook bij refreshen browser (waar we denk ik allemaal niet gek op zijn, op de refresh knop als het om pagina's gaat die $_POST variabalen aan elkaar doorgeven.)
Mijn vraag: jullie ervaringen en voetangels en klemmen over beheersystemen rondom FCKeditor (of TinyMCE), want ik zal de eerste niet zijn die zoiets gemaakt heeft. Ook ben ik nieuwsgierig, maar is in feite topic op zich, of het mogelijk is bij Opslaan in FCKeditor weer terug te komen op editorpagina zelf.
Harry
Daarmee kan je redelijk wat informatie goed verzenden (zonder dat het wordt aangepast etc).
Ipv een $_POST te gebruiken kan het natuurlijk oko met $_SESSION ;).
Maar als het werkt: prima!