Embperl hat einige spezielle Variablen mit einer vorgegebenen Bedeutung.
Enthält die selben Umgebungsvariablen, wie bei einem CGI Skript.
Enthält eine Referenz auf das Embperl Request Object. Dies ist dasselbe
wie wenn man $epreq = shift am Seitenanfang schreibt.
Enthält eine Referenz auf das Embperl Application Object. Dies ist dasselbe
wie $epreq - app> zurückliefert.
Enthält alle Formulardaten, die an das Dokument gesendet wurden.
Das NAME Attribute bildet den Schlüssel und das VALUE
Attribute den Wert des Hashelements. Dabei ist es egal, ob die Daten mittels
GET oder POST übetragen wurden. Existieren mehrere Werte mit dem selben Namen,
werden diese mittels TAB getrennt. Diese können z.B. mittels folgenden Code in
ein Array zerlegt werden: @array = split (/\t/, $fdat{'fieldname'}) ; Embperl unterstützt ebenfalls den Kodierungstyp multipart/form-data,
der für Dateiuploads benutzt wird. Das Element in %fdat enthält dann
eine Dateihandle (entsprechend CGI.pm), die benutzt werden kann, um die
Datei auszulesen. Dateiupload Beispiel: HTML Formular: <FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="ImageName">
</FORM> Embperl ACTION: [- if (defined $fdat{ImageName}) {
open FILE, "> /tmp/file.$$";
print FILE $buffer
while read($fdat{ImageName}, $buffer, 32768);
close FILE;
}
-]
Wenn I<CGI.pm> 2.46 oder höher installiert ist, ist es weiterhin möglich den
Dateinamen (den B<lokalen> Dateinamen, wie er auf seiten des Browsers heißt)
und Informationen, die von der I<CGI.pm> Funktion C<uploadInfo> zur Verfügung
gestellt werden, zu erhalten. Der Dateiname ist in dem entsprechenden
C<%fdat> Element direkt enthalten. Um auf die B<uploadInfos> zuzugreifen, muß man
dem Feldnamen einen Bindestrich voranstellen: Beispiel: # ImageName ist der NAME des Feldes.
# Er durch den im HTML Code angegeben ersetzt werden.
Dateiname: [+ $fdat{ImageName} +] <br>
Content-Type: [+ $fdat{-ImageName} -> {'Content-Type'} +] <br> HINWEIS: Der Zugriff auf die Upload-Infos erfolgte vor 1.2b11 auf andere
Art und Weise, die nicht mehr unterstützt wird. HINWEIS: Dies funktioniert ebenfalls in die andere Richtung. Bei Inputtags deren
Name einem %fdat Schlüssel entspricht und die kein Value Attribute haben wird
automatisch der Wert aus %fdat als Value eingesetzt. Siehe HTML Tags INPUT/OPTION/TEXTAREA .
Enthält alle Formularfeldnamen in der Reihenfolge, wie sie vom Browser
geschickt wurden. Dies entspricht normalerweise der Reihenfolge, wie
sie im Formular erscheinen.
Enthält alle Werte von allen INPUT , TEXTAREA und SELECT/OPTION Tags,
die in der Seite vorangehen.
Sie können %udat benutzen, um Daten pro Benutzer zu speichern. Solange Sie nicht
auf %udat zugreifen passiert gar nichts, sobald jedoch Daten in %udat
geschrieben werden, erzeugt Embperl eine Session Id und sendet sie mittels eines
Cookies zum Browser. Die Daten die in %udat abgelegt wurden, werden mittels
Apache::Session gespeichert. Wenn der selbe Benutzer die nächste Embperl Seite
aufruft, sendet der Browser den Cookie mit der Session Id zurück und Embperl
stellt die Daten in %udat wieder her. (siehe auch Abschnitt über Session Handling)
%mdat speichert Daten je Seite. Solange Sie nicht
auf %mdat zugreifen passiert gar nichts, sobald jedoch Daten in %mdat
geschrieben werden, erzeugt Embperl eine Seiten Id und speichert die Daten mittels
Apache::Session. Wenn ein Benutzer die selbe Embperl Seite
aufruft, stellt Embperl die Daten in %mdat wieder her.
(siehe auch Abschnitt über Session Handling)
Reihen und Spaltenzähler für dynamische Tabellen.
(Siehe HTML Table Tag.)
Maximale Anzahl von Reihen oder Spalten einer dynamischen Tabelle.
Diese Werte werden per default auf 100 für $maxrow und 10 für
$maxcol gesetzt um Endlosschleifen zuverhindern.
(Siehe HTML Table Tag.)
Enthält die Anzahl der Tabellenzellen, die bis jetzt angezeigt wurden.
(Siehe HTML Table Tag.)
Entscheidet, wann das Tabellenende erreicht ist. Dynamische Tabellen
werden immer durch $maxrow und $maxcol begrenzt. Zusätzlich können
folgende Bedinungen für das Tabellenende festgelegt werden: | $tabmode = 1 | | Ende, wenn ein Block der $row enthält, undef als Ergebnis hat.
Die Reihe, die den undefinierten Ausdruck enthält, wird nicht mehr angezeigt. | | | $tabmode = 2 | | Ende, wenn ein Block der $row enthält, undef als Ergebnis hat.
Die Reihe, die den undefinierten Ausdruck enthält, wird angezeigt. | | | $tabmode = 4 | | Ende, wenn $maxrow Reihen angezeigt wurden. | |
Spaltenende: | $tabmode = 16 | | Ende, wenn ein Block der $col enthält, undef als Ergebnis hat.
Die Spalte, die den undefinierten Ausdruck enthält, wird nicht mehr angezeigt. | | | $tabmode = 32 | | Ende, wenn ein Block der $col enthält, undef als Ergebnis hat.
Die Spalte, die den undefinierten Ausdruck enthält, wird angezeigt. | | | $tabmode = 64 | | Ende, wenn $maxcol Spalten angezeigt wurden. | |
Der Defaultwert von 17 ist korrekt zum Anzeigen von Arrays. Es dürfte selten nötig
sein diesen Wert zu ändern. Die Werte für Tabellen- und Spaltenende können addiert werden.
Schaltet die HTML und URL Kodierung der Ausgabe ein und aus.
Default ist ein ($escmode = 3). Hinweis: Normalerweise kann die Kodierung durch Voranstellen eines Backslashes ('\')
vor das entsprechende Zeichen verhindert werden. Das ist recht nützlich, ist aber
in Situation, wo eine Benutzereingabe nochmal angezeigt wird, sehr gefährlich, da dies
dem Benuter ermöglich beliebiges HTML einzugeben. Um dies zu verhindern muß zu den
unten aufgeführten Werten jeweils eine 4 addiert werden. Dies führt dazu, dass Embperl
den Backslash bei der Ausgabe nicht gesondert behandelt. (ab 1.3b4) Hinweis 2:Um binäre Daten auszugeben muß escmode auf Null gesetzt werden (ab 1.3b6) | $escmode = 8 (oder 15) (2.0b4 und höher) | | Das Resultat von Perlausdrücken wird immer XML Kodiert
(z.B. '>' wird zu '>' und ' zu '). | | | $escmode = 3 (oder 7) | | Das Resultat von Perlausdrücken wird HTML Kodiert (z.B. '>' wird zu '>')
und URL Kodiert ('&' wird zu '%26') innerhalb von A , EMBED , IMG , IFRAME , FRAME und LAYER Tags. | | | $escmode = 2 (oder 6) | | Das Resultat von Perlausdrücken wird immer URL Kodiert ('&' wird zu '%26'). | | | $escmode = 1 (oder 5) | | Das Resultat von Perlausdrücken wird immer HTML Kodiert (z.B. '>' wird zu '>'). | | | $escmode = 0 | | Keine HTML oder URL Kodierung findet statt. | |
Diese Variable ist nur vorhanden, wenn Embperl unter mod_perl
läuft und enthält eine Referenz auf den Apache Request Record.
Damit ist es möglich, alle Apache internen Funktionen zu nutzen.
(siehe perldoc Apache für weitere Informationen)
Dies ist die Dateihandle der Embperl Logdatei. Durch schreiben auf
diese Dateihandle ist es möglich, Zeilen in die Embperl Logdatei
zu schreiben. Beispiel: print LOG "[$$]ABCD: your text\n" ; Wenn Sie ein Modul schreiben, das ebenfalls die Embperl Logdatei nutzen
soll, können Sie folgendermaßen eine Dateihandle dafür bekommen: tie *LOG, 'Embperl::Log';
Diese Dateihandle ist an den Embperl Ausgabestrom gebunden. Ausgaben an diese Handle
haben den selben Effekt wie ein [+ ... +] Block.
(Siehe auch optRedirectStdout)
Wird durch den param Parameter der Execute Funktion gesetzt. Kann genutzt werden,
um Parameter an ein Embperl Dokument zuübergeben oder zurückzugegben.
(siehe Execute)
%http_headers_out (ab 1.2b10) | top |
Dieser Hash ermöglicht es HTTP Header anzugeben, die Embperl vor dem Dokument senden soll. Ist ein "Location" Header angegeben, setzt Embperl den Status automatisch auf 301. Beispiel: [- $http_headers_out{'Location'} = "https://www.actevy.io/embperl/" -] Wird ein Array als Location angeben, gibt das zweite Element den Status Code an: [- $http_headers_out{Location} = [ "https://www.actevy.io/embperl/", 303 ]; -] Ab 1.3.2 können alle HTTP Header (außer "Content-Type") auch
mehrere Werte erhalten. Um z.B. mehrere Cookie zu setzen, kann man folgendes schreiben: [- $http_headers_out{'Set-Cookie'} =
['name=cook1;value=2;','name=cook2;value=b'] ; -] Für "Location" und "Content-Type" wird nur der erste Wert berücksichtigt. Leere
Arrays werden ignoriert. Z.B. führt Folgendes nicht zu einem Redirect: [- $http_headers_out{'Location'} = [] ; -] siehe auch META HTTP-EQUIV= ...
Alle Optionen (see EMBPERL_OPTIONS) und alle Debugflags (siehe EMBPERL_DEBUG)
können durch entsprechende Variablen innerhalb der Seite gelesen und gesetzt werden.
Beispiel: [- $optRawInput = 1 -] # Anschalten von RawInput
[- $optRawInput = 0 -] # Abschalten von RawInput
[+ $dbgCmd +] # Ausgeben des Zustandes des dbgCmd Flags Es gibt einige Ausnahmen, bei denen die Optionen lediglich gelesen werden können. Das Setzen solcher
Optionen ist nur in den Konfigurationsdateien möglich. Folgende Optionen können nur gelesen werden: | $optDisableVarCleanup | | $optSafeNamespace | | $optOpcodeMask | | $optDisableChdir | | $optEarlyHttpHeader | | $optDisableFormData | | $optAllFormData | | $optRedirectStdout | | $optAllowZeroFilesize | | $optKeepSrcInMemory |
Embperl räumt nur Variablen auf, die innerhalb der Embperl Seite definiert wurden. Sollen
weitere Variablen aufgeräumt werden, können diese dem Hash %CLEANUP , mit dem Variablennamen
als Schlüssel und einem Wert von 1, hinzugefügt werden. Umgedreht ist es möglich das Aufräumen
zu verhindern, wenn der Variablennamen mit einem Wert von 0 hinzugefügt wird.
%CLEANUPFILE (ab 1.2b6) | top |
Hat die selbe Aufgabe wie %CLEANUP , jedoch können hier Dateinamen hinzugefügt werden und
alle Variable die in diesen Dateien definiert wurden, werden am jedes des entsprechenden
Requests aufgeräumt.
|