[FCKeditor] textarea bugged

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit nu met het probleem dat als ik met fckeditor een form maak, de pagina de volgende keer niet goed meer bewerkt kan worden. Het schijnt dat de browser na de textarea alle andere code niet meer in fck inlaad maar gewoon op de pagia zet. Ik denk dat dit veroorzaak wordt doordat mijn fckeditor ook door een textarea geladen wordt.

(probleem lijkt een beetje hierop http://dev.fckeditor.net/ticket/2569)

Plaatje van het probleem:
Afbeeldingslocatie: http://www.easy-upload.nl/index.php/file/84a00686f516db.png
(alle content hoort in de editor te zitten, zie dat de submit knop van het formulier ook al buiten de editor valt.)

Zoals ik al schreef denk ik dat het probleem wordt veroorzaak doordat fck oorspronkelijk zelf ook al een textarea is, nu lijkt het mij dat ik het voorkomen door fck op een andere manier aan te roepen. Maar dan lukt het mij niet om mijn content er fatsoenlijk in te krijgen als startvalue. Deze bestaat uit html de nodige quotes slashes etc....

Kan iemand mij helpen?

[ Voor 3% gewijzigd door Verwijderd op 05-05-2009 18:27 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
En wat is de broncode waarmee je zo'n pagina maakt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
HuHu schreef op dinsdag 05 mei 2009 @ 18:31:
En wat is de broncode waarmee je zo'n pagina maakt?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
require_once('use_mysqlconnect.php');

function geteditor($id, $mode='fckeditor', $editorcode=0) {
    $id=mysql_real_escape_string($id);
    
    $query="SELECT * FROM content WHERE id='$id'";
    $result=mysql_query($query) or die(mysql_error());
    
    if(!mysql_num_rows($result)==0)
    $content=mysql_result($result, 0, 'content');

    $page=mysql_result($result, 0, 'page'); 
    if($page=='ALL')
    $page='home';

    $loadscript='<script type="text/javascript" src="cybercat_files/fckeditor/fckeditor.js"></script>';
    if(editorcode==0)
    $editorcode="
    <script type='text/javascript'>
    window.onload = function()
    {
        var sBasePath = 'cybercat_files/fckeditor/' ;
        var oFCKeditor = new FCKeditor( 'content' ) ;
        oFCKeditor.BasePath = sBasePath ;
        oFCKeditor.ReplaceTextarea() ;
    }
    </script>
    ";
    
    $formcode='
    <form method="post" action="do_edit.php?id='.$id.'&page='.$page.'">
      <textarea name="content" class="contenteditor">'.$content.'</textarea>
      <br /><input type="submit" value="save" />
    </form>
    ';
    if($mode=='fckeditor')
    $editorcode="$loadscript\n$editorcode\n$formcode";
    else
    $editorcode=$formcode;

    
    return $editorcode;
}
?>

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
En helpt het als je een htmlspecialchars() loslaat op $content?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dan doet'ie het wel goed, Dank u: :).

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Om m'n eigen vraag te beantwoorden: ja, dat zal wel helpen denk ik. Waarden binnen een <textarea> moet je namelijk escapen, om dingen als dit te voorkomen:

HTML:
1
2
3
4
5
6
<textarea>
blablabla
<textarea>
  blabla 2
</textarea>
</textarea>


Dat gaat namelijk niet goed. Het moet dan dit zijn:

HTML:
1
2
3
4
5
6
<textarea>
blablabla
&lt;textarea&gt;
  blabla 2
&lt;/textarea&gt;
</textarea>


Als je het bestand FCKeditor.php opent (wat wordt meegeleverd met FCKeditor), dan zie je op regel 158 het volgende staan:

PHP:
1
$HtmlValue = htmlspecialchars( $this->Value ) ;


FCKeditor gebruikt zelf dus ook nog een htmlspecialchars() om de invoer te escapen op het moment dat je het formulier automatisch laat opbouwen via FCKeditor zelf.

[ Voor 9% gewijzigd door HuHu op 05-05-2009 18:41 ]


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Een <textarea> tag in een textarea lukt gewoon niet, en dat is best logisch.

Om de vormgeving te testen gebruikte ik in het verleden wel eens <div class="textarea"></div> die je dan precies styled zoals je textarea, en dan serverside deze replacen door een echte <textarea>, vereist wel wat server-code (logisch), maar het is wel een bruikbare work-around.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op dinsdag 05 mei 2009 @ 18:39:
Dan doet'ie het wel goed, Dank u: :).
Mooi zo :). Overigens had je deze fout ook kunnen vinden door je HTML-code door de W3C validator heen te gooien. Een textarea binnen een textarea is namelijk niet toegestaan, net als andere HTML-elementen binnen een textarea. Dat moet allemaal ge-escaped worden.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
mocean schreef op dinsdag 05 mei 2009 @ 18:42:
Een <textarea> tag in een textarea lukt gewoon niet, en dat is best logisch.
Geen enkele HTML "lukt" in een textarea ;) Je hoort gewoon te escapen ;)

[ Voor 6% gewijzigd door RobIII op 05-05-2009 19:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
RobIII schreef op dinsdag 05 mei 2009 @ 19:05:
[...]

Geen enkele HTML "lukt" in een textarea ;) Je hoort gewoon te escapen ;)
Ow... het lukt prima hoor :D. En in een browser ziet het er ook nog goed uit. Totdat er per ongeluk een </textarea> in staat, dan zit je dik in de problemen.

Een techniek die je ook goed toe kunt passen voor XSS en dergelijke hack-pogingen. Plaats een "</textarea><script>alert('Hoi');</script>" als reactie op een slecht geprogrammeerd forum en iedereen die je probeert te quoten krijgt een pop-up.

Acties:
  • 0 Henk 'm!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 18:57
Gebruik je trouwens met een speciale reden de Javascript variant?
http://docs.fckeditor.net...ers_Guide/Integration/PHP

Ik weet overigens zo uit het blote hoofd niet of je dan alsnog htmlspecialchars moet doen :)

Acties:
  • 0 Henk 'm!

  • vmsw
  • Registratie: Juli 2006
  • Laatst online: 24-02 19:47
Miyamoto schreef op dinsdag 05 mei 2009 @ 19:29:
Ik weet overigens zo uit het blote hoofd niet of je dan alsnog htmlspecialchars moet doen :)
Hoeft dan niet, PHP verwerkt al helemaal goed. FCKeditor heeft prima instellingen/functies daarvoor. PHP is daarom ook veel handiger/makkelijker dan met html/javascript spelen. De functies van FCKeditor maken er direct iets goed werkends van.
Pagina: 1