130 92 9MB
German Pages 812
Ch Cha Mo C harles M ohnike Über bersetzung: Ju dit ith JJud ud udi ith Mu Muhr
ColdFusion De Der Eiinstieg D er ei einfache E ins Web-Publishing E-Commerce-Anwendungen und Datenbanken Testversion auf der Buch-CD
Markt + Technik Verlag
Die Deutsche Bibliothek – CIP-Einheitsaufnahme Ein Titeldatensatz für diese Publikation ist bei Der Deutschen Bibliothek erhältlich.
Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar. Autorisierte Übersetzung der amerikanischen Originalausgabe: Teach Yourself ColdFusion in 21 Days © 2000 by SAMS Publishing Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig. Fast alle Hardware- und Software-Bezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig auch eingetragene Warenzeichen oder sollten als solche betrachtet werden. Umwelthinweis: Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt. Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltverträglichem und recyclingfähigem PE-Material.
10 9 8 7 6 5 4 3 2 1 05 04 03 02 01
ISBN 3-8272-6017-5 © 2001 by Markt&Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH. Martin-Kollar-Straße 10–12, D–81829 München/Germany Alle Rechte vorbehalten Übersetzung: Judith Muhr, Drachselsried Fachlektorat: Dr. Walter Fink, Fink & Partner Media Services GmbH, München Lektorat: Melanie Kasberger, [email protected] Herstellung: Claudia Bäurle, [email protected] Einbandgestaltung: Heinz H. Rauner, Gmund Satz: reemers publishing services gmbh, Krefeld, (www.reemers.de) Druck und Verarbeitung: Kösel, Kempten (www.koeselbuch.de) Printed in Germany
Inhaltsverzeichnis Vorwort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Wer sollte dieses Buch lesen? . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Nichtprogrammierende Web-Entwickler. . . . . . . . . . . . . . . . . 24 Web-Programmierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Alle anderen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Überblick. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Konventionen in diesem Buch . . . . . . . . . . . . . . . . . . . . . . . . . 26
Woche 1 – Vorschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Tag 1
ColdFusion – Einführung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.1 1.2 1.3 1.4 1.5
1.6 1.7
1.8 1.9
Was ist ColdFusion? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Ein Beispiel für eine ColdFusion-Applikation . . . . . . . . . . . . . 31 Wozu sollte ich ColdFusion einsetzen? . . . . . . . . . . . . . . . . . . 33 Datenbankgestützte Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Fertig fürs Geschäft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Datensammlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Besser als CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Benutzerdefinierte Applikationen. . . . . . . . . . . . . . . . . . . . . . . 38 Dynamische Seiten erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Clients und Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 ColdFusion innerhalb der Client/Server-Beziehung . . . . . . . . 43 Tag-Verarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Verbindung mit Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 44 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5
Inhaltsverzeichnis
Tag 2
Aufbau einer ColdFusion-Applikation . . . . . . . . . . . . . . . . . . . . . . 47 2.1 Verbinden Sie Ihre Datenbank mit dem Web . . . . . . . . . . . . . 48 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Die Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Die Zeilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Der Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Kreuzverweise für Daten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.2 Die Datenquelle und ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.3 Das ColdFusion-Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 HTML-Markup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Die Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.4 Die Beziehung zwischen Abfrage und Ausgabe. . . . . . . . . . . . 58 URL-Variablen zur Konkretisierung der Ausgaben . . . . . . . . . 60 2.5 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.6 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2.7 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Tag 3
ColdFusion einrichten und eine Datenquelle definieren . . . . . . . 67 3.1 Kaufen oder nicht kaufen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.2 Fragen, die Sie einem potentiellen ColdFusion-Provid er stellen sollten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 ColdFusion-Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Die Anzahl der unterstützten Datenquellen . . . . . . . . . . . . . . 70 Aktualisierung der Datenquellen . . . . . . . . . . . . . . . . . . . . . . . 72 Wo werden Ihre Datenbanken abgelegt? . . . . . . . . . . . . . . . . . 73 3.3 ColdFusion Server-Varianten . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Kompatibilität mit der Professional Edition . . . . . . . . . . . . . . . 74 Kompatibilität mit der Enterprise Edition . . . . . . . . . . . . . . . . 74 3.4 Installation von ColdFusion Server auf Windows-Plattformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.5 Installation von ColdFusion Server auf UNIX-basierten Plattformen . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.6 Überprüfen des Server-Setups. . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.7 Der ColdFusion Administrator . . . . . . . . . . . . . . . . . . . . . . . . . 78 Server-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6
Inhaltsverzeichnis
3.8
3.9
3.10 3.11 3.12
Tag 4
Datenquellen – Optionen und Setup . . . . . . . . . . . . . . . . . . . . 80 Datenquellenname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 ODBC-Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Beschreibung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Datenbankdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Eine Datenquelle überprüfen. . . . . . . . . . . . . . . . . . . . . . . . . . 83 Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Automatisierte Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Erweiterungsseiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Weitere Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Den ColdFusion-Dienst aktivieren und deaktivieren . . . . . . . 85 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Aufbau einer Datenbank und Organisation der Daten . . . . . . . . . 91 4.1 Von ColdFusion unterstützte Datenbanksoftware . . . . . . . . . . 92 4.2 ColdFusion als Schnittstelle zwischen Datenbank und Web . 93 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.3 Anlegen einer Datenzuordnung . . . . . . . . . . . . . . . . . . . . . . . . 95 4.4 Einführung von Datenbeziehungen. . . . . . . . . . . . . . . . . . . . . 98 4.5 Entwurf der Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Felder definieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Die Bedeutung von Schlüsseln. . . . . . . . . . . . . . . . . . . . . . . . 104 4.6 Datenbeziehungen einrichten . . . . . . . . . . . . . . . . . . . . . . . . 105 4.7 Tabellen- und Datenbanksicherheit . . . . . . . . . . . . . . . . . . . . 108 Tabellenberechtigungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.8 Daten in eine Datenbank schreiben . . . . . . . . . . . . . . . . . . . . 110 Das Eingabeformular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Daten importieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Web-Eingaben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.9 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.10 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7
Inhaltsverzeichnis
Tag 5
Finden Sie die Daten, die Sie brauchen: Abfragen und SQL – eine Einführung . . . . . . . . . . . . . . . . . . . . . 117 5.1 5.2 5.3
5.4
5.5 5.6
Tag 6
8
ColdFusion-Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 SELECT-Anweisung – Grundlagen . . . . . . . . . . . . . . . . . . . . 119 Konkretisierung einer SELECT-Anweisung durch Bedingungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Relationale Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Logische Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Die Operatoren IN und BETWEEN . . . . . . . . . . . . . . . . . . . 129 LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Sortieren und Auswerten von Abfrageergebnissen . . . . . . . . . 133 Ausgaben mit ORDER BY sortieren. . . . . . . . . . . . . . . . . . . . 134 Duplikate mit DISTINCT erkennen . . . . . . . . . . . . . . . . . . . 136 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Ihre erste Web-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.1 Definition einer Beispielapplikation . . . . . . . . . . . . . . . . . . . . 142 Auswerten der Datenbank. . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6.2 Ordner anlegen und freigeben . . . . . . . . . . . . . . . . . . . . . . . . 145 6.3 Einrichten der Datenquelle . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.4 Aufbau Ihrers ersten Templates. . . . . . . . . . . . . . . . . . . . . . . . 148 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Der Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Der Ausgabeabschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Der Fußbereichsabschnitt. . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.5 Anzeige des Index-Template . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Grundlegende Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.6 Aufbau der zweiten Template-Seite . . . . . . . . . . . . . . . . . . . . 157 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Die Header- und Ausgabeabschnitte . . . . . . . . . . . . . . . . . . . 158 Der Fußbereich. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.7 Anzeige des Details-Template . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.8 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Inhaltsverzeichnis
6.9
Tag 7
Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Datenbankinhalt mit ColdFusion ändern . . . . . . . . . . . . . . . . . . 167 7.1 7.2 7.3 7.4
7.5
7.6 7.7
7.8 7.9 7.10 7.11
Definition einer Beispielapplikation . . . . . . . . . . . . . . . . . . . . 168 und . . . . . . . . . . . . . . . . . . . 169 Web-Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Ein Eingabeformular zum Einfügen von Daten anlegen . . . 172 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Der Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Das Formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Testen des Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Anlegen der Einfüge-Aktionsseite . . . . . . . . . . . . . . . . . . . . . . 179 Das Einfügen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Der Rumpf und der Fußbereich. . . . . . . . . . . . . . . . . . . . . . . 180 Die Bearbeitungsoberfläche anlegen . . . . . . . . . . . . . . . . . . . 182 Ein Formular zur Bearbeitung existierender Daten anlegen . 184 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Header- und Formularabschnitte . . . . . . . . . . . . . . . . . . . . . . 186 Anlegen der Aktualisierungsseite . . . . . . . . . . . . . . . . . . . . . . 189 Fehlersuche für Einfüge- und Aktualisierungsoperationen . . 190 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Woche 2 – Vorschau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Tag 8
ColdFusion Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 8.1 8.2 8.3
ColdFusion Studio – Einführung . . . . . . . . . . . . . . . . . . . . . . 198 Studio installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Komponenten von Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Ressourcen-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9
Inhaltsverzeichnis
8.4
8.5
8.6
8.7 8.8 8.9 8.10
Tag 9
Erweiterung Ihrer Applikationen mit Variablen und If-Then-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.1 9.2 9.3 9.4 9.5
9.6 9.7 9.8
10
Zugriff auf Remote-Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Definieren eines lokalen oder Remote-Servers . . . . . . . . . . . 204 Anzeige von Dateien oder Datenquellen im Ressourcenbereich. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Die Arbeit mit dem Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Bearbeitungsansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Browser-Ansicht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Entwurfsansicht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Die Hilfestellung von Studio . . . . . . . . . . . . . . . . . . . . . . . . . 211 Tag-Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Der Tabellen-Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Der Frame-Assistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Der SQL-Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Studio für Ihre Arbeit konfigurieren . . . . . . . . . . . . . . . . . . . . 219 Hilfe- und Referenzfunktionen von Studio . . . . . . . . . . . . . . 220 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Definieren einer Beispielapplikation . . . . . . . . . . . . . . . . . . . 226 Das -Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Das -Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Eine Applikation mit erstellen . . . . . . . . . . . . . . . . . 233 Die Seite für die Kennwortprüfung . . . . . . . . . . . . . . . . . . . . 234 Die Einfügeseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Die Abfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Gültigkeitsbereiche für Variablen nutzen . . . . . . . . . . . . . . . 237 Variablen mit definieren. . . . . . . . . . . . . . . . . . . . 241 Der Zählmechanismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 F&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Quiz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Inhaltsverzeichnis
Tag 10
Ausgaben mit Hilfe von Tabellen und Gruppen organisieren . . . 251 10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 10.2 Ausgabetabellen mit anlegen . . . . . . . . . . . . . 253 im Textmodus . . . . . . . . . . . . . . . . . . . . . . . . . 254 im HTMLTABLE-Modus . . . . . . . . . . . . . . . 256 10.3 Ausgabetabellen mit dem
Künstler | 32:Titel | 33:Zustand | 34:Verwendung | 35:
-Tags den Parameter align="center" verwendet, um die Überschriften jeweils in der Spaltenmitte anzuzeigen. Für die dritte Zeile, die in Zeile 42 beginnt, öffnen wir in Zeile 40 das -Tag. Von hier an werden bis zum schließenden -Tag in Zeile 49 jede Zeichenkette, jedes Tag und jede Variable für jeden von der Abfrage zurückgegebenen Datensatz wiederholt – wir müssen also sorgfältig vorgehen. 261 Ausgaben mit Hilfe von Tabellen und Gruppen organisieren Wenn Sie Tabellen manuell mit anlegen, resultieren die meisten Fehler aus Tabellen-Tags, die in den -Abschnitt Ihrer Seite eingeschlossen bzw. außerhalb verwendet werden sollten. Wenn Sie eine Vorschau für eine solche Seite anzeigen und die Tabelle nicht richtig (oder überhaupt nicht) aufgebaut ist, überprüfen Sie noch einmal die Elemente, die innerhalb oder außerhalb Ihrer -Abschnitte stehen sollen. Jeder Datensatz sollte in einer eigenen Zeile stehen. Verwenden Sie also ein | ||||||||
-Tags, um die vier Spalten anzulegen. Jedes | enthält eine der von der Abfrage zurückgegebenen Variablen, und wir müssen darauf achten, dass diese in derselben Reihenfolge wie die Überschriften platziert werden. Wir schließen jedes | -Tag hinter der jeweiligen Variablen, und das | ||||||
- oder | ||||||||
#DollarFormat(net_worth)# |
Geben Sie den Namen der Zieldatei ein:
Eine Datei löschen
Geben Sie den Namen der zu löschenden Datei ein:
Die folgenden Abschnitte betrachten die einzelnen -Abschnitte und die zugehörigen ACTION-Seiten genauer.
459
Dateien und Verzeichnisse
Abbildung 18.4: Diese Formularseite verwendet drei -Abschnitte, um drei verschiedene Aufgaben zur Dateiverwaltung zu realisieren.
Die ACTION-Seite für das Kopieren Betrachten Sie den Abschnitt für das Kopieren in Listing 18.5. Der Code sieht wie folgt aus:
Eine Datei umbenennen
Geben Sie den Namen der umzubenennenden Datei ein:
Geben Sie den neuen Dateinamen ein:
Listing 18.7 zeigt die ACTION-Seite für diesen -Abschnitt. Listing 18.7: copy.cfm 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
462
Ihre Datei wurde umbenannt!
DESTINATION="#FileDest#"
Ihre Datei wurde umbenannt!
Die Datei #FORM.FileSource# wurde in #FORM.FileDest# umbenannt.
Dateien mit kopieren, umbenennen und löschen
17: Sie können weiterarbeiten! 18: 19:
Listing 18.7 ist Listing 18.6 sehr ähnlich, bis auf die ausgeführte ACTION. Die ACTION rename nimmt ebenfalls SOURCE und DESTINATION entgegen, die von der Formularseite dynamisch übergeben werden. Der ATTRIBUTES-Parameter wurde ebenfalls auf SCHREIBGESCHÜTZT (ReadOnly) gesetzt.
Die ACTION-Seite zum Löschen Die ACTION-Seite für das Löschen, delete, ist die einfachste Aufgabe in , aber gleichzeitig auch die gefährlichste. Sie nimmt nur ein Attribut entgegen: den Namen der zu löschenden Datei. Der -Abschnitt aus Listing 18.5 sieht wie folgt aus:
2: 3: 4: 5: 33: 34: Ihr Auftrag wurde nicht verarbeitet. Unser Zahlungsprozess hat den ➥folgenden Fehler zurückgegeben:
37: 38: #MErrMsg# 39: 40: 41: 42:
Beispiel für CFABORT
Beispiel für CFABORT
Beispiel A: Die Anweisung wird vollständig ausgeführt
Der Wert von myVariable nach dem Hochzählen in der Schleife #Counter#mal ergibt: #myVariable#
575
ColdFusion-Tags
Der Wert von myVariable nach Inkrementierung in der Schleife #counter#mal ergibt: #myVariable#
B.16 CFAPPLET CFAPPLET erlaubt bei Verwendung in einem CFFORM den Verweis auf benutzerdefinierte Java-Applets, die zuvor mit dem ColdFusion-Administrator registriert wurden.
Um ein Java-Applet zu registrieren, öffnen Sie den ColdFusion Administrator und klicken auf die Schaltfläche APPLETS.
Syntax
APPLETSOURCE Zwingend erforderlich. Der Name des registrierten Applets. NAME Zwingend erforderlich. Der Formularvariablenname für das Applet. HEIGHT Optional. Die Höhe, angegeben in Pixel. WIDTH Optional. Die Breite, angegeben in Pixel. VSPACE Optional. Abstand oberhalb und unterhalb des Applets, angegeben in Pixel.
576
CFAPPLET
HSPACE Optional. Abstand an jeder Seite des Applets, angegeben in Pixel. ALIGN Optional. Ausrichtung. Gültige Werte sind: 쐽
Left
쐽
Right
쐽
Bottom
쐽
Top
쐽
TextTop
쐽
Middle
쐽
AbsMiddle
쐽
Baseline
쐽
AbsBottom
NOTSUPPORTED Optional. Der Text, den Sie anzeigen wollen, falls die Seite, die ein auf einem Java-Applet basierendes CFFORM-Steuerelement enthält, in einem Browser geöffnet wird, der Java nicht unterstützt oder die Java-Unterstützung deaktiviert hat. Ein Beispiel: NOTSUPPORTED="Der Browser muss Java unterstützen, damit ColdFusion Java Applets angezeigt werden können."
Falls keine Meldung angegeben ist, wird standardmäßig die folgende angezeigt: Der Browser muss Java unterstützen, damit
ColdFusion Java Applets angezeigt werden können!
paramn Optional. Der gültige Name eines registrierten Parameters für das Applet. Geben Sie nur dann einen Parameter an, wenn Sie die bereits mit dem ColdFusion Administrator definierten Parameterwerte überschreiben wollen.
Verwendung Weil Java-Applets vor der Verwendung registriert werden müssen, kann das CFAPPLET-Tag sehr einfach ausgelegt sein und die Standardparameterwerte so übernehmen, wie sie im Coldfusion Administrator registriert wurden. Sie können Parameter auch überschreiben, indem Sie sie direkt im CFAPPLET-Tag aufrufen.
Beispiel
Sitzungs- und Applikationsvariablen definieren
CFAPPLICATION Example
CFAPPLICATION definiert Gültigkeitsbereiche für eine ColdFusionApplikation und aktiviert oder deaktiviert das Speichern von Applikations- und Sitzungvariablen. Dieses Tag wird in der speziellen Datei Application.cfm abgelegt, die in einem Verzeichnis vor allen anderen CF-Templates ausgeführt wird.
E-Turtleneck berichtet stolz, dass heute #application.number# Rollkragenpullover verkauft wurden.
...
B.19 CFAUTHENTICATE Das Tag CFAUTHENTICATE authentifiziert einen Benutzer, indem es einen Sicherheitskontext für die Applikation einrichtet.
Syntax
SECURITYCONTEXT Zwingend erforderlich. Sicherheitskontext, in dem der angegebene Benutzer authentifiziert wird. Dieser Kontext muss zuvor im Sicherheitssystem definiert werden.
582
CFAUTHENTICATE
USERNAME Zwingend erforderlich. Der zu authentifizierende Benutzer. PASSWORD Zwingend erforderlich. Kennwort für den Benutzer . SETCOOKIE Optional. Der Standardwert ist Yes (Ja). Gibt an, ob ColdFusion einen Cookie setzt, in dem Authentifizierungsinformationen enthalten sind. Dieser Cookie ist verschlüsselt und er enthält den Benutzernamen, den Sicherheitskontext, die Browser-Remote-Adresse sowie den HTTP-Benutzeragenten. THROWONFAILURE Optional. Der Standardwert ist Yes (Ja). Gibt an, ob ColdFusion eine Ausnahme (des Typs SECURITY) abfangen soll, falls die Authentifizierung fehlschlägt.
Verwendung Tragen Sie dieses Tag in die Datei Application.cfm ein, um einen Sicherheitskontext für Ihre Applikation festzulegen. Rufen Sie die Funktion IsAuthenticated auf, um festzustellen, ob der Benutzer authentifiziert wurde. Falls Sie für SETCOOKIE den Wert No (Nein) angegeben haben, müssen Sie CFAUTHENTICATE für jede Seite der Applikation aufrufen (beispielsweise über die Datei Application.cfm). Falls Sie THROWONFAILURE auf Yes (Ja) gesetzt haben, können Sie CFAUTHENTICATE in einen CFTRY/ CFCATCH-Block einschließen, um mögliche Ausnahmen im Programm zu verarbeiten.
Beispiel
Authentifizierungsfehler
Ihr gewünschter Kurs wurde gefunden: #Number# #Descript#
Suchen...
584
CFCACHE
B.21 CFCACHE CFCACHE ermöglicht Ihnen, Ihren Seitenaufbau wesentlich zu beschleunigen, wenn der dynamische Inhalt nicht bei jedem Zugriff des Benutzers auf die Seite aufgerufen werden muss. Dazu legt es temporäre Dateien an, die das statische HTML enthalten, das bei einer bestimmten Ausführung der ColdFusion-Seite zurückgegeben wurde. CFCACHE kann sowohl für einfache URLs als auch für URLs mit URL-Parametern verwendet werden.
Syntax
ACTION Optional. Legt eine der folgenden Aktionen fest: 쐽
CACHE – Legt ein server-seitiges Caching fest. Der Standadwert ist CACHE.
쐽
FLUSH – Die im Cache befindliche Seite wird aktualisiert. Wenn Sie FLUSH vorgeben, können Sie auch die Attribute DIRECTORY und EXPIREURL verwenden.
쐽
CLIENTCACHE – Legt Browser-Caching fest.
쐽
OPTIMAL – Legt durch eine Kombination aus serverseitigem und Browser-Caching ein optimales Caching fest.
Weitere Informationen finden Sie im Abschnitt Verwendung. PROTOCOL Optional. Gibt das Protokoll an, mit dem Seiten aus dem Cache erzeugt werden. Geben Sie dafür HTTP:// oder HTTPS:// an. Der Standardwert ist HTTP://. TIMEOUT Optional. Datum und Uhrzeit, die die älteste noch verwendbare Cache-Seite angeben. Falls die Seite im Cache älter als angegeben ist, aktualisiert ColdFusion die Seite. Standardmäßig verwendet Cold-
585
ColdFusion-Tags
Fusion alle Seiten im Cache. Wollen Sie beispielsweise, dass nur Dateien verwendet werden, die nicht älter als 4 Stunden sind, schreiben Sie folgendes:
DIRECTORY Optional. Wird zusammen mit der Einstellung ACTION=FLUSH verwendet. Gibt den vollständigen Pfad zu einem Verzeichnis mit der Datei cfcache.map, die verwendet wird, wenn ACTION=FLUSH ist. Der Standardwert ist das Verzeichnis der aktuellen Seite. CACHEDIRECTORY Optional. Gibt den vollständigen Pfad zu dem Verzeichnis an, in dem die Seiten zwischengespeichert werden sollen. Der Standardwert ist das Verzeichnis deraktuellen Seite. EXPIREURL Optional. Wird zusammen mit der Einstellung ACTION=FLUSH verwendet. EXPIREURL nimmt eine URLReferenz mit Wildcards entgegen, die ColdFusion mit allen Zuordnungen in der Datei cfcache.mapvergleicht. Der Standard ist, alle Zuordnungen zu löschen. Beispielsweise erzeugt »foo.cfm« eine Übereinstimmung mit »foo.cfm«; »foo.cfm?*« erzeugt Übereinstimmungen mit »foo.cfm?x=5« und »foo.cfm?x=9«. PORT Optional. Die Portnummer des Web-Servers, von dem die Seite angefordert wird. Die Portnummer ist standardmäßig 80. Die Portnummer ist praktisch, weil CFCACHE-Code CFHTTP aufruft. Wenn die Portnummer im internen Aufruf von CFHTTP korrekt angegeben ist, wird der URL jedes der gefundenen Dokumente so aufgelöst, dass Links beibehalten werden.
Verwendung In seiner einfachsten Form geben Sie einfach nur oben auf der Seite an, für die ein Caching realisiert werden soll. Mit dem ACTION-Attribut können Sie ein server-seitiges Caching, ein Browser-Caching oder eine Kombination aus server-seitigem und Browser-Caching festlegen. Der Vorteil beim Browser-Caching ist, dass es keine ColdFusion-Ressourcen verbraucht, weil der Browser die Seiten in seinem eigenen Cache ablegt, wodurch die Leistung verbessert wird. Der Vorteil bei der Kombination der beiden Caching-Arten ist, dass damit die Leistung optimiert wird; wenn der Browser-Cache veraltet ist, kann der Server die zwischengespeicherten Daten aus seinem eigenen Cache abrufen. Neben den eigentlichen Dateien im Cache verwendet CFCACHE eine Zuordnungsdatei, um das Caching zu steuern. Sie heißt cfcache.map und verwendet ein ähnliches Format wie eine INI-Datei unter Windows. Die Zurodnung eines URL mit Parametern wird wie folgt realisiert. Angenommen, das Verzeichnis »c:\InetPub\wwwroot\dir1« enthält die CFM-Datei »foo.cfm«, die mit und ohne URL-Parameter aufgerufen werden kann. Die Einträge für foo.cfm in cfcache.map sehen wie folgt aus: [foo.cfm] Mapping=C:\InetPub\wwwroot\dir1\CFCBD.tmp SourceTimeStamp=08/31/1999 08:59:04 AM
586
CFCACHE
[foo.cfm?x=5] Mapping=C:\InetPub\wwwroot\dir1\CFCBE.tmp SourceTimeStamp=08/31/1999 08:59:04 AM [foo.cfm?x=9] Mapping=C:\InetPub\wwwroot\dir1\CFCBF.tmp SourceTimeStamp=08/31/1999 08:59:04 AM
Die Datei cfcache.map in einem bestimmten Verzeichnis speichert nur Zuordnungen für dieses Verzeichnis. Sobald sich der Zeitstempel der zugrundeliegenden Seite ändert, aktualisiert ColdFusion die Cache-Datei für nur diesen URL. ColdFusion verwendet das Feld SourceTimeStamp, um festzustellen, ob die aktuell im Cache befindliche Datei aktuell ist oder neu aufgebaut werden muss. Der Cache kann wie folgt aktualisiert werden: 쐽
TIMEOUT-Attribut – ColdFusion vergleicht den Zeitstempel der Datei im Cache mit dem TIMEOUTAttribut. Ist der Zeitstempel älter als TIMEOUT, wird die alte Datei gelöscht und eine neue wird angelegt. Sie können gegebenenfalls feste Zeitangaben vornehmen, aber es ist besser, relative Zeitangaben zu verwenden. Dies ist die bevorzugte Technik und sie kann für Sekunden, Stunden, Tage, Wochen, Jahre usw. verwendet werden.
쐽
ACTION=FLUSH – Mit ACTION=FLUSH erzwingen Sie, dass die Dateien aus dem Cache entfernt werden. Dafür stehen zwei Attribute zur Verfügung, DIRECTORY und EXPIREURL.
쐽
Manuell – Manuelles oder programmgesteuertes (mit CFFILE) Löschen der .tmp-Dateien. Das ist nicht zu empfehlen.
Hinweise zu CFCACHE: 쐽
CFCACHE setzt voraus, dass die Anzahl der von ColdFusion Server ausgehenden »gleichzeitigen
Anforderungen« größer als 1 ist. Wird eine Cache-Datei erzeugt, benötigt die angeforderte Seite zwei Verbindungen, um die Anforderung erfüllen zu können. Wird eine Datei im Cache gefunden, ist nur eine Anforderung nötig. 쐽
Debugging-Einstellungen haben keine Auswirkung auf CFCACHE, es sei denn, die Template aktiviert sie explizit. Wenn eine Datei im Cache angelegt wird, verwendet CFCACHE .
쐽
ColdFusion stellt keine Seiten in den Cache, die von anderen als den URL-Parametern abhängig sind.
쐽
Um CFCACHE in Kombination mit Secure Sockets Layer (SSL) zu verwenden, geben Sie PROTOCOL="http://" an. Falls Sie SSL benötigen, sollten Sie den ColdFusion-Server als DesktopApplikation ausführen. Beachten Sie jedoch, dass Allaire dringend emfpiehlt, ColdFusion Server als Dienst auszuführen. Weitere Informationen zu SSL finden Sie im Artikel #1096 der Knowledge Base unter http://www.allaire.com/Support/KnowledgeBase/ SearchForm.cfm.
쐽
Falls eine Template aus irgendeinem Grund einen Fehler zurückgibt, wird die Fehlerseite in den Cache gestellt.
587
ColdFusion-Tags
Example – cfcache
CFCOLLECTION
CFCOLLECTION
591
ColdFusion-Tags
Beispiel für CFCONTENT
Beispiel für CFCONTENT
593
ColdFusion-Tags
CFCONTENT Example 2
Beispiel 2 für CFCONTENT
Dieses Beispiel zeigt, wie das Reset-Attribut die Ausgabe für Text ändert.
RESET = "Yes ": 123456
Dieses Beispiel zeigt, wie das Reset-Attribut die Ausgabe für Text ändert.
RESET = "No ": 123456
Der letzte AOL-Besucher auf dieser Site war #Cookie.LastAOLVisitor#, am #DateFormat(COOKIE.TimeVisited)#
Beispiel für CFDIRECTORY
Beispiel für CFDIRECTORY
599
ColdFusion-Tags
B.27 CFERROR Bietet die Möglichkeit, benutzerdefinierte HTML-Seiten anzuzeigen, wenn Fehler auftreten. Auf diese Weise realisieren Sie ein konsistentes Look&Feel für Ihre Applikation, selbst wenn Fehler auftreten.
Syntax
TYPE Zwingend erforderlich. Der Fehlertyp, den diese benutzerdefinierte Fehlerseite verarbeiten soll: 쐽
Geben Sie EXCEPTION an, wenn Ausnahmen verarbeitet werden sollen.
쐽
Geben Sie VALIDATION an, wenn Fehler verarbeitet werden sollen, die beim Übersenden eines Formulars für die Dateneingabe entstehen. Eine Verarbeitungsroutine für Validierungsfehler ist nur dann sinnvoll, wenn sie in der Datei Application.cfm platziert wird.
쐽
Geben Sie MONITOR an, um eine Ausnahmeüberwachung einzurichten.
쐽
Geben Sie REQUEST an, um Fehler zu verarbeiten, die während der Verarbeitung einer Seite auftreten. Der Standardwert ist REQUEST.
Weitere Informationen zu Variablen und anderen Konstrukten in Templates, mit denen die verschiedenen Fehlertypen verarbeitet werden können, finden Sie unter CFERROR-Fehlerseitenvariablen. TEMPLATE Zwingend erforderlich. Der relative Pfad zu der benutzerdefinierten Fehlerverarbeitungsseite. Die folgende Tabelle beschreibt die Templates, die für die verschiedenen Fehlertypen verwendet werden.
600
CFERROR
Fehlertyp
Entsprechende benutzerdefinierte Fehlerseite
Exception
Ein Template zur Ausnahmeverarbeitung, das vom CFML-Sprachprozessor dynamisch aufgerufen wird, wenn er eine nicht verarbeitete Ausnahmebedingung erkennt. Templates zur Ausnahmeverarbeitung können als Teil einer Applikation oder über das Tag l angegeben oder über den ColdFusion Administrator gesetzt werden. Ein Template für die Ausnahmeverarbeitung kann den vollen Umfang der CFML-Tags verwenden. Deshalb stellt es ein leistungsfähigeres Werkzeug als dar. Dieses Template verfügt außerdem über Zugriff auf die Fehlervariablen in der Tabelle unter CFERROR-Fehlerseitenvariablen.
Request
Dieses Template enthält nur die Fehlervariablen, die in der Tabelle unter CFERROR-Fehlerseitenvariablen beschrieben sind. Es darf keine CFML-Tags enthalten. Es ist praktisch für Backup-Fehlerverarbeitungsroutinen bei Sites mit hohen Anforderungen an die Benutzerschnittstelle.
Validation
Eine Verarbeitungsroutine für Validierungsfehler. Sie verarbeitet Fehler bei der Dateneingabevalidierung, die auftreten, wenn ein Formular übertragen wird. Sie ist nur dann sinnvoll, wenn sie in der Datei Application.cfm platziert wird.
Monitor
Ein Template für die Ausnahmeüberwachtung wird dynamisch durch den CFML-Sprachprozessor aufgerufen, wenn er erstmals eine Ausnahmebedingung erkennt, und zwar bevor er nach /- oder -Verarbeitungsroutinen für die Ausnahmeverarbeitung sucht.
MAILTO Optional. Die E-Mail-Adresse des Administrators, der im Fehlerfall benachrichtigt werden soll. Dieser Wert steht für Ihre benutzerdefinierte Fehlerseite zur Verfügung, die die Mail-To-Eigenschaft des Fehlerobjekts verwendet, wie beispielsweise #Error.MailTo#. EXCEPTION Erforderlich, wenn der Fehlertyp als Exception oder Monitor angegeben wurde. Der Typ der Ausnahme.
Verwendung Das CFERROR-Tag wird normalerweise verwendet, um die Fehlermeldungen für alle Seiten einer Applikation anzupassen. Deshalb trägt man es in der Regel in die Datei Application.cfm ein. Um sicherzustellen, dass die Fehlerseiten korrekt angezeigt werden, sollten die mit CFERROR festgelegten Seiten nicht mit dem Dienstprogramm cfencode verschlüsselt werden.
601
ColdFusion-Tags
CFERROR-Fehlervariablen Das im TEMPLATE-Attribut des CFERROR-Tags angegebene Template für die Fehlerverarbeitung kann ein oder mehr Fehlervariablen enthalten, die von ColdFusion ersetzt werden, wenn ein Fehler anezeigt wird.
Fehlervariablen für die Fehlertypen Request, Exception und Monitor Die folgenden Fehlervariablen stehen zur Verfügung, wenn in CFERROR eines der Attribute TYPE="Request", TYPE="Exception" oder TYPE="Monitor" angegeben ist: Variablen für die Fehlertypen Request, Exception und Monitor Fehlervariable
Beschreibung
Error.Diagnostics
Detaillierte Fehlerdiagnose vom ColdFusion-Server.
Error.MailTo
E-Mail-Adresse des Administrators, der benachrichtigt werden soll (entspricht dem im MAILTO-Attribut von CFERROR gesetzten Wert).
Error.DateTime
Datum und Uhrzeit, wann der Fehler aufgetreten ist.
Error.Browser
Browser, der ausgeführt wurde, als der Fehler aufgetreten ist.
Error.GeneratedContent
Der erzeugte Inhalt der fehlgeschlagenen Anforderung.
Error.RemoteAddress
IP-Adresse des Remote-Clients.
Error.HTTPReferer
Seite, von der aus der Client auf die Verknüpfung zu der Seite zugriff, in der der Fehler auftrat.
Error.Template
Seite, die ausgeführt wurde, als der Fehler auftrat.
Error.QueryString
URL-Abfragezeichenkette der Client-Anfrage.
Hinweis Falls Sie TYPE="Exception" oder TYPE="Monitor" angegeben haben, können Sie statt Error das Präfix CFERROR verwenden, wenn Sie diese Notationsform bevorzugen, beispielsweise CFERROR. Diagnostics, CFERROR.Mailto oder CFERROR.DateTime.
Benutzerdefinierte Fehlerseiten mit TYPE="Validation" Folgende Fehlervariablen stehen zur Verfügung, wenn CFERROR TYPE="Validation" verwendet wird:
602
CFERROR
Fehlervariable
Beschreibung
Error.ValidationHeader
Text für die Kopfzeile der Validierungsmeldung.
Error.InvalidFields
Unsortierte Liste von aufgetretenen Validierungsfehlern.
Error.ValidationFooter
Text für die Fußzeile der Validierungsmeldung.
Beispiel
B.28 CFEXECUTE Ermöglicht ColdFusion-Entwicklern, beliebige Prozesse auf der Server-Maschine auszuführen.
Syntax
...
NAME Zwingend erforderlich. Der vollständige Pfadname der auszuführenden Applikation. Hinweis: Auf Windows-Systemen müssen Sie die Dateinamenerweiterung als Teil des Applikationsnamens angeben, beispielsweise .exe. ARGUMENTS Optional. Beliebige Befehlszeilenargumente, die dem Programm übergeben werden sollen. Falls ARGUMENTS als Zeichenkette übergeben wird, wird es wie folgt verarbeitet: 쐽
Auf Windows-Systemen wird die gesamte Zeichenkette der Windows-Prozesssteuerung zur Syntaxanalyse übergeben.
쐽
Auf UNIX-Systemen wird die Zeichenkette in ein Datenfeld mit Argumenten zerlegt. Das Standardtrennzeichen für die einzelnen Token ist das Leerzeichen; Argumente mit eingebetteten Leerzeichen können durch Anführungszeichen voneinander abgetrennt werden.
Falls ARGUMENTS als Datenfeld übergeben wird, wird es wie folgt verarbeitet: 쐽
604
Auf Windows-Systemen werden die Elemente des Datenfelds zu einer Zeichenkette aus Token verknüpft, die durch Leerzeichen voneinander getrennt werden. Diese Zeichenkette wird dann der Windows-Prozesssteuerung übergeben, wie oben bereits beschrieben.
CFEXECUTE
쐽
Auf UNIX-Systemen werden die Elemente des Datenfelds ARGUMENTS in ein entsprechendes Datenfeld von exec() Argumenten kopiert.
OUTPUTFILE Optional. Die Datei, in die die Ausgabe des Programms umgeleitet werden soll. Wird keine Datei angegeben, erscheint die Ausgabe auf der Seite, von der aus sie angefordert wurde. TIMEOUT Optional. Gibt an, wie viele Sekunden der Ausführungs-Thread von ColdFusion auf den angestossenen Prozess wartet. Die Angabe eines Timeout-Werts von 0 ist gleichbedeutend mit dem nicht-blockierenden Ausführungsmodus. Der Standardwert ist 0; der ColdFusion-Thread stösst also einen Prozess an und kehrt sofort zurück, ohne auf die Abarbeitung des Prozesses zu warten. Falls keine Ausgabedatei angegeben wurde und der Timeout-Wert gleich 0 ist, wird die Ausgabe des Programms in den Bit-Originalspeicherbereich umgeleitet.
Verwendung CFEXECUTE steht auf Windows NT 4.0- und UNIX-Plattformen zur Verfügung. Fügen Sie zwischen die CFEXECUTE-Tags keine anderen ColdFusion-Tags oder -Funktionen ein. CFECEXUTE-Tags können nicht verschachtelt werden.
Ausnahmen CFEXECUTE fängt die folgenden Ausnahmen ab: 쐽
Falls der Applikationsname nicht gefunden wird, wird die Ausnahme »Application File Not Found« gemeldet.
쐽
Falls die Ausgabedatei nicht geöffnet werden kann, wird die Ausnahme »Output File Cannot be opened« gemeldet.
쐽
Falls der tatsächliche Benutzer des aktuell ausgeführten ColdFusion-Threads keine Berechtigung zur Ausführung des Prozesses besitzt, wird eine Sicherheitsausnahme gemeldet.
쐽
Die Timeout-Werte müssen zwischen 0 und einer beliebigen höheren Zahl liegen.
Beispiel
Beispiel für CFEXIT
Beispiel für CFEXIT
CFEXIT kann für den Abbruch der Verarbeitung des aktuell ausgeführten benutzerdefinierten CFML-Tags verwendet werden. Die Ausführung wird unmittelbar nach dem Aufruf des benutzerdefinierten Tags auf der Seite fortgesetzt, auf der das Tag aufgerufen wurde. Verwendung von CFEXIT
CFEXIT wird hauptsächlich verwendet, um einen bedingten Abbruch der Verarbeitung in einem benutzerdefinierten Tag vorzunehmen. CFEXIT gibt die Steuerung an die Seite zurück, die das benutzerdefinierte Tag aufgerufen hat, oder falls ein Tag von einem anderen Tag aufgerufen wurde, an das aufrufende Tag.
Falls CFEXIT außerhalb eines benutzerdefinierten Tags verwendet wird, verhält es sich wie CFABORT. Beispielsweise wird der Text nach diesem Tag nicht verarbeitet:
Dieser Text wird nicht ausgeführt, weil davor das CFEXIT-Tag steht.
B.30 CFFILE Mit dem CFILE-Tag können Sie die gesamte Interaktion mit Dateien abwickeln. Die mit CFILE verwendbaren Attribute sind von dem Wert des ACTION-Attributs abhängig. Ist z.B. ACTION = "Write", erwartet ColdFusion die Attribute, die man normalerweise mit dem Schreiben einer Textdatei in Verbindung bringt. Weitere Informationen dazu, welche Attribute für welche ACTIONs gelten, entnehmen Sie bitte den einzelnen CFFILE-Hilfethemen.
608
CFFILE
Hinweis Die im ColdFusion-Server vorgenommenen Einstellungen zur Basissicherheit verhindern möglicherweise, dass CFFILE ausgeführt wird. Diese Einstellungen werden im ColdFusion-Administrator auf der Seite BASISSICHERHEIT verwaltet. Damit das CFFILE-Tag verarbeitet werden kann, muss es auf der Administratorseite BASISSICHERHEIT aktiviert werden. Falls Sie ColdFusion-Anwendungen entwickeln, die für die Ausführung auf einem von mehreren Kunden genutzten Server ausgelegt sind, müssen Sie auf die Sicherheit der Dateien achten, die durch CFFILE hochgeladen oder auf andere Weise manipuliert werden könnten.
CFFILE-Hilfethemen 쐽
CFFILEACTION="Upload"
쐽
CFFILEACTION="Move"
쐽
CFFILEACTION="Rename"
쐽
CFFILEACTION="Copy"
쐽
CFFILEACTION="Delete"
쐽
CFFILEACTION="Read"
쐽
CFFILEACTION="ReadBinary"
쐽
CFFILEACTION="Write"
쐽
CFFILEACTION="Append"
CFFILE ACTION-Attribute Abhängig von dem Wert, den Sie dem ACTION-Attribut von CFFILE zuweisen, gibt es weitere untergeordnete Attribute, die Sie einstellen können. In der nachfolgenden Tabelle wird gezeigt, welche Attribute Sie mit jeder CFFILE-Aktion verwenden können. CFFILE ACTION
Attribute
Upload
ACCEPT DESTINATION FILEFIELD NAMECONFLICT MODE ATTRIBUTES
Move
SOURCE DESTINATION ATTRIBUTES
609
ColdFusion-Tags
CFFILE ACTION
Attribute
Rename
SOURCE DESTINATION ATTRIBUTES
Copy
SOURCE DESTINATION ATTRIBUTES
Delete
FILE
Read
FILE VARIABLE
ReadBinary
FILE VARIABLE
Write
OUTPUT FILE MODE ADDNEWLINE ATTRIBUTES
Append
OUTPUT FILE MODE ADDNEWLINE ATTRIBUTES
CFFILE ACTION="Upload" Verwenden Sie CFFILE mit der Upload-Aktion, um eine in einem Formularfeld angegebene Datei in ein Verzeichnis auf dem Web-Server hochzuladen.
Hinweis: Das MODE-Attribut gilt nur für ColdFusion unter Solaris und HP-UX
Syntax
610
CFFILE
FILEFIELD Zwingend erforderlich. Der Name des Formularfelds, das zum Auswählen der Datei verwendet wurde. Aber Vorsicht: Verwenden Sie keine Doppelkreuze (#) für die Angabe des Feldnamens. DESTINATION Zwingend erforderlich. Der vollständige Pfad zu dem Zielverzeichnis auf dem Web-Server, auf dem die Datei gespeichert werden soll. Beim Datei-Upload muss an das Zielverzeichnis ein abschließender Schrägstrich angefügt werden. Verwenden Sie dazu unter Windows den umgekehrten Schrägstrich (\) und unter UNIX den normalen Schrägstrich (/). Das Verzeichnis muss nicht unbedingt im Stammverzeichnis des Web-Server-Dokumentverzeichnisses liegen. NAMECONFLICT Optional. Der Standardwert ist Error. Gibt an, wie die Datei behandelt werden soll, wenn ein Namenskonflikt auftritt (es wurde ein Name für eine Datei angegeben, die bereits im Verzeichnis vorhanden ist). Erlaubte Einträge sind: 쐽
Error – Standardwert. Die Datei wird nicht gespeichert. ColdFusion bricht die Verarbeitung der Seite ab und gibt einen Fehler zurück.
쐽
Skip – Die Datei wird weder gespeichert, noch wird ein Fehler ausgegeben. Mit dieser Einstellung kann ein benutzerdefiniertes Verhalten basierend auf einer Prüfung der FILE-Eigenschaften zugelassen werden.
쐽
Overwrite – Ersetzt eine bereits existierende Datei, wenn sie denselben Namen wie das CFFILEZiel verwendet.
쐽
MakeUnique – Erzeugt automatisch einen eindeutigen Dateinamen für den Upload. Dieser Name wird in der FILE-Objektvariablen ServerFile gespeichert. Sie können diese Variable verwenden, um den Namen aufzuzeichnen, der beim Speichern der Datei verwendet wurde.
ACCEPT Optional. Verwenden Sie ACCEPT, um einzuschränken, welche Dateitypen akzeptiert werden. Geben Sie einen bzw. mehrere durch Kommas voneinander getrennte MIME-Typen der Dateitypen ein, die Sie akzeptieren möchten. Um z.B. Uploads von GIF- und Microsoft Word-Dateien zuzulassen, geben Sie folgendes ein: ACCEPT="image/gif, application/msword"
Beachten Sie, dass der Browser den Dateityp anhand der Dateinamenerweiterung bestimmt. MODE Optional. Definiert Berechtigungen für eine hochgeladene Datei unter Solaris oder HP-UX. Wird unter Windows ignoriert. Gültige Einträge entsprechen den Oktalwerten (nicht symbolisch) des UNIX-Befehls chmod. Berechtigungen werden für Eigentümer, Gruppe bzw. Alle anderen zugewiesen. Beispiel: MODE=644
weist dem Eigentümer Lese-/Schreibberechtigungen und Gruppe/Alle anderen Leseberechtigungen zu. MODE=666
611
ColdFusion-Tags
Weist Lese-/Schreibberechtigungen für Eigentümer, Gruppe und Alle anderen zu. MODE=777
Weist allen Benutzern Lese-, Schreib- und Ausführungsberechtigungen zu. ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die hochzuladende Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Falls ATTRIBUTES nicht verwendet wird, werden die Attribute der Datei beibehalten. Werden Normal sowie ein beliebiges anderes Attribut angegeben, setzt dieses andere Attribut Normal außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Mit dem folgenden Beispiel wird ein eindeutiger Dateiname erstellt, wenn beim Hochladen der Datei unter Windows ein Namenskonflikt auftritt:
Hinweis Unter Windows müssen Sie nach dem Zielverzeichnisnamen einen umgekehrten Schrägstrich (\) einfügen. Unter UNIX müssen Sie am Ende des Zielverzeichnisnamens einen normalen Schrägstrich (/) einfügen. In diesem Beispiel ist das Zielverzeichnis »uploads«.
Ergebnisse eines Datei-Uploads auswerten Nachdem ein Datei-Upload abgeschlossen ist, können Sie mit Hilfe von Datei-Upload-Parametern Statusinformationen abrufen. Diese Statusinformationen enthalten eine Vielzahl von Informationen über die Datei, z.B. den Namen der Datei und das Verzeichnis, in dem sie abgelegt wurde. Datei-
612
CFFILE
Upload-Parameter verwenden das Präfix »File«, z.B. File.ClientDirectory. Die Dateistatus-Parameter können Sie überall dort verwenden, wo auch die Verwendung anderer ColdFusion-Parameter zulässig ist. Nach einem Upload stehen die folgenden Datei-Upload-Statusparameter zur Verfügung. Parameter
Beschreibung
AttemptedServerFile
Name, unter dem ColdFusion als erstes versucht hat, die Datei zu speichern, z.B. MeineDatei.txt.
ClientDirectory
Verzeichnisposition der aus dem Client-System hochgeladenen Datei.
ClientFile
Name der Datei, die aus dem Client-System hochgeladen wurde.
ClientFileExt
Dateinamenerweiterungen der Upload-Datei auf dem Client-System ohne Punkt, z.B. txt, nicht .txt.
ClientFileName
Dateiname der Upload-Datei aus dem Client-System ohne Dateinamenerweiterung.
ContentSubType
Untergeordneter Typ des MIME-Inhalts der gespeicherten Datei.
ContentType
Typ des MIME-Inhalts der gespeicherten Datei.
DateLastAccessed
Datum und Uhrzeit des letzten Zugriffs auf die Upload-Datei.
FileExisted
Gibt an (Yes oder No), ob die Datei bereits mit dem gleichen Pfad vorhanden war.
FileSize
Größe der Upload-Datei.
FileWasAppended
Gibt an (Yes oder No), ob ColdFusion die Upload-Datei an eine bestehende Datei angefügt hat.
FileWasOverwritten
Gibt an (Yes oder No), ob ColdFusion eine Datei überschrieben hat.
FileWasRenamed
Gibt an (Yes oder No), ob die Upload-Datei umbenannt wurde, um einen Namenskonflikt zu vermeiden.
FileWasSaved
Gibt an (mit Yes oder No), ob ColdFusion eine Datei gespeichert hat.
OldFileSize
Größe einer Datei, die während des Datei-Uploads überschrieben wurde.
ServerDirectory
Verzeichnis der Datei, die tatsächlich auf dem Server gespeichert ist.
ServerFile
Dateiname der Datei, die tatsächlich auf dem Server gespeichert ist.
ServerFileExt
Dateinamenerweiterung der Upload-Datei auf dem Server ohne Punkt, z.B. txt, nicht .txt.
ServerFileName
Dateiname der Upload-Datei auf dem Server ohne Erweiterung.
TimeCreated
Zeitpunkt der Erstellung der Upload-Datei.
TimeLastModified
Datum und Uhrzeit der letzten Bearbeitung der Upload-Datei.
613
ColdFusion-Tags
Tipp Verwenden Sie das Präfix »File«, um auf die obengenannten Variablen zu verweisen. Beispiel: #File.FileExisted#.
Hinweis Datei-Statusvariablen sind schreibgeschützt. Sie werden auf die Ergebnisse des aktuellen CFFILE-Vorgangs gesetzt. (Wenn zwei CFFILE-Tags ausgeführt werden, setzt eine nachfolgende CFFILE-Operation die Ergebnisse der ersten Operation außer Kraft.)
UNIX-Beispiele In den folgenden drei Beispielen wird die Verwendung des MODE-Attributs unter UNIX demonstriert. Das erste Beispiel erstellt die Datei /tmp/foo mit den Berechtigungen rw-r-r-- (owner=read/write, group/other=read).
In diesem Beispiel wird Text an die vorgegebene Datei angehängt und Lese-/Schreibberechtigungen (rw) für alle gesetzt.
Das nächste Beispiel führt den Upload einer Datei durch und erteilt die Berechtigungen rwx-rw-rw (owner/group/other=read/write). CFFILE ACTION="Upload" FILEFIELD="Feldname" DESTINATION="/tmp/programm.exe" MODE=755>
CFFILE ACTION="Move" Diese CFFILE-Aktion kann verwendet werden, um eine Datei von einer Speicherposition auf dem Server zu einer anderen zu verschieben. Syntax
614
CFFILE
SOURCE Zwingend erforderlich. Der vollständige Pfad zu der zu verschiebenden Datei. DESTINATION Zwingend erforderlich. Der vollständige Pfad zu dem Verzeichnis, in das die Datei verschoben wird. Wenn Sie keinen Dateinamen angeben, muss beim Verschieben einer Datei ein Schrägstrich an das Ende des Zielverzeichnisses angehängt werden. Verwenden Sie dazu unter Windows den umgekehrten Schrägstrich (\) und unter UNIX den normalen Schrägstrich (/). ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die verschobene Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Wird ATTRIBUTES nicht verwendet, werden die Attribute der Datei beibehalten. Werden »Normal« und ein beliebiges anderes Attribut angegeben, setzt dieses andere Attribut »Normal« außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Das folgende Beispiel verschiebt unter Windows die Datei wichtigesMemo.doc vom Verzeichnis c:\dateien\upload\ in das Verzeichnis c:\dateien\memo\:
Hinweis Unter Windows müssen Sie, falls Sie keinen Dateinamen angeben, nach dem Zielverzeichnisnamen einen umgekehrten Schrägstrich (\) einfügen. In diesem Beispiel ist das angegebene Zielverzeichnis »memo«.
615
ColdFusion-Tags
CFFILE ACTION="Rename" Verwenden Sie CFFILE mit der Rename-Aktion, um eine Datei umzubenennen, die bereits auf dem Server vorhanden ist.
Syntax
SOURCE Zwingend erforderlich. Der vollständige Pfad zu der Datei, die umbenannt werden soll. DESTINATION Zwingend erforderlich. Der vollständige Pfad zu der Datei, einschließlich ihres neuen Namens. ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die umzubenennende Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Falls ATTRIBUTES nicht verwendet wird, werden die Attribute der Datei beibehalten. Wenn Normal und ein beliebiges anderes Attribut angegeben werden, setzt dieses andere Attribut Normal außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Das folgende Beispiel nennt die Datei wichtigesMemo.doc in altesMemo.doc um:
616
CFFILE
CFFILE ACTION="Copy" Das CFFILE-Tag kann zum Kopieren einer Datei von einem Verzeichnis auf dem Server in ein anderes verwendet werden.
Syntax
SOURCE Zwingend erforderlich. Der vollständige Pfad zu der Datei, die kopiert werden soll. DESTINATION Zwingend erforderlich. Der vollständige Pfad zu dem Zielverzeichnis, in dem die Kopie der Datei abgelegt werden soll. Falls Sie keinen Dateinamen angeben, müssen Sie nach dem Zielverzeichnisnamen einen Schrägstrich einfügen. Verwenden Sie dazu unter Windows einen umgekehrten Schrägstrich (\). Verwenden Sie unter UNIX den normalen Schrägstrich (/). ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die zu kopierenden Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Falls ATTRIBUTES nicht verwendet wird, werden die Attribute der Datei beibehalten. Wenn Normal und ein beliebiges anderes Attribut angegeben werden, setzt dieses andere Attribut Normal außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Das folgende Beispiel speichert eine Kopie der Datei wichtigesMemo.doc im Verzeichnis c:\dateien\backup\:
617
ColdFusion-Tags
Hinweis Unter Windows müssen Sie, falls Sie keinen Dateinamen angeben, nach dem Zielverzeichnisnamen einen umgekehrten Schrägstrich (\) einfügen. In diesem Beispiel ist das angegebene Zielverzeichnis »backup«.
CFFILE ACTION="Delete" Das CFFILE-Tag kann dazu verwendet werden, eine Datei auf dem Server zu löschen.
Syntax
FILE Zwingend erforderlich. Der vollständige Pfad zu der Datei, die gelöscht werden soll.
Beispiel Im folgenden Beispiel wird die angegebene Datei permanent gelöscht:
CFFILE ACTION="Read" Sie können das CFFILE-Tag dazu verwenden, eine existierende Textdatei zu lesen. Die Datei wird in einen dynamischen Parameter eingelesen, den Sie dann an einer beliebigen Stelle auf der Anwendungsseite verwenden können. Sie könnten z.B. eine Textdatei einlesen und ihren Inhalt in eine Datenbank einfügen. Oder Sie lesen eine Textdatei und ändern den Inhalt mit Hilfe von Suchen&Ersetzen.
Syntax
FILE Zwingend erforderlich. Der vollständige Pfad zu der Textdatei, die gelesen werden soll.
618
CFFILE
VARIABLE Zwingend erforderlich. Der Name der Variablen, die den Inhalt der Textdatei enthält, nachdem sie eingelesen wurde.
Beispiel Im folgenden Beispiel wird eine Variable mit der Bezeichnung Nachricht erstellt, die den Inhalt der Datei nachricht.txt enthält.
Die Variable Nachricht kann auf der Anwendungsseite verwendet werden. So können Sie z.B. den Inhalt der Datei Nachricht.txt auf der fertigen Web-Seite anzeigen: #Nachricht#
ColdFusion unterstützt verschiedene leistungsfähige Funktionen zur Veränderung des Inhalts von Textdateien. Außerdem können Sie eine von einem CFFILE="Read" erstellte Variable in ArrayToListund ListToArray-Funktionen verwenden. In den Abschnitten Zeichenkettenfunktionen und Datenfeldfunktionen finden Sie weitere Informationen über die Verwendung von Zeichenketten und Datenfeldern.
CFFILE ACTION="ReadBinary" Mit Hilfe des CFFILE-Tags können Sie eine existierende Binärdatei, wie beispielsweise eine ausführbare Datei oder eine Grafikdatei, einlesen. Die Datei wird in einen binären Objektparameter eingelesen, den Sie auf der Seite wie jeden anderen Parameter an beliebiger Stelle verwenden können. Falls Sie diese Datei mit Hilfe eines der Web-Protokolle wie HTTP oder SMTP übertragen oder in einer Datenbank ablegen wollen, sollten Sie sie zuerst in Base 64 konvertieren (siehe ToBase64).
Syntax
FILE Zwingend erforderlich. Der vollständige Pfad zu der Datei, die eingelesen werden soll. VARIABLE Zwingend erforderlich. Der Name der Variable, die den Inhalt der Binärdatei aufnehmen soll, nachdem diese eingelesen wurde.
619
ColdFusion-Tags
Beispiel Im folgenden Beispiel wird eine Variable mit der Bezeichnung einBinaerObj erstellt, die den Inhalt der ausführbaren Datei in ColdFusion Server enthält.
Anschließend können Sie die Binärdatei in Base 64 konvertieren, so dass Sie sie mit Hilfe von FTP zum Upload auf eine andere Site übertragen können.
CFFILE ACTION="Write" Sie können das CFFILE-Tag verwenden, um dynamischem Inhalt in eine Textdatei zu schreiben. Sie könnten beispielsweise statische HTML-Dateien oder Protokollaktionen in einer Textdatei erstellen.
Syntax
FILE Zwingend erforderlich. Der vollständige Pfad zu der Datei, die erzeugt werden soll. OUTPUT Zwingend erforderlich. Der Inhalt der zu erstellenden Datei. MODE Optional. Definiert Berechtigungen für eine Datei unter Solaris oder HP-UX. Wird unter Windows ignoriert. Gültige Einträge entsprechen den Oktalwerten (nicht symbolisch) des Unix-Befehls chmod. Berechtigungen werden für Eigentümer, Gruppe bzw. Alle anderen zugewiesen. Beispiel: MODE=644
weist dem Eigentümer Lese-/Schreibberechtigungen und Gruppe/Alle anderen Leseberechtigung zu. MODE=666
Weist Lese-/Schreibberechtigung für Eigentümer, Gruppe und Alle anderen zu. MODE=777
Weist allen Benutzern Lese-, Schreib- und Ausführungsberechtigung zu.
620
CFFILE
ADDNEWLINE Optional. Yes oder No. Wird dieses Attribut auf Yes gesetzt, wird dem Text, der in die Datei geschrieben wird, ein Neue-Zeile-Zeichen (NL) hinzugefügt. Wird dieses Attribut auf No gesetzt, wird dem Text kein Neue-Zeile-Zeichen (NL) hinzugefügt. Der voreingestellte Wert ist Yes. ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die zu schreibende Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Wird ATTRIBUTES nicht verwendet, werden die Attribute der Datei beibehalten. Wenn »Normal« und ein beliebiges anderes Attribut angegeben werden, setzt dieses andere Attribut »Normal« außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Im folgenden Beispiel wird eine Datei mit den Informationen erstellt, die ein Benutzer in ein HTML-Einfügeformular eingegeben hat:
Angenommen, ein Benutzer übermittelt ein Formular, in dem folgende Angaben stehen: AktualisierungsTitel="Messebesuch" VollerName="Gerry Blue" Datum="30.10.98" Inhalt="Wir hatten eine wunderbare Zeit in Heidelberg."
ColdFusion erstellt die Datei Messebesuch.txt im Verzeichnis c:\dateien\updates\. Die Datei enthält den folgenden Text: Erstellt von: Gerry Blue Datum: 30.10.98 Wir hatten eine wunderbare Zeit in Heidelberg.
In den folgenden Beispielen wird die Verwendung des MODE-Attributs unter UNIX demonstriert. Im ersten Beispiel wird die Datei /tmp/foo mit den Berechtigungen rw-r--r-- (owner=read/write, group/other=read) erstellt
621
ColdFusion-Tags
In diesem Beispiel wird Text an die angegebene Datei angehängt und Lese-/Schreibberechtigungen (rw) für alle gesetzt.
Das nächste Beispiel lädt eine Datei hoch und erteilt die Berechtigungen rwx-rw-rw (owner/group/ other=read/write). CFFILE ACTION="Upload" FILEFIELD="Feldname" DESTINATION="/tmp/programm.exe" MODE=755>
CFFILE ACTION="Append" Das CFFILE-Tag mit der Append-Aktion kann dazu verwendet werden, Text am Ende einer bereits existierenden Textdatei einzufügen. Dies ist beispielsweise praktisch beim Erstellen von Protokolldateien.
Syntax
FILE Zwingend erforderlich. Der vollständige Pfad zu der Datei, an die der Inhalt des OUTPUT-Attributs angehängt wird. OUTPUT Zwingend erforderlich. Die an die im DESTINATION-Attribut angegebene Datei anzufügende Zeichenkette. ADDNEWLINE Optional. Yes oder No. Wird dieses Attribut auf Yes gesetzt, wird an den Text, der in die Datei geschrieben wird, ein Neue-Zeile-Zeichen (NL) angefügt. Wird dieses Attribut auf No gesetzt, wird dem Text kein Neue-Zeile-Zeichen (NL) hinzugefügt. Der voreingestellte Wert ist Yes.
622
CFFORM
ATTRIBUTES Optional. Eine Liste der durch Kommas voneinander getrennten Dateiattribute, die für die anzufügende Datei gesetzt werden. Die folgenden Dateiattribute werden unterstützt: 쐽
ReadOnly
쐽
Temporary
쐽
Archive
쐽
Hidden (Versteckt)
쐽
System
쐽
Normal
Wird ATTRIBUTES nicht verwendet, werden die Attribute der Datei beibehalten. Wenn »Normal« und ein beliebiges anderes Attribut angegeben werden, setzt dieses andere Attribut »Normal« außer Kraft. Einzelne Attribute müssen explizit angegeben werden. Wenn Sie beispielsweise nur das ReadOnlyAttribut angeben, werden alle anderen Attribute überschrieben.
Beispiel Im folgenden Beispiel wird die Zeichenkette »Alle Jahre wieder ohne Ende« an die Datei urlaub.txt angefügt:
B.31 CFFORM CFFORM ermöglicht es Ihnen, ein Formular mit benutzerdefinierten CFML-Steuerelement-Tags zu
erstellen, die mehr Funktionen bieten als Standard-HTML-Formulareingabeelemente.
Hinweis CFFORM bedingt, dass der Client ein Java-Applet herunterlädt. Das ist zeitaufwendig, deshalb kann die Verwendung von CFFORM etwas langsamer als die Verwendung eines einfachen HTML-Formulars sein. Darüber hinaus müssen die Browser Java-fähig sein, damit CFFORM korrekt arbeitet.
Syntax
...
NAME Optional. Der Name für das Formular, das Sie erstellen. ACTION Zwingend erforderlich. Der Name der ColdFusion-Seite, die bei der Übertragung des Formulars zur Verarbeitung ausgeführt wird. ENABLECAB Optional. Yes oder No. Ermöglicht Benutzern, die Microsoft-Installationsdateien (*.cab) herunterzuladen, die die für Java-Applet-basierte CFFORM-Steuerelemente benötigten Java-Klassen enthalten. Ist der Parameter auf Yes gesetzt, werden die Benutzer beim Öffnen der Seite gefragt, ob sie die CABDatei herunterladen möchten. ONSUBMIT Optional. JavaScript-Funktion, die nach der Rückgabe einer Eingabe-Validierung auszuführen ist. Verwenden Sie dieses Attribut, um JavaScript für die Vorverarbeitung von Daten auszuführen, bevor das Formular übermittelt wird. TARGET Optional. Der Name des Fensters oder des Fensterrahmens, an das bzw. den die Formularausgabe gesendet wird. ENCTYPE Optional. Der verwendete MIME-Typ zum Verschlüsseln von Daten, die mit der Methode POST übertragen werden. Der voreingestellte Wert ist Application/x-www-form-urlencoded. Es wird empfohlen, den voreingestellten Wert zu übernehmen. Dieses Attribut wird zur Kompatibilität mit dem HTML FORM-Tag zur Verfügung gestellt. PASSTHROUGH Optional. HTML-Attribute, die nicht explizit von CFFORM unterstützt werden. Wenn Sie ein Attribut und seinen Wert angeben, werden Attribut und Wert dem HTML-Code übergeben, der für das CFINPUT-Tag erzeugt wird. Im Abschnitt zur Verwendung des Tags finden Sie weitere Informationen zur Angabe von Werten.
Verwendung Die folgenden benutzerdefinierten Steuer-Tags stehen zur Verfügung: 쐽
624
CFINPUT – Erstellt ein Formulareingabe-Steuerelement (Optionsfeld, Textfeld oder Kontrollkästchen) und ist in der Lage, Formulareingaben zu validieren.
CFFORM
쐽
CFSELECT – Erstellt ein Dropdown-Listenfeld.
쐽
CFSLIDER – Erstellt ein Schieberegler-Steuerelement.
쐽
CFTEXTINPUT – Erstellt ein Texteingabefeld.
쐽
CFTREE – Erstellt ein Verzeichnisstruktur-Steuerelement.
쐽
CFGRID – Erstellt ein Raster-Steuerelement zum Anzeigen von Tabellendaten in einem Cold-
Fusion-Formular. 쐽
CFAPPLET – Bettet ein registriertes Java-Applet in ein ColdFusion-Formular ein. Applets werden
im ColdFusion-Administrator registriert. Mit Hilfe des PASSTHROUGH-Attributs können Sie Standardattribute und dynamische Attribute des HTML FORM-Tags und ihre Werte in das CFFORM-Tag einfügen. Diese Attribute und ihre Werte werden beim Erstellen eines Formulars über ColdFusion direkt dem Browser übergeben. Wenn Sie einen Wert in Anführungszeichen angeben, müssen Sie die Anführungszeichen maskieren, indem Sie sie verdoppeln. Beispiel: PASSTHROUGH= "readonly= " "YES " " "
Das ENABLECAB-Attribut wird nur von MS Internet Explorer-Clients unterstützt, auf denen Authenticode 2.0 installiert ist. Authenticode 2.0 kann von der Website http://www.microsoft.com/ie/ security/authent2.htm. heruntergeladen werden.
Hinweis Um die Dateisicherheit zu garantieren, werden CAB-Dateien mit Hilfe der IDs von VeriSign digital gekennzeichnet.
Verwendung von HTML FORM-Tags in einem CFFORM Mit CFFORM können Sie Ihre Formulare auch mit standardisiertem HTML-Code ergänzen. Es gibt zwei Möglichkeiten: 쐽
Sie können dem FORM-Tag standardisierte FORM-Tag-Attribute und deren Werte hinzufügen. Diese Attribute und Werte werden beim Erstellen eines Formulars über ColdFusion direkt dem Browser übergeben. Sie können z.B. FORM-Tag-Attribute wie TARGET verwenden, um Ihre CFFORMLeistungsmerkmale zu erweitern.
쐽
Darüber hinaus können HTML-Tags, die im allgemeinen in einem HTML FORM-Tag platziert werden, auch zwischen und -Tags platziert werden.
Sie verwenden beispielsweise ein Standard-HTML-INPUT-Tag, um die Schaltfläche AKTUALISIEREN in einem CFFORM zu erstellen:
B.33 CFGRID Wenn CFGRID innerhalb von CFFORM verwendet wird, kann damit ein Raster-Steuerelement in einem ColdFusion-Formular angelegt werden. Ein Raster-Steuerelement ist eine Tabelle mit Daten, die in Zeilen und Spalten gegliedert ist. CFGRID-Spaltendaten werden mit einzelnen CFGRIDCOLUMN-Tags erstellt. Weitere Informationen finden Sie in der Beschreibung der CFGRIDROW- und CFGRIDUPDATE-Tags.
Syntax
NAME Zwingend erforderlich. Ein Name für das Rasterelement.
638
CFGRID
HEIGHT Optional. Höhe des Raster-Steuerelements in Pixel. WIDTH Optional. Breite des Raster-Steuerelements in Pixel. VSPACE Optional. Vertikaler Randabstand über und unter dem Raster-Steuerelement in Pixel. HSPACE Optional. Horizontaler Randabstand links und rechts vom Raster-Steuerelement in Pixel. ALIGN Optional. Wert für die Ausrichtung. Gültige Einträge sind: Top, Left, Bottom, Baseline, Texttop, Absbottom, Middle, Absmiddle, Right. QUERY Optional. Der Name der Abfrage, die mit dem Raster-Steuerelement verknüpft ist. INSERT Optional. Yes oder No. Bei Yes können Endbenutzer neue Zeilendaten in das Raster einfügen. Standardwert No. DELETE Optional. Yes oder No. Bei Yes können Endbenutzer Zeilendaten im Raster löschen. Standardwert No. SORT Optional. Yes oder No. Bei Yes werden dem Raster-Steuerelement Sortierschaltflächen hinzugefügt. Werden diese Schaltflächen angeklickt, erfolgt eine einfache Textsortierung in der ausgewählten Spalte. Standardwert No. FONT Optional. Name der Schriftart, die für alle Spaltendaten im Raster-Steuerelement verwendet wird. FONTSIZE Optional. Schriftgrad für den Text im Raster-Steuerelement. Der Wert wird in Punkten angegeben. ITALIC Optional. Yes oder No. Yes stellt den gesamten Text des Raster-Steuerelements kursiv dar. Standardwert No. BOLD Optional. Yes oder No. Yes stellt den gesamten Text des Raster-Steuerelements fettgedruckt dar. Standardwert No.
639
ColdFusion-Tags
HREF Optional. URL, der mit dem Rasterelement oder einer Abfragespalte für ein Raster verknüpft werden soll, das aus einer Abfrage aufgefüllt wird. Falls HREF eine Abfragespalte ist, wird der angezeigte HREFWert von der Abfrage aufgefüllt. Falls HREF nicht als Abfragespalte erkannt wird, wird angenommen, dass der HREF-Text ein aktuelles HTML-HREF-Tag ist. HREFKEY Optional. Der Name einer gültigen Abfragespalte, falls das Raster eine Abfrage verwendet. Die angegebene Spalte wird zum Schlüssel, unabhängig davon, welcher Auswahlmodus für das Raster verwendet wird. TARGET Optional. Zielattribut für HREF-URL. APPENDKEY Optional. Yes oder No. In Verbindung mit HREF übergibt Yes die CFGRIDKEY-Variable zusammen mit dem Wert des ausgewählten Verzeichnisstrukturelements in dem URL an die Anwendungsseite, die im CFFORM ACTION-Attribut festgelegt ist. Standardwert Yes. HIGHLIGHTHREF Optional. Yes markiert Hyperlinks, die mit einem CFGRID verknüpft sind, mit einem HREF-Attributwert. No deaktiviert das Markieren. Standardwert Yes. ONVALIDATE Optional. Der Name einer gültigen JavaScript-Funktion, die für die Auswertung der Benutzereingabe verwendet wird. Das Formularobjekt, Eingabeobjekt und der Eingabeobjektwert werden an die angegebene Routine übergeben, die wahr zurückgibt, falls die Auswertung erfolgreich ist, und andernfalls falsch. ONERROR Optional. Der Name einer gültigen JavaScript-Funktion, die im Falle einer fehlgeschlagenen Auswertung ausgeführt werden soll. GRIDDATAALIGN Optional. Legt die Ausrichtung der Spalten im Raster mit Left, Right oder Center fest. Standardwert Left. GRIDLINES Optional. Yes oder No. Yes aktiviert eine Linie im Raster-Steuerelement, No unterdrückt Zeilen- und Spaltenlineale. Standardwert Yes. ROWHEIGHT Optional. Gibt die die Anzahl der Pixel für die Mindestzeilenhöhe für das Raster-Steuerelement an. In Kombination mit CFGRIDCOLUMN TYPE="Image" können Sie ROWHEIGHT dazu verwenden, ausreichend Platz für Grafiken einzuplanen, die in der Zeile erscheinen sollen.
640
CFGRID
ROWHEADER Optional. Yes oder No. Yes zeigt Zeilenbeschriftungen im Raster-Steuerelement an. Standardwert Yes. ROWHEADERALIGN Optional. Legt die Ausrichtung der Daten in einer Spaltenkopfzeile als Left, Right oder Center fest. Standardwert Left. ROWHEADERFONT Optional. Schriftart für die Zeilenbeschriftung. ROWHEADERFONTSIZE Optional. Schriftgrad für den Text der Zeilenbeschriftung im Raster-Steuerelement in Punkten. ROWHEADERITALIC Optional. Yes oder No. Yes stellt den Text der Zeilenbeschriftung kursiv dar. Standardwert No. ROWHEADERBOLD Optional. Yes oder No. Yes stellt den Text der Zeilenbeschriftung fettgedruckt dar. Standardwert No. ROWHEADERWIDTH Optional. Die Breite der Kopfzeilenspalte für die Zeilen in Pixel. COLHEADERS Optional. Yes oder No. Yes zeigt Spaltenkopfzeilen im Raster-Steuerelement an. Standardwert Yes. COLHEADERALIGN Optional. Legt die Ausrichtung der Daten in der Spaltenkopfzeile mit Left, Right oder Center fest. Standardwert Left. COLHEADERFONT Optional. Schriftart für die Spaltenkopfzeile im Raster-Steuerelement. COLHEADERFONTSIZE Optional. Größe der Schriftart für den Text der Spaltenkopfzeile im Raster-Steuerelement in Punkten. COLHEADERITALIC Optional. Yes oder No. Yes stellt den Text der Spaltenkopfzeile kursiv dar. Standardwert No. COLHEADERBOLD Optional. Yes oder No. Yes stellt den Text der Spaltenkopfzeile fettgedruckt dar. Standardwert No. BGCOLOR Optional. Wert für die Hintergrundfarbe des Raster-Steuerelements. Gültige Einträge sind: black, magenta, cyan, orange, darkgray, pink, gray, white, lightgray, yellow.
641
ColdFusion-Tags
Ein hexadezimaler Wert wird im folgenden Format eingegeben: BGCOLOR="##xxxxxx"
steht für 0-9 oder A-F. Verwenden Sie entweder zweimal das Doppelkreuz oder kein Doppelkreuz.
SELECTCOLOR Optional. Hintergrundfarbe für ein ausgewähltes Element. Farboptionen siehe BGCOLOR. SELECTMODE Optional. Auswahlmodus für Elemente im Raster-Steuerelement. Gültige Einträge sind: 쐽
Edit – Benutzer können Rasterdaten bearbeiten.
쐽
Single – Benutzerauswahl ist auf die ausgewählte Zelle beschränkt.
쐽
Row – Benutzerauswahl wird automatisch auf die Zeile erweitert, die die ausgewählte Zelle enthält.
쐽
Column – Benutzerauswahl wird automatisch auf die Spalte erweitert, die die ausgewählte Zelle enthält.
쐽
Browse – Benutzer können Rasterdaten nur anzeigen.
Der Standardwert ist Browse. MAXROWS Optional. Gibt die Höchstzahl an Zeilen an, die Sie im Raster anzeigen möchten. NOTSUPPORTED Optional. Der anzuzeigende Text, wenn die Seite mit einem Java-Applet-basierten CFFORM-Steuerelement von einem Browser geöffnet wird, der Java nicht unterstützt oder dessen Java-Unterstützung deaktiviert ist. Beispiel: NOTSUPPORTED=" Der Browser muß Java unterstützen, um ColdFusion-Java-Applets anzeigen zu können."
Standardmäßig wird folgende Meldung angezeigt, wenn keine benutzerdefinierte Meldung angegeben ist: Der Browser muß Java unterstützen,
um ColdFusion-Java-Applets anzeigen zu können!
PICTUREBAR Optional. Yes oder No. Bei Yes werden für die Aktionen Einfügen, Löschen und Sortieren Bildschaltflächen anstelle von Textschaltflächen verwendet. Standardwert No. INSERTBUTTON Optional. Text für die Aktionsschaltfläche EINFÜGEN. Standardwert Einfügen. DELETEBUTTON Optional. Text für die Aktionsschaltfläche LÖSCHEN. Standardwert Löschen.
642
CFGRID
SORTASCENDINGBUTTON Optional. Text für die Schaltfläche SORTIEREN. Standardwert »A -> Z«. SORTDESCENDINGBUTTON Optional. Text für die Schaltfläche SORTIEREN. Standardwert »Z
B.47 CFLDAP CFLDAP stellt eine Schnittstelle zu LDAP-Verzeichnisservern (LDAP = Lightweight Directory Access Protocol) zur Verfügung, wie beispielsweise zum Netscape Directory Server.
Syntax
SERVER Zwingend erforderlich. Host-Name (»biff.upperlip.de«) oder IP-Adresse (»192.1.2.225«) des LDAPServers.
679
ColdFusion-Tags
PORT Optional. Standardmäßiger Port ist der LDAP-Port 389. USERNAME Optional. Wenn kein Benutzername angegeben wird, ist die LDAP-Verbindung anonym. PASSWORD Optional. Kennwort für den Benutzernamen. ACTION Optional. Kennzeichnet die LDAP-Aktion. Es gibt fünf mögliche Werte: 쐽
Query – (Standard) Gibt ausschließlich LDAP-Eintragsinformationen zurück. Setzt die Attribute NAME, START, ATTRIBUTES voraus. Weitere Informationen finden Sie im Abschnitt zur Verwendung dieses Tags.
쐽
Add – Fügt dem LDAP-Server LDAP-Einträge hinzu. Setzt ATTRIBUTES voraus.
쐽
Modify – Ändert LDAP-Eingaben auf einem LDAP-Server mit Ausnahme des Attributs für den charakteristischen Namen (»DN«). Setzt DN und ATTRIBUTES voraus. Zusätzliche Steuerungsmöglichkeiten bietet das MODIFYTYPE-Attribut, das weiter unten beschrieben wird.
쐽
ModifyDN – Ändert das DN-Attribut für LDAP-Einträge auf einem LDAP-Server. Setzt DN und ATTRIBUTES voraus.
쐽
Delete – Löscht LDAP-Eingaben auf dem LDAP-Server. Setzt DN voraus.
NAME Zwingend erforderlich für ACTION="Query". Der Name, den Sie der LDAP-Abfrage zuweisen. TIMEOUT Optional. Gibt die maximale Zeit in Sekunden an, die für die LDAP-Bearbeitung benötigt wird. Der Standardwert beträgt 60 Sekunden. MAXROWS Optional. Gibt die maximale Anzahl an Eingaben für LDAP-Abfragen an. START Zwingend erforderlich für ACTION="Query". Gibt den charakteristischen Namen (»DN«) des Eintrags an, der für den Start der Suche verwendet werden soll. SCOPE Optional. Gibt den Gültigkeitsbereich der Suche aus der Eingabe an, die im Start-Attribut für ACTION="Query" festgelegt ist. Es gibt drei mögliche Werte: 쐽
OneLevel – (Standard) Durchsucht alle Einträge auf genau einer Ebene unterhalb des Eintrags, der im START-Attribut festgelegt ist.
쐽
Base – Durchsucht ausschließlich die im START-Attribut angegebene Eingabe.
680
CFLDAP
쐽
Subtree – Durchsucht den im START-Attribut festgelegten Eintrag sowie alle Einträge in allen Ebenen darunter.
ATTRIBUTES Zwingend erforderlich für ACTION="Query", "Add", "ModifyDN" und "Modify". Legt bei Abfragen die CSV-Liste der Attribute fest, die für Abfragen zurückgegeben werden soll. Für Abfragen können Sie auch das Platzhalterzeichen »*« verwenden, um alle mit dem Eintrag verknüpften Attribute zu erhalten. Darüber hinaus kann es verwendet werden, um die Liste der zu aktualisierenden Spalten für ACTION="Add" oder ACTION="Modify" anzugeben. Trennen Sie mehrere Attribute durch Semikolons, wenn sie für ACTION="Add" und ACTION="Modify" verwendet werden. Wenn Attribute für ACTION="ModifyDN" verwendet werden, leitet sie ColdFusion an den LDAP-Server ohne Syntaxüberprüfung weiter. FILTER Optional. Legt die Suchkriterien für ACTION="Query" fest. Auf Attribute wird im Formular verwiesen: »(Attribut Operator Wert)«. Beispiel: »(sn=Schmidt)«. Die Standardeinstellung ist »objectclass=*«. Wenn Sie auch das FILTERFILE-Attribut angeben, wird der Filter nicht als Filter, sondern als Suchzeichenkette betrachtet. FILTERFILE Optional. Damit legen Sie den Namen einer Filterdatei und den Namen des Strophen-Tags innerhalb dieser Datei fest, das die Spezifikation für den LDAP-Filterstring enthält. Sie können zur Identifikation der Datei entweder einen absoluten Pfadnamen oder einen einfachen Dateinamen angeben. Wenn Sie einen einfachen Dateinamen verwenden, sucht CFLDAP im LDAP-Standardverzeichnis von ColdFusion nach diesem Namen. Das LDAP-Standardverzeichnis ist C:\cfusion\ldap. Die Filterdatei muss das LDAP-Filterdateiformat aufweisen, wie es in RCF-1558 definiert ist. SORT Optional. Kennzeichnet das Attribut oder die Attribute, nach dem/denen Abfrageergebnisse sortiert werden. Trennen Sie bei Angabe mehrerer Attribute die einzelnen Attribute durch Kommas. SORTCONTROL Optional. Hiermit legen Sie fest, wie Abfrageergebnisse sortiert werden sollen. Geben Sie »nocase« ein, wenn beim Sortieren die Groß-/Kleinschreibung nicht berücksichtigt werden soll. In der Voreinstellung wird bei Sortiervorgängen die Groß-/Kleinschreibung beachtet. Sie können auch mit »asc« eine aufsteigende Sortierreihenfolge und mit »desc« eine absteigende Sortierreihenfolge festlegen. Sie können aber auch eine Kombination aus diesen Einstellungen wählen, beispielsweise »nocase« zusammen mit »asc«. Die voreingestellte Sortierreihenfolge ist aufsteigend. DN Zwingend erforderlich für ACTION="Add", "Modify", "ModifyDN" und "Delete". Legt den charakteristischen Namen (»DN«) für Aktualisierungsaktionen fest. Beispiel: »cn=Barbara Jensen, o=Herbertz GmbH, c=DE«.
681
ColdFusion-Tags
STARTROW Optional. Wird in Verbindung mit ACTION="Query" verwendet. Gibt die erste Zeile der LDAP-Abfrage an, die in die ColdFusion-Abfrage eingefügt werden soll. Die Voreinstellung ist 1. Weitere Informationen zur Verwendung des Tags finden Sie im Abschnitt zu Abfrageobjekten und Abfragevariablen. MODIFYTYPE Optional. Hiermit geben Sie an, ob ein Attribut innerhalb einer Attributliste mit mehreren Werten hinzugefügt, gelöscht oder ersetzt werden soll: 쐽
Add – Das neue Attribut wird an vorhandene Attribute angehängt.
쐽
Delete – Das angegebene Attribut wird aus der Gruppe der vorhandenen Attribute gelöscht.
쐽
Replace (Voreinstellung) – Ein vorhandenes Attribut wird durch das angegebene Attribut (oder die angegebenen Attribute) ersetzt.
Beachten Sie, dass Sie bereits vorhandene Attribute oder Attribute, die eine leere Zeichenkette als Wert haben, nicht hinzufügen können. REBIND Optional. Yes oder No. Wenn Sie REBIND auf Yes setzen, versucht CFLDAP, den an den Client zurückgegebenen Verweis auf einen anderen Server (Referral) zu verfolgen, indem es das Callback-Objekt neu bindet und die Suchanfrage über die Adresse, auf die verwiesen wird, erneut stellt. Bei dieser neuen Anfrage verwendet CFLDAP die ursprünglichen Login-Identifikationsdaten. Die Voreinstellung ist No. Dies bedeutet, dass die auf andere Server weiterverwiesenen Client-Verbindungen anonym sind. REFERRAL Optional. Legt die Anzahl der Hops fest, die beim Weiterverweisen auf andere Server (Referral) zulässig sind. Gültige Werte sind ganze Zahlen größer oder gleich Null. Wenn Sie den Wert Null angeben, blockieren Sie damit die Fähigkeit von CFLDAP, Verweisadressen zu nutzen. In diesem Fall werden auch keine Daten zurückgegeben. SECURE Optional. Gibt an, welcher der beiden Sicherheitstypen – CFSSL_BASIC oder CFSSL_CLIENT_AUTH – benutzt werden soll, und stellt zusätzliche Informationen bereit, die vom angegebenen Sicherheitstyp benötigt werden. SECURE="CFSSL_BASIC,certificate_db"
oder SECURE="CFSSL_CLIENT_AUTH,certificate_db,certificate_name, key_db,key_password"
Diese Felder haben die folgenden Werte: certificate_db: Der Name der Datenbankdatei, in der die Zertifikatinformationen abgelegt sind (in Netscape Format cert7.db). Sie können zur Identifikation der Datei entweder einen absoluten Pfadnamen oder einen einfachen Dateinamen angeben. certificate_name: Der Name des Client-Zertifikats, das an den Server übertragen werden soll.
682
CFLDAP
key_db: Schlüsseldatenbank, in der das Paar aus öffentlichem/privatem Schlüssel abgelegt ist (in Netscape Format key3.db). Sie können zur Identifikation der Datenbank entweder einen absoluten Pfadnamen oder einen einfachen Dateinamen angeben. keyword_db: Das Kennwort für den Zugriff auf die Schlüsseldatenbank. Wenn Sie für certificate_db oder keyword_db einen einfachen Dateinamen verwenden, sucht CFLDAP nach dieser Datei im LDAP-Standardverzeichnis von ColdFusion. Das LDAP-Standardverzeichnis ist C:\cfusion\ldap. Weitere Informationen über die Unterschiede zwischen den beiden Sicherheitstypen CFSSL_BASIC und CFSSL_CLIENT_AUTH finden Sie im Abschnitt zur Verwendung. SEPARATOR Optional. Legt das Trennzeichen fest, das CFLDAP benutzt, um die einzelnen Attributwerte in Attributen mit mehreren Werten gegeneinander abzugrenzen. Dieses Trennzeichen wird von den Aktionsattributen QUERY, ADD und MODIFY benutzt, und dient CFLDAP zur Ausgabe von Attributen mit mehreren Werten. Die Voreinstellung für dieses Zeichen ist das Komma (,).
Verwendung Wenn Sie das Aktionsattribut QUERY verwenden, erzeugt CFLDAP ein Abfrageobjekt, das Ihnen den Zugriff auf die Informationen in den drei Abfragevariablen erlaubt, die in der folgenden Tabelle beschrieben sind. CFLDAP-Abfragevariable
Beschreibung
Abfragename.RecordCount
Die Gesamtzahl der Datensätze, die von der Abfrage ausgegeben werden.
Abfragename.CurrentRow
Die aktuelle Zeile der Abfrage, die von CFOUTPUT verarbeitet wird.
Abfragename.ColumnList
Die Liste der Spaltennamen in der Abfrage.
Der Sicherheitstyp CFSSL_BASIC stellt V2 SSL bereit, und der Sicherheitstyp CFSSL_CLIENT_AUTH unterstützt V3 SSL. V2 SSL bietet Verschlüsselung und Server-Authentifizierung. V3 SSL bietet zusätzlich noch eine zertifikatbasierende Client-Authentifizierung. Beide Sicherheitsformen verschlüsseln die Kommunikation zwischen Client und Server, und der Server überträgt stets ein digitales Zertifikat, um zu bestätigen, dass er der richtige Server ist. Für CFSSL_BASIC müssen Sie auch die CFLDAP-Attribute USERNAME und PASSWORD angeben, um sich selbst zu authentifizieren. V2 verschlüsselt dann das Kennwort vor der Übertragung. Für CFSSL_CLIENT_AUTH schicken Sie keinen Benutzernamen und kein Kennwort. Statt dessen führen Sie die Authentifizierung anhand eines digitalen Zertifikats durch, das Sie an den Server übertragen. Obwohl CFSSL_CLIENT_AUTH eine viel höhere Sicherheit bietet, ist dieses Sicherheitsverfahren schwierig zu verwalten, da alle Clients Zertifikate benötigen und der Server in der Lage sein muss, diese zu überprüfen. Zudem müssen mit allen Zertifikaten Schlüssel verknüpft sein, und diese Schlüssel müssen durch Kennwörter geschützt werden.
683
ColdFusion-Tags
Beispiel
Beispiel für CFLOCATION
Beispiel für CFLOCATION
CFLOCATION leitet den Browser zu einer bestimmten Web-Ressource um. Normalerweise wird dieses Tag dazu verwendet, um zu einer anderen CF-Vorlage oder zu einer HTML-Datei auf demselben Server zu gelangen. Mit dem ADDTOKEN-Attribut können Sie Clientinformationen an die Zielseite senden.
Mit dem folgenden Beispielcode gelangen Sie zurück zur CFDOCS-Homepage (wenn Sie die Kommentarzeichen entfernen, werden diese Informationen im Frame angezeigt):
685
ColdFusion-Tags
TIMEOUT Zwingend erforderlich. Legt fest, wie viele Sekunden maximal auf eine exklusive Sperre gewartet wird. Wird innerhalb des angegebenen Zeitraums eine exklusive Sperre erteilt, wird die Ausführung innerhalb des Tag-Blocks fortgesetzt. Andernfalls wird die weitere Vorgehensweise vom Wert des THROWONTIMEOUT-Attributs bestimmt.
686
CFLOCK
SCOPE Optional. Legt für den Gültigkeitsbereich eine der folgenden Einstellungen fest: Application, Server, oder Session. Dieses Attribut und das NAME-Attribut schließen sich gegenseitig aus. Im Abschnitt Scope finden Sie ausführliche Informationen. NAME Optional. Gibt den Namen der Sperre an. In einem CFLOCK-Tag mit einem bestimmten Namen kann jeweils nur eine Anfrage ausgeführt werden. Deshalb kann durch die Angabe des NAME-Attributs der Zugriff auf dieselben Ressourcen von unterschiedlichen Teilen einer Anwendung heraus synchronisiert werden. Die Namen von Sperren gelten global auf einem ColdFusion-Server. Sie werden von Anwendungen und Benutzersitzungen jedoch nicht auf mehreren Servern in einer Gruppe (sogenannten Clustern) verwendet. Dieses Attribut und das SCOPE-Attribut schließen sich gegenseitig aus. Geben Sie deshalb das SCOPE-Attribut nicht zusammen mit dem NAME-Attribut im gleichen Tag an. Beachten Sie, dass der Wert des NAME-Attributs keine leere Zeichenkette sein darf. THROWONTIMEOUT Optional. Yes oder No. Legt fest, wie Timeout-Bedingungen abgewickelt werden. Bei Yes wird eine Ausnahme erstellt, die über das Timeout benachrichtigt. Bei No wird die Ausführung nach dem -Tag fortgesetzt. Standardwert Yes. TYPE Optional. ReadOnly oder Exclusive. Gibt die Art der Sperre an: Read-only-Sperre (nur Leseberechtigung) oder exklusive Sperre. Die Voreinstellung ist Exclusive. Bei einer Read-only-Sperre können mehrere Abfragen gemeinsam genutzte Daten gleichzeitig lesen. Eine exklusive Sperre erlaubt nur jeweils einer einzigen Abfrage den Lese- oder Schreibzugriff auf gemeinsam genutzte Daten (siehe folgenden Hinweis).
Hinweis Begrenzen Sie den Gültigkeitsbereich von Code, der gemeinsam genutzte Daten aktualisiert. Exklusive Sperren sind erforderlich, um die Datenintegrität dieser Aktualisierungen sicherzustellen. Sie haben jedoch einen großen Einfluß auf die Systemleistung. Bei Read-only-Sperren ist der Durchsatz höher. Bei für die Systemleistung kritischen Anwendungen sollten Sie exklusive Sperren durch Readonly-Sperren ersetzen, wo immer dies möglich ist, beispielsweise beim Lesen gemeinsam genutzter Daten.
Verwendung ColdFusion-Server ist ein Multi-Thread-Web-Applikations-Server, der mehrere Seitenanfragen gleichzeitig verarbeiten kann. Verwenden Sie CFLOCK, um sicherzustellen, dass mehrere gleichzeitig ausgeführte Anfragen nicht gemeinsam genutzte Datenstrukturen, Dateien oder CFX auf inkonsistente Weise verändern. Beachten Sie folgendes: 쐽
Durch die Verwendung von CFLOCK bei CFML-Konstrukten, die gemeinsam genutzte Daten ändern, stellen Sie sicher, dass die Änderungen nacheinander und nicht alle gleichzeitig vorgenommen werden.
687
ColdFusion-Tags
쐽
Die Verwendung von CFLOCK mit Konstrukten zur Dateiänderung sorgt dafür, dass die Aktualisierung von Dateien, die von anderen Anwendungen oder ColdFusion-Tags geöffnet sind, nicht fehlschlägt.
쐽
Wenn Sie CFLOCK bei CFX-Aufrufen verwenden, können nicht Thread-sicher implementierte CFX von ColdFusion sicher aufgerufen werden. Dies gilt normalerweise nur für CFX, die mit C++ unter Verwendung von CFAPI entwickelt wurden. Alle mit C++ entwickelten CFX, die gemeinsam genutzte (globale) Datenstrukturen enthalten und ändern, müssen Thread-sicher sein, um problemlos mit ColdFusion verwendet werden zu können. Für das Schreiben von Thread-sicheren CFX mit C++ ist allerdings ein fundiertes Wissen erforderlich. Das CFX kann mit einem benutzerdefinierten CFML-Tag-Wrapper Thread-sicher gemacht werden.
Gültigkeitsbereich Verwenden Sie das SCOPE-Attribut immer dann, wenn Sie Variablen in einem der gemeinsam genutzten Gültigkeitsbereiche anzeigen, setzen oder aktualisieren. Zum Setzen des Gültigkeitsbereichs stehen Ihnen die drei Optionen Server, Application und Session zur Verfügung. Im ColdFusion Administrator können Sie im Abschnitt SERVER auf der Seite SPERRUNGEN unterschiedliche Funktionsmerkmale des Sperrschemas nach Gültigkeitsbereichen getrennt setzen. Der folgenden Tabelle entnehmen Sie, welche Merkmale für die Bereiche Server, Application und Session verfügbar sind. Funktionsmerkmale
Server
Applikation
Sitzung
keine automatische Überprüfung oder Sperre
ja
ja
ja
vollständige Überprüfung
ja
ja
ja
automatische Lesesperre
ja
ja
ja
Single-Thread-Sitzungen
ja
Jedes Funktionsmerkmal, das Sie wählen, hat auch Nachteile. 쐽
Keine automatische Überprüfung oder Sperre. Wenn Sie dieses Optionsfeld wählen, werden keine Lese- oder Schreibzugriffe gesperrt oder auf korrekten Schutz überprüft. Sie sollten diese Option nur dann wählen, nachdem Sie eine vollständige Überprüfung durchgeführt haben und wissen, dass keine Fehler behoben werden müssen und alle Sperren programmgesteuert abgewickelt werden. Bei dieser Option ist die Systemleistung am höchsten.
쐽
Vollständige Überprüfung. Wenn Sie dieses Optionsfeld wählen, werden alle nicht gesperrten Zugriffe gefunden. Sie sollten diese Option wählen, wenn Sie im Debug-Modus arbeiten. Bei dieser Option ist die Systemleistung herabgesetzt.
쐽
Automatische Lesesperre. Wenn Sie dieses Optionsfeld wählen, werden alle Lesezugriffe gesperrt, und nicht gesperrte Schreibzugriffe lösen eine Fehlerbedingung aus. Auch diese Option setzt die Systemleistung deutlich herab.
쐽
Single-Thread-Sitzungen. Wenn Sie dieses Optionsfeld wählen, muss die gesamte Abfrage beendet sein, bevor eine andere Abfrage für die gleiche Sitzung verarbeitet werden kann. Diese
688
CFLOCK
Option kann je nach Abfragemuster Auswirkungen auf die Systemleistung haben. So kann sich z.B. die Antwortzeit erhöhen, wenn eine Anwendung mehrere Frames aufweist, die sofort aktualisiert werden können, so dass mehrere Abfragen bis zu ihrer Verarbeitung in einer Warteschlange verbringen müssen.
Deadlocks CFLOCK verwendet Synchronisierungsobjekte auf Kernel-Ebene, die beim Timeout und/oder bei
einem vorzeitigen Abbruch des zugehörigen Threads automatisch freigegeben werden. Aus diesem Grund kann ColdFusion bei der Verarbeitung eines CFLOCK-Tags nicht auf unbestimmte Zeit blockiert werden. Sehr hohe Timeout-Werte können jedoch Anfrage-Threads längere Zeit blockieren und deshalb den Durchsatz drastisch verringern. Verwenden Sie deshalb immer den geringstmöglichen Timeout-Wert. Ein anderer möglicher Grund für blockierte Abfrage-Threads ist ein inkonsistentes Verschachteln von CFLOCK-Tags sowie eine nicht durchgängige Benennung von Sperren. Wenn Sie Sperren verschachteln, müssen Ihre und alle anderen Anwendungen (CF-Templates), die auf die gesperrten Variablen zugreifen, die CFLOCK-Tags durchgängig in der gleichen Reihenfolge verschachteln. Halten sich nicht alle Anwendungen, die auf gesperrte Variablen zugreifen, an diese Konventionen, kann ein Deadlock (gegenseitige Blockierung) auftreten. Ein Deadlock ist ein Zustand, in dem es keiner Abfrage möglich ist, den gesperrten Abschnitt der Seite auszuführen. Daher werden sämtliche an den geschützten Abschnitt der Seite gerichteten Abfragen solange blockiert, bis eine Zeitüberschreitung (Timeout) auftritt. In den folgenden Tabellen werden zwei Szenarios beschrieben, die zu Deadlocks führen. Deadlock-Szenario mit zwei Benutzern Benutzer 1
Benutzer 2
Sperrt den Sitzungs-Gültigkeitsbereich.
Sperrt den Anwendungs-Gültigkeitsbereich.
Deadlock Versucht, den Anwendungs-Gültigkeitsbereich zu sperren; dieser Bereich ist jedoch bereits durch Benutzer 2 gesperrt worden.
Deadlock: Versucht, den Sitzungs-Gültigkeitsbereich zu sperren; dieser Bereich ist jedoch bereits durch Benutzer 1 gesperrt worden.
Deadlock-Szenario mit einem Benutzer Benutzer belegt den Sitzungs-Gültigkeitsbereich mit einer Lesesperre. Deadlock: Versucht, den Sitzungs-Gültigkeitsbereich mit einer exklusiven Sperre zu belegen, kann dies aber nicht tun, weil für diesen Bereich bereits eine Schreibschuz-Sperre (Read-only) festgelegt wurde.
Das folgende Deadlock-Szenario könnte eintreten, wenn Sie versuchen, eine Schreibsperre nach einer Lesesperre zu schachteln, wie im folgenden Code-Beispiel:
689
ColdFusion-Tags
...............
.........
Ist ein Deadlock einmal eingetreten, kann kein Benutzer diesen auflösen, da die Ausführung ihrer Abfragen solange blockiert bleibt, bis der Deadlock durch einen für die Sperre festgelegten Timeout aufgelöst werden kann. Sie vermeiden Deadlocks dadurch, dass Sie und alle anderen mit dem Verschachteln von Sperren beauftragten Personen dabei nach einer genau definierten Reihenfolge vorgehen und bei der Zuweisung von Namen an Sperren auf Konsistenz achten. Insbesondere müssen Sie beim Sperren des Zugriffs auf die Bereiche Server, Anwendung und Sitzung eine ganz bestimmte Reihenfolge einhalten. 1.
Sperren Sie den Sitzungsbereich. Kennzeichnen Sie im CFLOCK-Tag den Gültigkeitsbereich der Sperre, indem Sie für das SCOPE-Attribut den Wert »SESSION« angeben.
2.
Sperren Sie den Applikationsbereich. Kennzeichnen Sie im CFLOCK-Tag den Gültigkeitsbereich der Sperre, indem Sie für das SCOPE-Attribut den Wert »APPLICATION« angeben.
3.
Sperren Sie den Server-Bereich. Kennzeichnen Sie im CFLOCK-Tag den Gültigkeitsbereich der Sperre, indem Sie für das SCOPE-Attribut den Wert »SERVER« angeben.
4.
Heben Sie die Sperre des Server-Bereichs auf.
5.
Heben Sie die Sperre des Applikationsbereichs auf.
6.
Heben Sie die Sperre des Sitzungsbereichs auf.
Hinweis Sie können aus diesem Schema jedes beliebige aus Sperre aktivieren/Sperre deaktivieren zusammengesetzte Schrittpaar herausnehmen, falls die Sperre eines bestimmten Gültigkeitsbereichs nicht erforderlich ist. So können Sie beispielsweise die Schritte 3 und 4 auslassen, falls Sie den Serverbereich nicht sperren müssen. Ähnliche Regeln gelten für Sperren, denen Namen zugewiesen werden.
Beispiel
691
ColdFusion-Tags
Beispiel für CFLOCK
Beispiel für CFLOCK
Danke für Ihren Besuch im virtuellen Laden von E-Rollkragen. Heute haben Sie einen Rollkragen in der Größe #form.groesse# und in der Farbe #form.farbe# gewählt.
Der Schleifenindex lautet #ZaehlVar#.
695
ColdFusion-Tags
Die Ergebnisse werden in einem Browser wie folgt angezeigt: Der Der Der Der Der
Schleifenindex Schleifenindex Schleifenindex Schleifenindex Schleifenindex
lautet lautet lautet lautet lautet
1. 2. 3. 4. 5.
Schleife über eine Abfrage Eine Schleife über eine Abfrage wird für jeden Datensatz in der Abfragedatensatzgruppe wiederholt. Die CFLOOP-Ergebnisse sind einem CFOUTPUT ähnlich. Während jedes Durchlaufs der Schleife stehen die Spalten der aktuellen Zeile zur Ausgabe zur Verfügung. Der Vorteil von CFLOOP anstelle von CFOUTPUT liegt darin, dass Sie innerhalb eines CFLOOP-Tags jedes CFML-Tag verwenden können.
Syntax
QUERY Zwingend erforderlich. Gibt die Abfrage an, die die Schleife steuert. STARTROW Optional. Gibt die erste Zeile der Abfrage an, die in die Schleife aufgenommen wird. ENDROW Optional. Gibt die letzte Zeile der Abfrage an, die in die Schleife aufgenommen wird.
Beispiel 1 Im folgenden Beispiel wird ein CFLOOP-Tag gezeigt, das wie CFOUTPUT arbeitet und das QUERY-Attribut verwendet:
SELECT Kommentar_id FROM Kommentare
#Kommentar_ID#
696
CFLOOP
Beispiel 2 CFLOOP ermöglicht außerdem eine Wiederholung über jede Datensatzgruppe mit dynamischen Startund Stoppunkten. Sie können also beispielsweise in der zehnten Zeile eine Abfrage beginnen und an der zwanzigsten Zeile enden. Mit dieser einfachen Methode werden die nächsten n Datensatzgruppen aus einer Abfrage abgerufen.
Im folgenden Beispiel durchläuft die Schleife den Bereich der Datensätze von 10 bis 20, die von »MeineAbfrage« ausgegeben wurden:
#MeineAbfrage.MeinSpaltenname#
Die Schleife wird beendet, wenn keine weiteren Datensätze vorliegen oder der aktuelle Datensatz größer als der Wert des ENDROW-Attributs ist.
Beispiel 3 Der Vorteil, eine Schleife über eine Abfrage auszuführen, liegt darin, daß Sie CFML-Tags verwenden können, die in CFOUTPUT nicht zulässig sind. Im folgenden Beispiel werden die Seiten, die von einer Abfrage in einer Liste von Seitennamen ausgegeben werden, mit Hilfe des CFINCLUDE-Tags zu einem einzigen Dokument kombiniert.
SELECT VorlagenName FROM Vorlagen
Schleife über eine Liste Das Ausführen einer Schleife über eine Liste bietet die Möglichkeit, Elemente zu durchlaufen, die in einer Variablen enthalten sind, oder Werte, die über einen Ausdruck erhalten werden. Bei einer Listenschleife gibt das INDEX-Attribut den Namen einer Variablen an, die als nächstes Element der Liste empfangen werden soll. Das LIST-Attribut enthält eine Liste oder eine Variable, die eine Liste enthält.
697
ColdFusion-Tags
Syntax
INDEX Zwingend erforderlich. Bei einer Listenschleife gibt das INDEX-Attribut den Namen einer Variablen an, die als nächstes Element der Liste empfangen werden soll. Das LIST-Attribut enthält eine Liste oder eine Variable, die eine Liste enthält. LIST Zwingend erforderlich. Die Listenelemente in der Schleife, die entweder direkt oder in einer Variablen geliefert werden. DELIMITERS Optional. Gibt das Trennzeichen an, das zum Trennen der Elemente in der LIST verwendet wird.
Beispiel Die folgende Schleife zeigt die Namen aller Mitglieder der Beatles an:
#ListenElement#
Obwohl CFLOOP erwartet, dass die Elemente in einer Liste standardmäßig durch Kommas getrennt sind, können Sie in dem DELIMITER-Attribut andere Trennzeichen festlegen. Im folgenden wird die obenstehende Schleife erneut gezeigt. Dieses Mal verwendet CFLOOP Kommas, Doppelpunkte oder Schrägstriche als Trennzeichen für Listenelemente:
#ListenElement#
Trennzeichen müssen nicht in einer bestimmten Reihenfolge festgelegt werden. Beachten Sie, dass aufeinanderfolgende Trennzeichen als ein einziges Trennzeichen behandelt werden. Die beiden Doppelpunkte im obenstehenden Beispiel werden also als ein einziges Trennzeichen zwischen »George« und »Ringo« betrachtet.
698
CFLOOP
Schleife über eine COM-Sammlung oder Struktur Das CFLOOP COLLECTION-Attribut ermöglicht die Ausführung einer Schleife über eine Struktur oder ein COM/DCOM-Sammlungsobjekt. 쐽
Ein COM/DCOM-Sammlungsobjekt ist eine Menge ähnlicher Elemente, auf die als eine Gruppe und nicht einzeln verwiesen wird. So ist beispielsweise die Gruppe der offenen Dokumente in einer Anwendung eine Sammlung.
쐽
Eine Struktur kann entweder eine verwandte Gruppe von Objekten enthalten oder als assoziatives Datenfeld verwendet werden. Eine Schleife ist besonders praktisch, wenn eine Struktur als assoziatives Datenfeld verwendet wird.
Jedes Sammlungselement wird in CFLOOP über den Variablennamen angesprochen, den Sie im ITEMAttribut festlegen. Diese Art von Iteration wird normalerweise für den Zugriff auf Objekte in einer COM/DCOM-Sammlung oder auf Elemente in der Struktur verwendet. Die Schleife wird ausgeführt, bis auf alle Objekte zugegriffen wurde. Das COLLECTION-Attribut wird zusammen mit dem ITEM-Attribut in einem CFLOOP-Tag verwendet. Im folgenden Beispiel wird ITEM eine Variable mit der Bezeichnung datei2 zugewiesen, so dass mit jedem Durchlauf in CFLOOP auf jedes Objekt in der Sammlung verwiesen wird. Im CFOUTPUT-Abschnitt wird auf die Namenseigenschaft des Objekts datei2 für die Anzeige verwiesen.
Beispiele Im folgenden Beispiel wird ein COM-Objekt zur Ausgabe einer Dateiliste verwendet. In diesem Beispiel ist FFUNC eine Sammlung der Objekte in datei2.
#datei2.name#
Dieses Beispiel zeigt eine Schleife über eine Struktur (als assoziatives Datenfeld verwendet): ...
Angestellter | Abt. | ||
#ParksAbrufen.CurrentRow# | #ParkName# | #Region# | #State# |