Coldfusion do’s and dont’s 2: rendering

Geschreven door: op donderdag 30 juni 2016

Leestijd:

In een vorig artikel heb ik geschreven hoe je in ColdFusion veilig en beter om kunt gaan met de database. In dit artikel zal ik enkele functies bespreken die helpen bij het plaatsen van content om de website met behulp van ColdFusion.

In Nederland maken maar weinig webontwikkelaars gebruik van onder andere ColdFusion, Sigma Solutions is daar één van. Hoewel modernere en betere ontwikkelomgevingen voor handen zijn, zoals .NET van Microsoft, waarin de nieuwste release van het Accessify WCMS is ontwikkeld, zijn er nog altijd websites en applicaties die ontwikkeld zijn in ColdFusion. Sigma Solutions raadt aan deze te migreren naar een nieuwe taal of anders om ze correct te beheren.

ColdFusion is een taal op zich, gebaseerd op Java, met z’n specifieke eigenaardigheden. Door de ervaring die Sigma Solutions heeft met ColdFusion, weten wij waar we op moeten letten en wat mogelijke valkuilen zijn.

ColdFusion gebruikt components en templates om informatie te delen met de rest van de wereld. Components worden gebruikt als controller, templates zijn de view.

Uitgebreide tekensets met CFProcessingDirective

Pagina’s (of views) die getoond worden aan de bezoeker hebben een bepaalde encoding. Hiermee kan worden aangegeven welke tekenset getoond kan worden in de browser. De algemeen gebruikte tekenset UTF-8 bezit vele duizenden karakters, maar om deze te gebruiken, dient wel aangegeven te worden dat de pagina deze kan tonen.

Er zijn veel manieren om dit te doen, waaronder via de CF-tag CFPRocessingDirective. Deze tag zet je bovenaan een template en als attribuut geef je op pageEncoding=”<tekenset>”, bijvoorbeeld <cfprocessingdirective pageEncoding=”utf-8” />.

Let op: voor elke ColdFusion-template moet dit worden opgegeven, dus ook als deze via CFINCLUDE is meegenomen.

Daarnaast kan je het attribuut suppressWhitespace gebruiken om alle overbodige witruimte die gegenereerd wordt doorColdFusion te verwijderen.

In CFscript gebruik je hiervoor de volgende methode:

component{

pageencoding "utf-8" ;
 

Zie http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-76de.html voor meer mogelijkheden.

Content opslaan met Cfsavecontent

Content die door ColdFusion gegenereerd wordt, wordt direct naar de browser geschreven. Er zijn echter gevallen waarbij je de content eerst wilt maken en daarna pas sturen naar de browser, bijvoorbeeld om het te cachen of om bepaalde waardes te vervangen.

Je kunt een variabele maken en met &= tekst toevoegen aan de variabele, bijvoorbeeld:

<cfset tekst = “<h1>Hier wat tekst.</h1>” />

<cfset tekst &= “Nog meer tekst…<br />” />

 

Of:

tekst = “<h1>Hier wat tekst.</h1>”;

tekst &= “Nog meer tekst…<br />”;

 

Deze manier is echter nogal omslachtig, omdat er erg veel code wordt gebruikt om slechts wat content te genereren. Daarnaast is het lastig te onderhouden.

Er is hiervoor een alternatief: Cfsavecontent. Met Cfsavecontent plaats je de content die je in een variabele wilt opslaan tussen het begin en het einde van de tag en hoef je je niet druk te maken om regeleindes. Door <cfoutput> erin te zetten, kun je de content ook nog parsen.

Voorbeeld:


<cfsavecontent variable="tekst" >
            #bepaalde tekst#

            <cfoutput>
                        #now()#
            </cfoutput>
</cfsavecontent>

<cfoutput>#tekst#</cfoutput>

Of:

<cfscript>

            savecontent variable="tekst2" {

                        WriteOutput("

                                   ##bepaalde tekst##

                                                                      

                                   <br />

 

                                   #now()#

                        ");

            }

</cfscript>

<cfoutput>#tekst2#</cfoutput>

Daarnaast is CFSaveContent veel sneller bij het samenstellen van lange stukken tekst, zie Don't optimise your code (annexe).

Veilig tonen informatie van derden

In het volgende artikel wordt uitgelegd welke do’s en don’ts er zijn op het gebied van het (veilig) tonen van informatie van derden op je website.


Andere blogartikelen

  • SQL: Geclusterde en niet-geclusterde index

    Geschreven door: op zondag 30 juni 2019

    Het kan soms voorkomen dat het veel tijd kost voordat een bepaalde query resultaten teruggeeft. Dit kan liggen aan een scala aan problemen, zoals het gebruik van veel joins. Wat de query kan helpen ve ...

    Bekijk het artikel »
  • Hoe werkt OAuth 2.0

    Geschreven door: op zondag 30 juni 2019

    In de huidige samenleving is iedereen bijna altijd online, zo ook de applicaties waarvan de mensen gebruik maken. Als je jouw applicatie niet goed afschermt, kan dit allemaal veiligheidsrisico’s met z ...

    Bekijk het artikel »
  • OAuth 2.0: JWT token en claims

    Geschreven door: op zondag 30 juni 2019

    In mijn vorige blog heb ik uitgelegd hoe OAuth 2.0 ervoor kan zorgen dat derde partijen op een veilige manier gebruik kunnen maken van jouw applicatie met behulp van tokens. In deze blog gaan we wat m ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten