Artikel - Detailansicht

Icon Aktuelles Tipps & Tricks 3

Versucht man mit decrypt() eine Variable zu entschlüsseln, die nicht verschschlüsselt wurde gibt das eine Fehlermeldung. Folgender Code verhindert das. Die URL-Variable kann in diesem Beispiel sowohl verschlüsselt als auch unverschlüsselt übergeben werden.

<CFTRY>
  <CFSET user=Decrypt(URL.username,"n")>
  <CFCATCH TYPE=
"any">
    <cfset user=URL.username>
  </CFCATCH>
</CFTRY>



Ist URL.username nicht verschlüsselt, wirft die 2. Zeile eine Fehlermeldung (Exception) auf, die von dem CFTRY abgefangen wird. Es wird dann einfach die unverschlüsselte Zuweisungsversion benutzt.

Wenn man Formulare über mehrere Seiten verteilt (z. B. Registrierungsformulare) muss man die auf der Vorgängerseite eingegebenen Werte im allgemeinen als versteckte Formularelemente in der nächsten Seite im nächsten Formular als HIDDEN-Elemente zwischenspeichern (type="hidden"). Anstatt nun jenes übermittelte Formularelement hardcodet im neuen Formular unterzubringen gibt es einen trickreicheren Weg, der sogar weiter funktioniert, wenn die übergebenen Elementnamen sich ändern oder erweitert werden.
Bei jedem Formular-Submit wird von ColdFusion eine spezielle Variable bereitgestellt: FORM.fieldnames. Diese enthält die Namen alle im Submit enthaltenen Formularelemente. Man muss jetzt nur einen Loop programmieren, der alle übermittelten FORM-Variablen ausliest und als HIDDEN-Felder ins Formular setzt. Der Code dazu könnte in etwas so aussehen:

<form action="weiter.cfm" method="post">
  <cfloop index="idx" list="#FORM.fieldnames#" delimiters=",">
    <cfset va=
"FORM.#idx#">
     <cfoutput>
      <!----hier werden die hiddens angelegt-------->
      <input type="hidden" name="#idx#" value="#evaluate(va)#">
    </cfoutput>
  </cfloop>
  <!--- hier kommen weitere neuen formelemente rein--->
  <input type="submit">
</form>


Für CFML-CustomTags ist es manchmal wichtig zu wissen, wie oft sie in der Seite aufgerufen werden oder den ersten Aufruf zu erkennen. Benutzt man z.B. in einem CustomTag Javascript, muss man die Javascript-Routinen nicht bei jedem Tagaufruf in der Webseite neu in den Header schreiben, es reicht einmal die JS-Codes zu setzen und nur noch bei jedem CustomTag-Aufruf die Javascriptfunktionen aufzurufen. Eine Methode im Erkennen des ersten Tag-Auftretens besteht darin, im CustomTag eine globale Variable zu erzeugen, die bei jedem Aufruf hochgezählt wird. Die globale Variable ist in jedem Tag sichtbar, man kann dadurch natürlich auch erkennen, ob das Tag schon in der Seite benutzt wurde oder ob man die Inizialisierung vornehmen muss. Im CustomTag könnte mit diesem Code der erste Aufruf erkannt werden:

<cfparam name="caller.firstCall" default="true">
<cfif caller.firstCall>

  <!--- tag wird das erste mal aufgerufen!!! --->
  <cfset caller.firstCall="false"
<cfelse>

  <!--- wiederholte aufruf --->
</cfif>



Durch den Präfix caller kann ein CustomTag eine globale Variable im aufrufenden Template erzeugen.



Steffen Goldfuss steffen@goldfuss.de - 30.10.2000

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen