[php+js] Javascript functies gebruiken in PHP, ofzo..

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil eerst dmv PHP html ophalen uit de DB (met get_page_contents), deze html is echter dmv Javascript ge-escaped. Dus die wil ik unescapen met de unescape functie. Daarna wil ik deze unescaped html naar het scherm schrijven dmv php. Het wil niet echt lukken, ik probeer het als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    require("inc/globals.inc");
    print_header(get_titel());
    if (array_key_exists("html", $_POST)) {
        $html = $_POST["html"];
    } else {
        $html = get_page_contents(get_scriptname());
    }
    print $html;
?>

    <SCRIPT language="JavaScript" event="onload" for="window">
        document.write(unescape(<?= $html ?>));
    </SCRIPT>

    <FORM ID="theForm" ACTION="richedit.php" METHOD="post">
    <INPUT TYPE="submit" value="Pagina wijzigen"><br>
    <INPUT TYPE="hidden" name="page" value="<?=get_titel()?>">
    <textarea name="html" style="display:none" rows="1" cols="20"><?= $html ?></textarea>
    </FORM>

<?php
    print_footer();
?>


Ik snap wel waarom het niet werkt. De PHP wordt eerste geintepreteerd en vervolgens start de onload eens. Ik zie echter geen oplossing, wie wel?

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
document.write (de niet-geescapete) waarde in je client-side script?

Icons are overrated


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik haal ze ge-escaped uit de DB

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Waarom wil je het dan nog escapen met javascript? Waarom gebruik je trouwens document.write. Kun je niet gewoon direct met php de html uitprinten en niet via javascript?

Oh wacht ik begrijp denk ik wat je bedoelt. Je wilt dus de tekst met javascript unescapen om er vervolgens mij php weer iets mee te doen. Dat kan dus niet. Waarom gebruik je de addslashes functie niet gewoon?

[ Voor 41% gewijzigd door Michali op 06-03-2005 15:40 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil van de pagina's zelf kunnen editen door middel van Rich Text Editor (http://www.richtext.org.uk/). Deze werkt echter niet goed als ik de html niet unescaped aanlever. Dus moet ik de html escapen, aan RTE doorgeven, deze geeft de nieuwe HTML weer escaped terug. Vervolgens moet de nieuwe HTML weer op de pagina worden weergegeven.

Met het escapen gaat het meer om de enters eruit halen dan de control characters zoals quotes enzo.

[ Voor 15% gewijzigd door Verwijderd op 06-03-2005 15:44 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
dan kun je toch een str_replace toepassen:
PHP:
1
print str_replace(array("\n\r", "\r", "\n", "\t"), "", $html);

of bedoel je dat niet? Anders moet je gewoon eens de lib doorspitten. Er is vast wel een functie die doet wat je wilt.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het moet wel met JS, want in het RichEdit formulier moet ik met JS de nieuwe HTML uit de editor halen, vervolgens escapen en weer terugposten naar het originele formulier

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Dan doe je toch:
PHP:
1
document.forms['theForm'].getElementsByTagName('textarea').item(0).value = unescape("<?=$html?>");

Gaat dat niet werken?
Verwijderd schreef op zondag 06 maart 2005 @ 15:54:
Het moet wel met JS, want in het RichEdit formulier moet ik met JS de nieuwe HTML uit de editor halen, vervolgens escapen en weer terugposten naar het originele formulier
Trouwens. Waarom zou dat dan niet werken als je de html er met php in zet? PHP heeft daar vrij weinig mee te maken als alles eenmaal aan de client kant zit. Dat maakt dus niets uit.

[ Voor 64% gewijzigd door Michali op 06-03-2005 16:05 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Dit is toch van de gekke, dat je je pagina's zo opbouwt omdat je editor het anders niet kan? Zo krijg je tag-soup.

Wat je trouwens nodig hebt is http://www.php.net/rawurldecode

Acties:
  • 0 Henk 'm!

  • chielsen
  • Registratie: Oktober 2003
  • Laatst online: 20-09 01:17
Ik weet niet of je dat wilt, maar probeer die print $html eens weg te halen, dan staat het alleen nog maar in dat js gedeelte

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie hulp. Het is nu al gelukt... maar ehm, met een andere editor :)
Pagina: 1