Anandos Template-Parser - technische Dokumentation

Template-Parser zur Darstellung dynamischer Webseiten in PHP (Version 4.0/2016-07-15)

Inhalt

1 Allgemeines
   
2. Struktur der Platzhalter
2.1. Marker-Tags
2.2. Text-Pattern
   
3. Transformation von Links
   
4 Bereitstellung der Variablen und Funktionen
4.1. Marker-Funktionen und Variablen
4.2. Hilfsfunktionen
4.3. Lokalisierung
   
5. Arbeitsweise des Parsers
   
6. Hinweise zur php-Programmierung
6.1. Session-Verwaltung
6.2. zeitlicher Ablauf der Abarbeitung der Funktionen
6.3. Hinweise zur Strukturierung der Anwendungsfunktionen
   
7. vorbereitete Funktionen
7.1. Funktionen zur Verwendung mit Marker-Tags
7.2. Funktionen zur Verwendung in Text-Pattern
   
8. vordefinierte Variablen
   
  Anhang A: Initialisierungsdatei
  Anhang B: History

 

1. Allgemeines

Für die Realisierung von WWW-Inhalten sollen Design und veränderliche Inhalte getrennt werden, wie das z.B. auch von Content-Management-Sytemen (CMS) her bekannt ist.

Dabei werden folgende Vorgaben umgesetzt:

  • Das Design einer Internet-Seite soll mit Hilfe üblicher Web-Designwerkzeuge erstellt und auch im Nachhinein gepflegt werden und aus mehreren Seiten (Dateien) bestehen können
  • Dynamisch zu verändernde Elemente des HTML-Codes werden im Einsatzfall durch den Parser an gekennzeichneten Stellen vor Ausgabe an den Web-Browser modifiziert.
  • Zu modifizierende HTML-Quelltext -Abschnitte werden durch einschließende spezielle Marker-Tags gekennzeichnet
  • Zu modifizierende #CDATA-Angaben werden durch spezielle Platzhalter (Pattern) festgelegt
  • relative Dokumenten- und Ressourcen-URLs  werden durch den Parser so angepasst, dass sie auch zur Laufzeit in das Template-Verzeichnis verweisen
  • Links auf externe Ziele werden nicht verändert
  • Links auf Html-Dateien mit relativer Pfadangabe können so gekennzeichnet werden, dass sie als Parser-Aufruf umgesetzt werden
  • Zur Sprach-Lokalisierung können markierte Texte über eine ausgewählte Sprache per Sprachtabelle übersetzt werden

Folgende drei Komponenten werden damit für eine Web-Anwendung benötigt:

  • der Template-Parser, gewöhnlich als index.php in einem wählbaren Stammverzeichnis abgelegt
  • Funktionen (typisch php-Scripte), die in einem wählbaren Verzeichnis unterhalb des Stammverzeichnisses gespeichert sind
  • Ein Template-Satz, der in einem wählbaren Verzeichnis unterhalb des Stammverzeichnisses als Menge von html- und weiteren Dateien wie Bildern, Multimedia-Recourcen u.ä. abgelegt ist

Als Datenquellen für die in den Templates werden vom Parser als auch von den Anwendungsfunktionen bereitgestellt:

  • einfache Variablen
  • Arrays
  • Funktionen
  • Lokalisierungsdateien zur Sprachübersetzung

Die Die Anwendungsfunktionen werden als php-Dateien bereitgestellt. Mindestens eine Datei "init.php" mit einer Funktion namens "Init()" muss vorhanden sein.
Die Init()-Funktion wird vom Parser zuerst, noch vor dem Session-Start aufgerufen.

In einer Konfigurationsdatei 'atp.conf'  werden die Parser-Grundeinstellungen festgelegt:

Variablenname Beschreibung Beispiel Standard-Wert als Parameter übergebbar
sATP_AppDir Verzeichnis, in dem die Anwendungsdateien abgelegt sind; darf nicht leer sein; '.' ist erlaubt
ein optional angegebener Argv-Parameter 'sAppDir' überschreibt diesen Wert zur Laufzeit
opac-test application X
sATP_AppName Name des Funktionspakets (für Anzeigen o. Ausschriften) OPAC Anwendung X
sATP_TplDir Verzeichnis, in dem sich die Template-Dateien befinden
ein optional angegebener Argv-Parameter 'sTDir' überschreibt diesen Wert zur Laufzeit
tpl template X
sATP_TplFile Name der zu starteneden Template-Datei
ein optional angegebener Argv-Parameter 'tpl' überschreibt diesen Wert zur Laufzeit
index2.html index.html X
nATP_LogLevel wenn >0 gesetzt, wird eine Log-Datei geschrieben

Jede Zeile wird mit einem Zeitstempel, der Quelladresse und der Session-ID eingeleitet.
0 - kein Logging
1 - nur Fehler
2 - Quelle, Liste der Parameter, Laufzeit:
  • init
  • ReadTemplate
  • Marker
  • Pattern
  • Transform
  • Lokalisierung
  • Summe
3 - Zusätzliche Funktionsinterne Inhalte
4 - zusätzlich Header-informationen (uac, Land)
5 - alle GET/POST-Parameter
99 - Trace-Level - alle Funktionsaufrufe
3 0  
sATP_LogFile absoluter Pfad und Name der Logdatei c:\log /var/log/atp-test.log  
sATP_TplValid Zeichenkette zur Gültigkeitsüberprüfung der Templates
wenn gesetzt, wird Template nur dann verarbeitet, wenn
Validitäts-Tag mit diesem Inhalt vorkommt:
Beispiel: ... @ ATP VAR=(zeichenkette) @
123456 (leer)  
sATP_UasFile wenn gesetzt, wird der Browserstring ausgewertet atp_uas.txt (leer)  
sATP_UasLogFile und in dieser Datei die unbekannten Browserstrings protokolliert /var/log/atp_unidentified_uac.log (leer)  
MARK_BEG_Strt Konstante; Beginn des öffnenden Marker-Tags "<!-- " "<atp "  
MARK_BEG_End Konstante: Ende des öffnenden Marker-Tags "-->" ">"  
LEN_MARK_BEnd Konstante : Länge der Zeichenkette Ende des öffnenden Marker-Tags 3 1  
MARK_END Konstante: schließendes Marker-Tag "<!--/atp-->" </atp>  
LEN_MARK_END Konstante: Länge der Zeichenkette Ende des schließenden Marker-Tags 11 6  

 


Allgmeines zu Get- oder Post-Parametern für den Parser

Das Starten der Session wird der Anwendung überlassen. Deshalb kann sich der Parser selbst keine Parameterinhalte merken.

Damit auch Folgeaufrufe einer Anwendung, die über einen Parser-Parameter gewählt oder modifiziert wurde, funktionieren, muss die Anwendung sicherstellen, daß für jeden Parseraufruf diese Parameter erneut mitgegeben werden.
Das läßt sich z.B. realisieren, indem über Text-Pattern (s.u.) belegte hidden-Felder verwendet werden, deren Inhalt dann bei jedem submit automatisch mitgesendet wird.

 

2. Struktur der Platzhalter

Zur transparenten Kennzeichnung der zur verändernden Dateibereiche dienen zwei Arten von Platzhaltern (Content-Marker):

 

2.1. Marker-Tags

Diese Form wird eingesetzt, wenn ganze HTML-Quelltextbereiche modifiziert werden sollen. Dabei werden Pärchen von Marker-Tags benutzt: jeweils ein Start- und ein End-Tag:

allgemein: <atp {VAR|FKT}=bezeichner PAR=bezeichner >(beliebiger html-Inhalt)</atp>

WICHTIG: die in der vorigen Zeile grün gekennzeichneten Bereiche können über die Parserkonfigurationsdatei anders eingestellt werden. In dieser Dokumentation werden jedoch immer die Standard-Einstellungen verwendet.

Beispiel: : <p class="wospru"><atp FKT=Wochenspruch PAR=date>An dieser Stelle wird der Spruch der Woche eingeblendet, den die Funktion "Wochenspruch(date)" liefert</atp></p>

Der Parameter 'PAR' wird nur bei FKT=... verwendet und kann entfallen, wenn er für die jeweilige Funktion nicht benötigt wird.

Im Fall eines Funktionsaufrufes wird der zwischen <atp ...> und </atp> stehende Quelltext an die Funktion übergeben.

Der Bereich zwischen den Marker-Tags wird vom Parser ersetzt oder modifiziert. Im Debug-Modus bleiben die Marker-Tags im modifizierten HTML-Quelltext stehen.

Im Fall VAR=... sind nur einfache Variablen (keine Arrays verwendbar). Sollen Array-Inhalte dargestellt werden, gibt es dafür die eingebaute Funktion ARR.

Mit Marker-Tags markierte Bereiche sind schachtelbar, die inneren Bereiche werden zuerst aufgelöst.

Beispiel:
<atp FKT=Test1 >(html-Inhalt1)<atp FKT=Test2 >(html-Inhalt2)</atp>(html-Inhalt3)</atp>

Zuerst wird im Beispiel die Funktion Test2 mit dem (html-Inhalt2) aufgerufen, danach die Funktion Test1 mit dem neuen Html-Text, der u.a. auch die Ausgabe der Funktion 2 enthält.

2.2. Text-Pattern

Diese Form wird eingesetzt, wenn #CDATA-Werte modifiziert werden sollen.

@ ATP {VAR|FKT}=BEZEICHNER @

Da die Zeichenfolge '@ ATP' auch in normalem Text vorkommen kann muss sie im Template als '\@ ATP' geschrieben werden, wenn "@ ATP" angezeigt werden soll. Normale '\' werden als '\\' geschrieben und vom Parser in einfache Backslashes umgesetzt.

Beispiel:

z.B. in init.php:
$_SESSION['aAtpVars'][{Instanz}]['Test'] = "(Inhalt der Variablen Test)";

Template-Quelltext vor der Abarbeitung: <input value="@ ATP VAR=Test @" ... >
Quelltextnach der Verarbeitung: <input value="(Inhalt der Variablen Test)" ... >

Die Text-Pattern werden nach Abarbeitung der Marker-Tags behandelt.
 

3. Transformation von Links:

3.1. Transformation von Dokumenten-Links

Die Template-Dateien besitzen die Endung '.html' oder '.xml'. Verweise zwischen ihnen lauten auf diese Namen. Wenn die dem Browser zu präsentierenden  URL's auf die verarbeitende Parser-Datei (z.B. index.php) verweisen müssen, werden Attribute, die URL's enthalten, über einen speziellen Marker-Tag (Link-Marker) vorgegeben, der immer direkt vor dem zu modifizierenden Tag platziert wird:

Zur Link-Transformation werden die fest hinterlegten Funktionen "HREF", "SRC",   "ACTION" und "DATA" genutzt.

Dem bezeichnetem Attribut entnimmt der Parser den Namen der Template-Datei, der dann im Parameter 'tpl' übergeben wird. Weitere Parameter werden vom Parser beibehalten.

Eine URL wird nicht verändert, wenn sie mit "#" beginnt.

Beispiele:
HREF
Aus
<atp FKT=HREF ><a ... href="suche.html?(parameterliste)" ... >...</atp>
entsteht
<a ... href="index.php?tpl=suche.html&inst=0&{parameterliste}... >...

ACTION
Aus

<atp FKT=ACTION ><form ... action="tuwas.html" ... >...</atp>
entsteht
<form ... action="index.php... >
<input type="hidden" name="tpl" value="tuwas.html">
<input type="hidden" name="inst" value="0">...

Die hidden-Input-Felder werden benötigt, damit die Parameter mitgesendet werden.

 

3.2. Transformation von Rescourcen-Links

Ungekennzeichnete, relative Rescourcen-Adressen werden so umgesetzt, dass der relative Pfad vovom Verzeichnis, das die  index.php enthält, ausgehend ersetzt wird.
 

Tag behandeltes Attribut
a href
link href
img src
script src
object data


Beispiel:  <IMG ...  src="images/bild1.jpg" ... >     wird umgesetzt in z.B.   <IMG ... src="(templateverzeichnis)/images/bild1.jpg" ... >
oder:  <LINK ...  href="./style/style.css" ... >     wird umgesetzt in z.B.   <LINK ...  href="(templateverzeichnis)/style/style.css" ... >

Die Link-Transformation wird nach Abarbeitung der Content-Marker durchgeführt.

Nicht verändert werden URLs, die mit folgenden Zeichenketten beginnen:

  • /
  • #
  • ftp:
  • http:
  • https:
  • file:
  • mailto:
  • javascript:
     

 

4. Bereitstellung der Variablen und Funktionen

4.1. Marker-Funktionen und Variablen

Die Initialisierung geschieht über eine Init()-Funktion, die in der Datei init.php des Funktionspaketes enthalten ist.

Die init.php wird vom Parser automatisch eingebunden (include) und kann include-Anweisungen für weitere benötigte Dateien enthalten. Die enthaltene Init()-Funktion wird vom Parser als erstes aufgerufen und ermöglicht die Initialisierung des Funktionspaketes.

Das bedeutet: aller ausserhalb von Funktionen in der init.php befindlichen Anweisungen werden
sofort ausgeführt. danach wird die Init-Funktion Aufgerufen. Nach Aufruf der Init-Funktion geht der Parser davon aus, dass die Session initialisiert ist und setzt weitere vordefinierte Zustandsvariablen.

Die Variablen werden über ein assoziatives Array aAtpVars bereitgestellt, dass in $_SESSION abgelegt wird. Für jede der vom Parser in einer Session verwalteten Instanzen gibt es einen unabhängigen Variablensatz.

Beispiel: Bezeichner aus Text-Pattern ist "Otto":   $_SESSION['aAtpVars'][{Instanz}]['Otto']

4.2. Hilfsfunktionen

Zum bequemen Zugriff auf diese Variablen dienen folgende Funktionen, die im eigenen PHP-Code verwendet werden können:

  • bool AtpVIsset (string $sName)
  • bool AtpVSet (string $sName, mixed $mValue)
  • mixed AtpVGet (string $sName)
  • bool AtpVUnset (string $sName)
  • mixed AtpVInstInit (integer $Instance)
  • mixed AtpVInstCopy(mixed $Instance = false)
  • bool AtpVInstUnset(integer $Instance)
  • bool AtpVInstIsset(integer $Instance)

Weitere verfügbare Hilfsfunktionen sind:

  • String RQ (String $v) - liefert $_REQUEST-Wert oder Leerstring; unpaarige " und ' werden automatisch entfernt
  • String RVar (String $s) - ermittelt Variable aus $_REQUEST (Vorrang) oder ATP-Umgebung; unpaarige " und ' werden automatisch entfernt

4.3. Lokalisierung

Um eine Anwendung mehrsprachig zu gestalten, kann man auf folgende Variablen und Funktionen zurückgreifen:

Globale Variable '$sTPattern': kann von der Anwendung mit einem Markerstring für die Kennzeichnung von zu übersetzenden Worten beschrieben werden.
Globales Array '$aTT': kann von Anwendung mit der Übersetzungstabelle gefüllt werden.

Ist $sTPattern gesetzt, werden alle vorkommenden Worte, die mit dem Inhalt von $sTPattern eingeschlossen sind, mit Hilfe der Tabelle $aTT übersetzt.
 

5. Arbeitsweise des Parsers

Im Normalfall heißt der Parser "index.php", der folgende Aktionen ausführt:

  1. Suche und Einlesen der Konfigurationsdatei (Standard: atp.conf im gleichen Verzeichnis)
  2. Einbinden der init.php der Anwendung
  3. Aufruf der Funktion init() der Anwendung
  4. Generierung des endgültigen html-Quelltextes aus dem Template unter Abarbeitung der enthaltenen Marker und Platzhalter (Pattern)
    (s.a. Abschn.6.2.)

Siehe dazu die detaillierte Auflistung im Abschnitt 6.2.
 

6. Hinweise zur php-Programmierung:

6.1. Session-Verwaltung

Bei der Programmierung von Funktionen für den Parser ist folgendes zu beachten:

  • session.auto_start() darf nicht verwendet werden, damit in init.php noch Klassendefinitionen geladen werden können, die für Objekte der Session gelten.
  • session_start() wird an geeigneter Stelle in init.php an einer Stelle platziert, an der alle Klassendefinitionen bereits erfolgt sind.

6.2. zeitlicher Ablauf der Abarbeitung der Funktionen

Zeitliche Reihenfolge der Abarbeitung der Programmkomponenten

1. Initialisierung des Parsers (Einlesen der Konfigurationsdatei, Initialisieren der parsereigenen Variablen
2. Auswertung der parserbezogenen Aufrufparameter (GET- oder POST-Variablen), z.B. sATP_TplDir, sATP_AppDir, inst,
3. Ausführung der globalen Inhalte der init.php der eingebundenen Anwendung
4. Ausführung der Funktion init() aus der init.php der eingebundenen Anwendung
wenn das boolean Flag $_ATP_OUT von der Anwendung nicht auf false zurückgesetzt wurde, werden auch die weiteren Schritte abgearbeitet:
5. Einlesen der zu verwendenden Template-Datei (Parameter sATP_TplFile, Wert aus atp.conf oder Standardwert "index.html")
6. Auflösung aller Marker-Tags - hier angegebene Funktionen werden in dem Moment abgearbeitet, in dem die Marker-Tags aufgelöst werden.
Geschachtelte Marker-Tags werden von innen nach außen aufgelöst.
7. Auflösung aller Text-Pattern - angegebene Funktionen werden abgearbeitet (wie 6.)
8. Transformation der Recourcen-Links
9. evtl. Lokalisierung (Wenn von Anwendung eine Sprachübersetzungstabelle bereitgestellt wurde)
10. Ausgabe des Ergebnisses (Übergabe des generierten HTML-Textes an Webserver-Prozess und damit an den Client-Browser)

 

6.3. Hinweise zur Strukturierung der Anwendungsfunktionen

 

  • Variablen, die in den Platzhaltern verwendet werden, müssen entweder schon in der Session vorhanden sein, oder müssen in der init.php belegt werden. Das kann z.B. in Abhängigkeit von einem übergebenen Parameter geschehen.
  • Funktionen, die in den Platzhaltern angegeben werden, werden in dem Moment abgearbeitet, in dem die Platzhalter im Template aufgelöst werden. Damit können z.B. mit einer Funktion an verschiedenen Stellen im Template verschiedene Werte ausgegeben werden, die von der Anzahl und Abfolge des vorherigen Aufrufs anderer Funktionen abhängen.
  • Text-Pattern-Variablen können auch durch von in Marker-Tag-Platzhaltern verwendeten Funktionen belegt werden, da die Auflösung der Text-Pattern nach der Abarbeitung der Funktionen aus Tag-Markern erfolgt.
  • Tag-Marker können geschachtelt werden. Sie werden von innen nach aussen aufgelöst, was bedeutet, dass die in äusseren Tags verwendeten Funktionen die Ausgabe der in inneren Tags verwendeten Funktionen "sehen" .
  • Funktionen, die in Text-Pattern verwendet werden, sind parameterlos.

 

 

7. vorbereitete Funktionen

7.1.   Funktionen zur Verwendung mit Marker-Tags

FKT PAR Beschreibung
HREF   konvertiert href-Attibut des eingeschlossenen Tags so, dass der Parser mit dem Inhalt des Attributs als Parameter "tpl" aufgerufen wird
SRC   konvertiert src-Attibut des eingeschlossenen Tags so, dass der Parser mit dem Inhalt des Attributs als Parameter "tpl" aufgerufen wird
ACTION   konvertiert action-Attibut des eingeschlossenen Tags so, dass der Parser mit dem Inhalt des Attributs als Parameter "tpl" aufgerufen wird
DATA   konvertiert data-Attibut des eingeschlossenen Tags so, dass der Parser mit dem Inhalt des Attributs als Parameter "tpl" aufgerufen wird
ARR Array-Name ersetzt im HTML-Quelltextabschnitt Platzhalter der Form ##bezeichner## mit den korrespondierenden Inhalten des numerischen oder assoziativen Arrays
Beispiel:

$_SESSION[aAtpVars][{Instance}][Test] = (abc => Hallo, def => Otto)aus <atp FKT=ARR PAR=Test ><b>##abc## ##def##!</b></atp>

entsteht <ATP FKT="ARR" PAR="Test"><b>Hallo Otto!</b></ATP> im Debug-Modus oder
<b>Hallo Otto!</b> bei DEBUG=0 in atp.conf
ARR2 Array-Name wie Funktion ARR, aber für 2-dimensionales Array;
Der Quelltext wird sooft dupliziert, wie die erste Dimension des Arrays Elemente hat
Ist das Array leer, wird der Quelltext unterdrückt.
Die Platzhalter haben die gleiche Struktur, wie die für die Funktion ARR verwendeten.
SETCLASS Variablenname Setzt den Klassennamen des eingeschlossenen Tags neu.
VISIBILITY Variablenname Setzt VISIBILITY-Wert des style-Atrributs des eingeschlossenen Tags neu:
Der Inhalt der per PAR bezeichneten Variablen wird wie folgt verwendet:
-1 - VISIBILITY wird 'hidden' gesetzt
 0  - VISIBILITY -Eigenschaft wird entfernt
 1 - VISIBILITY wird 'visible' gesetzt
HIDDEN Variablenname veraltet; Synonym für VISIBILITY
SHOW Variablenname läßt Code stehen, wenn Variable gesetzt ist.
BLANK Variablenname unterdrückt Code, wenn Variable gesetzt ist

 

7.2. Funktionen zur Verwendung in Text-Pattern


(noch keine)

 

8. vordefinierte Variablen

Die folgenden Variablen stehen in der Anwendung in der init-Funktion zur Verfügung:

Typen:
ATP - mittels AtpVGet zu lesen oder in Template-Platzhaltern verwendbar
php - globale php-Variable
 

VAR Typ Beschreibung
ATPVER ATP Version des Template-Parsers Beispiel: 3.07.04
sATP_AppDir ATP relativer Pfad zum Anwendungs-Unterverzeichnis (ohne abschl. "/" )
sATP_TplDir ATP relativer Pfad des Template-Verzeichnisses (ohne abschl. "/" )
DATE ATP Datum im Format "[T]T.[M]M.YYYY"
WEEKDAY ATP aktueller Wochentag
MONTH ATP aktueller Monatsname
TIME ATP liefert die aktuelle Zeit im Format 'hh:mm:ss'
UHR ATP liefert die aktuelle Uhrzeit im Format 'hh:mm Uhr'
REMOTE_ADDR ATP Client-IP
HTTP_USER_AGENT ATP Browser-String aus $_SERVER[]
HTTP_ACCEPT_CHARSET ATP aus $_SERVER[]
SERVER_NAME ATP aus $_SERVER[]
$_ATP_PLA php Plattformkennung oder Leerstring
$_ATP_RES php Auflösung in Pixeln oder Leerstring
$_ATP_SYS php Satenkennung oder Leerstring
$_ATP_DIA php Bildschirmdiagonale in Zoll oder Leerstring
$_ATP_BRO php Browserkennung oder Leerstring
$_ATP_LNG php Sprachkennung oder Leerstring
$_ATP_OUT php boolean: wenn false gesetzt, wird nichts ausgegeben (default: true)

 

 

Anhang A: Initialisierungsdateien


Die Initialisierungsdatei atp.conf befindet sich im gleichen Verzeichnis wie die index.php.

Inhalt der Datei (Beispiel):

 

 

 

 

;==============================================
; Konfigurationsdatei für Auswahl der Anwendung
;==============================================
Kommentar (mit ; eingeleitet)
sAppDir  = opac Verzeichnis unterhalb der index.php, in dem die Anwendungs-Scripte stehen
sAppName = AndoLib-OPAC Name der Anwendung; informativ; kann im Anwendungs-Template verwendet werden
sTplDir  = tpl Verzeichnis unterhalb der index.php, in dem sich die Teplate-Dateien befinden
sTemplate = index.html Name der Start-Template-datei (index.html ist default)
; DEBUG = 1 -> ATP-Tags bleiben im Ausgabequelltext stehen
DEBUG = 0
Kommentar; ATP-Tags werden in Großschreibung gewandelt und bleibenb zu Diagnosezwecken im Ausgabetext stehen. In Produktivumgebungen sollte immer DEBUG=0 gesetzt sein.
ATP-Tags werden vollständig aus produziertem Quelltext entfernt
; wenn gesetzt, wird Template nur dann verarbeitet, wenn
; Validitäts-Tag mit diesem Inhalt vorkommt:
; Beispiel: ... @ ATP VAR=123456 @
sValid = 123456
 
Templates, die diesen ATP-Pattern nicht enthhalten, werden nicht verarbeitet; dient vorrangig der Abwehr von Path-Traversal- und remote-include-Attacken
; Name der Device-Liste
UasFile=atp_uas.txt
Ist diese Liste angegeben, werde globale Variablen mit Informationen zum erkannten System gesetzt:
  • $_ATP_PLA
    • sma - Smartphone
    • tab - Tablet
    • pc - PC
    • bot - WebBot, Spider, Suchmaschine
  • $_ATP_RES - Auflösung in Pixeln, z.B. 1024x768
  • $_ATP_SYS - System-Kennung
    • win
    • winxp
    • win7
    • win8
    • android
    • ...
  • $_ATP_DIA - Schirmdiagonale in Zoll auf ganze Werte gerundet
  • $_ATP_BRO - Browserkennung
    • msie9
    • msie10
    • firefox
    • seamonkey
    • ...
  • $_ATP_LNG - Sprachkennung aus Browserstring
    • de
    • en
    • ...
Diese globalen Variablen lassen sich in der Anwendung beliebig auswerten, z.B. zur Auswahl separater Templates für verschiedene Geräte.

Ausgewertet wird der UA-String ($_SERVER['HTTP_USER_AGENT']).

Je Zeile wird eine Geräteart definiert, für eine Geräteart können mehrere Zeilen verwendet werden.
Es wird das Gerät gesetzt, für das der erste RegEx-Ausdruck zutrifft
default: PC (wenn kein RegEx-Ausdruck zutrifft)

Der Inhalt der Device-Liste hat folgenden Aufbau:
  • # leitet Kommentarzeilen ein
  • leere Zeilen werden ignoriert
  • jede Zeile enthält mindestens zwei durch TAB-Zeichen (09hex) getrennte Bereiche:
    • einen RegEx-Ausdruck der Form /blabla/ (wird an führendem '/' erkannt
    • eine Liste von mit ',' getrennten Paaren von Variablennamen und Werten, die ihrerseits durch ':' getrennt sind
  • optional kann noch ein mit '#' eingeleiteter Kommentar folgen, der vom Rest der Zeile auch mit TAB getrennt werden muß

Funktion:

  • die Zeilen mit den Suchausdrücken werden nacheinander abgearbeitet
  • treffen mehrere Suchausdrücke zu, überschreiben Werte, die diesem zugeordnet sind, eventuell schon aus voranstehenden Zeilen entstandene Werte
  • Zeilen mit fehlerhaften Regex-Ausdrücken werden ignoriert
Beispiele:
/Tablet/    pla:tab
/Mobile/    pla:sma
/Windows NT/    pla:pc,sys:win
/ME301T/    pla:tab
/de-de/ lng:de
/en-en/ lng:en
/Googlebot/ pla:bot
/Mozilla\/5.0; TOB/    bro:t-online
/N905i/        pla:sma,res:320x240
/LG-P990/    pla:sma,res:800x480
/LIFETAB_E1031\d/    pla:tab,res:1280x800            # Medion Lifetab E3031x 
/LIFETAB_E7316/    pla:tab,dia:7,res:1024x600            # Medion Lifetab E7316 
; und in dieser Datei die unbekannten Browserstrings protokolliert
UasLogfile = /var/log/atp_unidentified_uac.log
liefert in der log-datei alle Browserstrings, die keinen bekannten Textteil enthalten

 

 

 

Anhang B: History

 

V 4.01

  • AtpVInstCopy() ergänzt

V 4.00 - vollständig neu überarbeitet

  • Verwaltung mehrerer Instanzen mit getrennten-ATP-Variablen-Sets ergänzt
  • Namen der ATP-Variablen besser systematisiert; Kompatibilität zu den Parametern tpl, sTDir, sAppDir bleibt erhalten

V 3.15

  • ATP-Variable sAppDir jetzt verfügbar
  • keine Link-Transformation bir mit '#' beginnenen URLs

V 3.14

  • globales Flag $_ATP_OUT verfügbar: wenn in Anwendung = false gesetzt, wird template-Date nicht verarbeitet.

V 3.13

  • sValid in atp.conf zur Template Validierung eingeführt

V3.12

  • Geräteerkennung ergänzt (incl. Spider-Erkennung)
  • Javascript-Reflection-Angriffe verhindert

V3.10

  • Lokalisierung der Anwendungen ermöglicht

V3.06: Neue vordefinierte Variablen:

 

  • ATPVER
  • sTplDir
  • TIME
  • UHR
  • REMOTE_ADDR
  • HTTP_USER_AGENT
  • HTTP_ACCEPT_CHARSET
  • SERVER_NAME

Neue Marker-Tag-Funktionen:

  • DATA
  • VISIBILITY; ersetzt HIDDEN (HIDDEN wird ab Version 4 nicht mehr unterstützt)

V3.05:

Neue Marker-Tag-Funktionen:

  • SHOW()
  • BLANK()

V3.04:

Als Marker-Tags werden ab dieser Version <atp ...> </atp> verwendet.
Neue Funktionen:

  • AtpVIsset()
  • SETCLASS()
  • HIDDEN()
  • RQ()
  • RVar()

V3.03:

  • Neu: vordefinierte Variablen DATE, WEEKDAY und MONTH
  • Doku: Begriff "Kommentar-Marker" in  "Marker-Tags" geändert
  • Neu: Funktionen AtpVSet(), AtpVUnset() und AtpVGet()

V3.02:

  • script-Tag in link-Transformation einbezogen
  • Funktion ARR2 ergänzt

V3.01: 

  • Kommentar-Tags: attribut "PAR" ergänzt
  • Unterstützung für Ausgabe von Arrays ergänzt
  • Funktion "SRC" ergänzt

V3.00:     

neu definiert und codiert

 

Version 3.03.1/2010-02-10