Embedded HTML pakt <code> niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Graneker

Jan Graneker

10/03/2016 14:54:48
Quote Anchor link
Hallo Leden,

Ik zit in een CMS, vervolgens schakel ik over naar de optie embeded HTML.

Dan plak ik de volgende code erin:

<pre><code>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo 'Welkom!'; ?>
</code></pre>

Na het opslaan blijf ik alleen nog met

<pre> </pre> over.

Iemand hier een handig trucje voor?
 
PHP hulp

PHP hulp

05/11/2024 22:02:06
 
- Ariën  -
Beheerder

- Ariën -

10/03/2016 15:09:03
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo 'Welkom!'; ?>

Dit is geen HTML maar PHP, en blijkbaar wordt dit uit veiligheidsoverwegingen netjes weggestript.
Als je er HTML van wilt maken, dan zul je de < en > moeten vervangen door onschadelijke entities:

Dus dan krijg je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
&lt;?php echo 'Welkom!'; ?&gt;

Uiteraard wordt het PHP-scriptje ook niet uitgevoerd, maar dat zal de bedoeling ook niet zijn, zoals ik lees.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 15:22:22
Quote Anchor link
In welk CMS werk je?
Wat voor editor gebruik je?
Wat probeer je uiteindelijk te bereiken? Het weergeven van code in een soort van codeblokken (zoals op dit forum gebeurt als je [code]...[/code] gebruikt?) Misschien bestaan er plugins voor deze editor die dit doen?

En ja, PHP in HTML gaat niet werken, en wellicht stript de editor passages die als "gevaarlijk" worden bestempeld.

Wat Ariën voorstelt kan wellicht werken, maar ik zou deze werkwijze niet hanteren, omdat dit toch een soort van escape-on-input is, wat gewoon niet praktisch werkt.

Idealiter wil je zoiets dat:
[code]<?php
echo 'Hello World.';
?>[/code]

Wordt omgezet naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'Hello World.';
?>

?
Gewijzigd op 10/03/2016 15:28:29 door Thomas van den Heuvel
 
Jan Graneker

Jan Graneker

10/03/2016 15:23:16
Quote Anchor link
Ik wil het zoals hier op Phphulp weergeven.

Dus de <pre> met de <code> (waardoor de tekst kleur krijgt).

De Pre en de Phpcode worden weergegeven, alleen <code> verwijderd bij het opslaan.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 15:27:38
Quote Anchor link
Mja, dan zul je een soort van UBB-code functionaliteit moeten inbouwen. Die je editor -wat deze ook moge wezen- ook accepteert (en niet stript). Deze UBB-code leest dan passages met [tagcode]...[/tagcode] uit en vervangt deze door iets anders. Of je zoekt een of ander fancy WYSIWYG-equivalent.
 
- Ariën  -
Beheerder

- Ariën -

10/03/2016 15:27:59
Quote Anchor link
Thomas van den Heuvel op 10/03/2016 15:22:22:
Wat Ariën voorstelt kan wellicht werken, maar ik zou deze werkwijze niet hanteren, omdat dit toch een soort van escape-on-input is, wat gewoon praktisch werkt.

Leg eens uit? Als ik zo zie, wil hij een hele PHP-code gewoon behanbdelen als een string. Dan moet je gewoon de < en > onschadelijk maken door ze te vervangen in HTML-entities.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 15:31:18
Quote Anchor link
Er miste een "niet" :).

Stel dat je die code dadelijk nog een keer wilt aanpassen.

Dat leest voor geen meter.

Je moet input niet escapen maar zoveel mogelijk proberen in zijn rauwe vorm op te slaan. Zodat bewerken geen hels karwei wordt.

Vervolgens is het de bedoeling dat je output onschadelijk maakt. Daar pas je eventuele escaping toe.

EDIT: daarbij zit je nog met het volgende dilemma: als je iets gaat weergeven. Weet je dan ZEKER dat iets al ge-escaped is? Ik denk dat het veiliger is om aan te nemen dat iets nog NIET ge-escaped is dan er vanuit te gaan dat iets WEL ge-escaped is. Dit lijkt mij nog een reden om het escapen pas in een zo laat mogelijk stadium te doen (en er hierbij vanuit te gaan dat dit dus nog niet is gebeurd). Better safe than sorry.
Gewijzigd op 10/03/2016 15:36:49 door Thomas van den Heuvel
 
Jan Graneker

Jan Graneker

10/03/2016 15:36:10
Quote Anchor link
Het gaat om het blog: Nibbleblog.
Ik kan zo helaas niet zien welke editor er wordt gebruikt. (lijkt erop dat het 'tiny editor' is.

Wel wordt alle code in een string gezet. De editor werkt wel met de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<code class="rainbow" data-language="php"><span class="variable language php-tag">&lt;?php</span>
Gewijzigd op 10/03/2016 15:38:38 door Jan Graneker
 
Jan de Laet

Jan de Laet

10/03/2016 15:41:16
Quote Anchor link
Moet je niet gewoon dit in de embedded HTML zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<pre>Welkom!</pre>
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 15:41:23
Quote Anchor link
op het forum van nibble staat iets over een Google Code Prettify plugin.

2 minuten googlen :/.

EDIT: mogelijk werkt bovenstaande niet meer, maar er zijn dus mogelijkheden. Of je schrijft je eigen plugin. Of je Googled even verder.
Gewijzigd op 10/03/2016 15:42:52 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

10/03/2016 15:43:18
Quote Anchor link
Met htmlentities kan je de string zelf omvormen tot een string met onschadelijke entities.
Een mooi hulptooltje vind je hier: https://www.functions-online.com/htmlentities.html

Let er wel op dat deze standaard UTF-8 gebruikt.

Jan de Laet op 10/03/2016 15:41:16:
Moet je niet gewoon dit in de embedded HTML zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<pre>Welkom!</pre>

Ik denk dat hij de PHP-code wilt tonen, uiteraard ongeparsed ;-).
Gewijzigd op 10/03/2016 15:44:26 door - Ariën -
 
Jan Graneker

Jan Graneker

10/03/2016 15:45:53
Quote Anchor link
Thomas van den Heuvel op 10/03/2016 15:41:23:
op het forum van nibble staat iets over een Google Code Prettify plugin.

2 minuten googlen :/.

EDIT: mogelijk werkt bovenstaande niet meer, maar er zijn dus mogelijkheden. Of je schrijft je eigen plugin. Of je Googled even verder.


Tnx, ik had deze inderdaad ook gevonden. Helaas niet meer volledig.


Toevoeging op 10/03/2016 15:47:45:

- Ariën - op 10/03/2016 15:43:18:
Met htmlentities kan je de string zelf omvormen tot een string met onschadelijke entities.
Een mooi hulptooltje vind je hier: https://www.functions-online.com/htmlentities.html

Let er wel op dat deze standaard UTF-8 gebruikt.

Jan de Laet op 10/03/2016 15:41:16:
Moet je niet gewoon dit in de embedded HTML zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<pre>Welkom!</pre>

Ik denk dat hij de PHP-code wilt tonen, uiteraard ongeparsed ;-).


Ik wil inderdaad ongeparsed de PHP tonen. Het PRE blokje is wel te zien met inhoud en het lijkt erop dat de editor het automatisch unparsed, omdat de code gewoon getoond word?

Bedankt voor je link ik ga even kijken of ik daar wat mee kan.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 15:48:29
Quote Anchor link
@Ariën Dat klopt. Ik zou trouwens htmlspecialchars() gebruiken, omdat htmlentities() ook niet heel erg praktisch is (problemen in XML et cetera).

Maar htmlspecialchars() pas je dus toe op datgene wat je weer gaat geven (escape on ouptut), niet op het moment dat deze informatie de database ingaat (escape on input).

Lees mijn edit van mijn eerste reactie op jouw vraag. Het is veiliger om er vanuit te gaan dat informatie nog niet ge-escaped is dan dit wel te doen. En het is onpraktisch om door die &lt; &gt; zut heen te spitten, te meer als je die veelvuldig gebruikt in je code snippet(s). Dan heb je toch veel liever dat die fatsoenlijk te lezen is?

Een plugin of extern stuk functionaliteit zou deze content moeten "knippen en plakken" in de gewenste vorm, daar zou je zelf verder geen moeite voor hoeven te doen.
Gewijzigd op 10/03/2016 15:51:13 door Thomas van den Heuvel
 
Jan Graneker

Jan Graneker

10/03/2016 15:52:42
Quote Anchor link
"Lees mijn edit van mijn eerste reactie op jouw vraag. Het is veiliger om er vanuit te gaan dat informatie nog niet ge-escaped is dan dit wel te doen. En het is onpraktisch om door die &lt; &gt; zut heen te spitten, te meer als je die veelvuldig gebruik in je code snippet. Dan heb je toch veel liever dat die fatsoenlijk te lezen is?"

Precies. Ik wil graag gewoon de code kunnen typen, want als het bij het wijzigen omgezet word en alle XML getoond wordt is het een wirwar.

Ik zou dus even moeten kijken of ik de TinyCME editor zo kan met bijv. een plugin om dit goed weer te geven.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 16:03:28
Quote Anchor link
Je zou het kunnen proberen met GeSHi zoals hier beschreven staat.
 
Jan Graneker

Jan Graneker

10/03/2016 16:08:03
Quote Anchor link
Tnx Thomas, ga het doornemen.

Dit is de demopage:

http://demo.nibbleblog.com/

Als je naar onderscrollt zie je dat ze het daar ook ungeparsed laten zien, klopt dat?
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 16:30:15
Quote Anchor link
Het lijkt er op dat zij gewoon een pre-formatted tekstblok gebruiken voor code, aangevuld met een <code> tag.

Mogelijk worden codeblokken al out-of-the-box ondersteund.

Probeer voor je codeblokken gewoon eens het "preformatted" format, bekijk in de backend van de demo hoe ze dat daar doen.

De documentatie is niet erg duidelijk over het gebruik :/.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.