SHTML und ASP sind ähnlich. In Dateien, die nach SHTML benannt sind, werden einige SSI -Anweisungen verwendet, genau wie die Anweisungen in ASP. Sie können SSI -Anweisungen in die SHTML -Datei schreiben. Wenn der Client auf diese SHTML -Dateien zugreift,
Die Serverseite wird diese SHTML -Dateien lesen und interpretieren und die in der SHTML -Datei enthaltenen SSI -Anweisungen interpretieren. Beispiel: Sie können SSI -Anweisungen verwenden, um sich auf andere HTML -Dateien (#include) in der SHTML -Datei zu verweisen. Die vom Server an den Client gesendete Datei lautet, dass das bereits erklärte SHTML keine SSI -Anweisungen enthält. Es implementiert Funktionen, die HTML nicht hat, dh es kann die Dynamik implementieren
SHTML kann als Evolution von HTML bezeichnet werden. Wie Sinas Nachrichtensystem sind der Nachrichteninhalt festgelegt, aber die Anzeigen und Menüs darauf werden in #include zitiert.
Derzeit gibt es hauptsächlich die folgenden Verwendungen:
1. Anzeigen der serverseitigen Umgebungsvariablen <#Echo>
2. Fügen Sie den Textinhalt direkt in das Dokument ein <#include>
3.. Zeigen Sie mit Webdokumenten verwandte Informationen <#flastmod> <#fsize> (z. B. Dateierstellung Datum/Größe usw.).
4. Führen Sie verschiedene Programme direkt auf dem Server <#exec> aus (z. B. CGI oder andere ausführbare Programme).
5. Legen Sie das SSI -Informationen anzeigen Format <#config> fest (z. B. Dateierstellung Datum/Größenanzeigemethode)
Advanced SSI <XSSI> kann Variablen festlegen, die bei bedingten Anweisungen verwendet werden.
Mit SSI
SSI ist eine Reihe von Befehlen für Webserver. Diese Befehle sind nur direkt in den Kommentarinhalt des HTML -Dokuments eingebettet. wie:
<#include file = info.htm->
Es handelt sich um eine SSI -Anweisung, mit der der Inhalt von info.htm auf die aktuelle Seite kopiert wird. Wenn der Besucher durchsucht, wird er sehen, dass andere HTML -Dokumente den Inhalt von info.htm anzeigen.
Die Verwendungsformen anderer SSI -Anweisungen sind im Grunde genommen die gleichen wie die, die gerade erwähnt werden. Es ist ersichtlich, dass die Verwendung von SSI nur einen kleinen Code einfügt und die Nutzungsformen sehr einfach sind.
Wenn der Webserver SSI nicht unterstützt, wird es natürlich einfach als Annotationsinformationen behandelt und den Inhalt direkt übersprungen. Der Browser ignoriert diese Informationen auch.
Wie konfigurieren Sie die SSI -Funktionalität auf meinem Webserver?
Auf einigen Webservern (z. B. IIS 4.0/Sambar 4.2) müssen Dateien, die die #include -Anweisung enthalten, eine Erweiterung verwenden, die dem SSI -Dolmetscher zugeordnet wurde. Andernfalls verarbeitet der Webserver die SSI -Anweisung nicht. Standardmäßig werden die Erweiterungen .stm, .shtm und .shtml dem Dolmetscher (sSinc.dll) zugeordnet.
Apache basiert auf Ihren Einstellungen. Ändern Sie SRM.Conf, z. B.:
Addtype text/x-server-parsed-html .Shtml analysiert SSI-Richtlinien nur für Dateien mit .shtml-Erweiterung
Addtype text/x-server-parsed-html .html wird SSI-Direktiven für alle HTML-Dokumente analysieren
Netscape Web Server kann den Administrationserver (Administrativserver) direkt verwenden, um die SSI -Funktion zu aktivieren.
Die Website verwendet das Mapping-Tag im Server-Administratorprogramm und fügt den Inhaltstyp als: wwwserver/html-ssi hinzu
Der CERN -Server unterstützt SSI nicht. Sie können die SSI -Scam -Methode verwenden. Laden Sie ein Perl -Skript auf http://sw.cse.bris.ac.uk/webbtools/fakessi.html herunter, damit Ihr CERN -Server einige SSI -Anweisungen verwendet. (Die EXEC -Richtlinie wird nicht unterstützt.)
Grundlegendes SSI -Anweisungsformat
Grundlegende SSI -Anweisungsformat:
Programmcode:
<! ---- Anweisungsname = Anweisungsparameter>
<! ---- Anweisungsname = Anweisungsparameter>
wie
Programmcode:
<#include file = info.htm->
<#include file = info.htm->
veranschaulichen:
1. <!--> Ist Annotation in der HTML-Syntax. Diese Informationen werden ignoriert, wenn der Webserver SSI nicht unterstützt.
2. #include ist eine der SSI -Richtlinien.
3. Die Datei ist der Parameter include, info.htm ist der Parameterwert und bezieht sich auf den Dokumentnamen, der in diese Anweisung aufgenommen werden soll.
Beachten:
1. <!-Es gibt keinen Platz zwischen der # Zahl, nur die SSI-Anweisungen und -Parameter existieren.
2. Die obige Interpunktion = kann niemand fehlen.
3..
Detaillierte Erläuterung der Verwendung von SSI -Anweisungen
#Echo Demonstration
Wirkung:
Einfügen von Umgebungsvariablen in die Seite ein.
Grammatik:
Programmcode:
<!-#echo var = variabler Name->
<!-#echo var = variabler Name->
Name dieses Dokuments: Programmcode:
<!-#echo var = document_name->
<!-#echo var = document_name->
Aktuelle Zeit: Programmcode:
<!-#echo var = date_local->
<!-#echo var = date_local->
Ihre IP -Adresse ist der Programmcode:
<!-#echo var = remote_addr->
<!-#echo var = remote_addr->
#Include Demonstration
Wirkung:
Fügen Sie den Inhalt der Textdatei direkt in die Dokumentseite ein.
Grammatik:
Programmcode:
<#include Datei = Dateiname->
<#include virtual = Dateiname->
<#include Datei = Dateiname->
<#include virtual = Dateiname->
Der Dateidateiname ist ein relativer Pfad relativ zum Verzeichnis, in dem sich das Dokument mit der #include -Anweisung befindet. Die mitgelieferten Dateien können sich in demselben Ebenenverzeichnis oder in den Unterverzeichnissen befinden, jedoch nicht im vorherigen Verzeichnis der vorherigen Ebene. Wenn das Dokument nav_head.htm im aktuellen Verzeichnis File = nav_head.htm ist.
Der virtuelle Dateiname ist der vollständige Pfad zum virtuellen Verzeichnis der Website. Wenn dies die Datei nav_head.htm im Hoyi -Verzeichnis unter dem Stammverzeichnis des Serverdokuments bedeutet; Dann ist es Datei =/Hoyi/nav_head.htm
Parameter:
Datei gibt den Speicherort der enthaltenden Datei in Bezug auf dieses Dokument an
Virtual gibt den Standort relativ zum Stammverzeichnis des Serverdokuments an
Beachten:
1. Der Dateiname muss eine Erweiterung haben.
2. Die mitgelieferten Dateien können eine Dateierweiterung haben. Ich denke, es ist am bequemsten, die HTM -Erweiterung direkt zu verwenden. Microsoft empfiehlt die Verwendung der .inc -Erweiterung (es hängt von Ihrem Hobby ab).
Beispiel:
Programmcode:
<#include file = nav_head.htm-> Fügen Sie die Header-Datei auf die aktuelle Seite ein
<#include file = nav_foot.htm-> Fügen Sie die Tail-Datei auf die aktuelle Seite ein
<#include file = nav_head.htm-> Fügen Sie die Header-Datei auf die aktuelle Seite ein
<#include file = nav_foot.htm-> Fügen Sie die Tail-Datei auf die aktuelle Seite ein
#flastmod und #fsize Demonstrationen
Funktion: #flastmod Datei Letzte Aktualisierungsdatum
#fsize Dateilänge
Grammatik:
Programmcode:
<!-#flastmod File = Dateiname->
<!-#fSize File = Dateiname->
<!-#flastmod File = Dateiname->
<!-#fSize File = Dateiname->
Parameter:
Die Datei gibt den Speicherort der enthaltenden Datei in Bezug auf dieses Dokument an, z. B. info.txt, in dem das Dokument info.txt im aktuellen Verzeichnis darstellt.
Virtual Gibt den Standort relativ zum Stammverzeichnis des Serverdokuments an, wie z. B. /hoyi/info.txt
Beachten:
Der Dateiname muss eine Erweiterung haben.
Beispiel:
Programmcode:
<!-#flastmod file = news.htm->
<!-#flastmod file = news.htm->
Fügen Sie das neueste Aktualisierungsdatum der Datei "News.htm" in das aktuelle Verzeichnis in die aktuelle Seite ein
Programmcode:
<!-#fSize file = news.htm->
<!-#fSize file = news.htm->
Geben Sie die Dateigröße von News.htm in das aktuelle Verzeichnis in die aktuelle Seite ein
#exec Demonstration
Wirkung:
Fügen Sie die Ausgabe eines externen Programms in die Seite ein. Es kann von einer regulären Anwendung in CGI -Programme oder Eingaben eingeführt werden, je nachdem, ob die verwendeten Parameter CMD oder CGI sind.
Grammatik:
Programmcode:
<!-#exec Cmd = Dateiname->
<!-#exec cgi = Dateiname->
<!-#exec Cmd = Dateiname->
<!-#exec cgi = Dateiname->
Parameter:
CMD reguläre Anwendungen
CGI CGI -Skriptprogramm
Beispiel:
Programmcode:
<!-#exec cmd = cat /etc /passwd-> zeigt die Passwortdatei an
<!-#exec Cmd = dir /b-> zeigt die Liste der Dateien im aktuellen Verzeichnis an
<!-#exec cgi =/cgi-bin/gb.cgi-> Das CGI-Programm GB.CGI wird ausgeführt.
<!-#exec cgi =/cgi-bin/access_log.cgi-> Das CGI-Programm Access_log.cgi wird ausgeführt.
<!-#exec cmd = cat /etc /passwd-> zeigt die Passwortdatei an
<!-#exec Cmd = dir /b-> zeigt die Liste der Dateien im aktuellen Verzeichnis an
<!-#exec cgi =/cgi-bin/gb.cgi-> Das CGI-Programm GB.CGI wird ausgeführt.
<!-#exec cgi =/cgi-bin/access_log.cgi-> Das CGI-Programm Access_log.cgi wird ausgeführt.
Beachten:
Wie aus dem obigen Beispiel hervorgeht, ist diese Anweisung sehr bequem, aber es gibt auch Sicherheitsprobleme.
Verbotene Methode:
. Apache, löschen Sie die Optionen enthält die execcgi -Linie in Access.conf;
. Um den Befehl #exec zu deaktivieren, können Sie die ssiexecdisable -Metadatabase ändern.
#Config
Funktion: Gibt das Format der Fehlermeldung, Datum und Dateigröße an, die an den Client -Browser zurückgegeben wurden.
Grammatik:
Programmcode:
<!-#configrerrmsg = benutzerdefinierte Fehlermeldung->
<!-#configSizeFmt = Anzeigeeinheit->
<!-#configTimefmt = Anzeigeformat->
<!-#configrerrmsg = benutzerdefinierte Fehlermeldung->
<!-#configSizeFmt = Anzeigeeinheit->
<!-#configTimefmt = Anzeigeformat->
Parameter:
ERRMSG Custom SSI -Ausführungsfehlermeldungen können auf jede mögliche Weise verwendet werden.
SizeFMT -Dateigröße Anzeigemethode, Standard ist Byte -Methode (Bytes) kann auf Kilobyte -Methode (ABBREV) geändert werden
TIMEFMT -Zeitanzeigemethode, das flexibelste Konfigurationsattribut.
Beispiel: Zeigt die Größe einer Datei an, die nicht existiert
Programmcode:
<!-#configrerrmsg = Serverausführungsfehler, bitte wenden Sie sich an den Administrator [email protected], danke! ->
<!-#fSize file = no File.htm->
<!-#configrerrmsg = Serverausführungsfehler, bitte wenden Sie sich an den Administrator [email protected], danke! ->
<!-#fSize file = no File.htm->
Dateigröße in Kilobyte anzeigen
Programmcode:
<!-#configSIZEFMT = ABBREV->
<!-#fsizefile = news.htm->
<!-#configSIZEFMT = ABBREV->
<!-#fsizefile = news.htm->
Zeigen Sie die Zeit in einem bestimmten Zeitformat an
Programmcode:
<!-#configTimefmt = %y Jahr/ %M Monat %D Tag und Woche %W Peking Zeit %H: %M: %s, %y Jahr hat sich %J Tage vergangen, ist die %u Woche von %y Jahr->
<!-#echo var = date_local-> zeigt, welchen Tag der Woche, der Monat und die Zeitzone es heute ist
<!-#configTimefmt = Heute %A, %b, die Serverzeitzone ist %z, ja->
<!-#echo var = date_local->
<!-#configTimefmt = %y Jahr/ %M Monat %D Tag und Woche %W Peking Zeit %H: %M: %s, %y Jahr hat sich %J Tage vergangen, ist die %u Woche von %y Jahr->
<!-#echo var = date_local-> zeigt, welchen Tag der Woche, der Monat und die Zeitzone es heute ist
<!-#configTimefmt = Heute %A, %b, die Serverzeitzone ist %z, ja->
<!-#echo var = date_local->
Xssi
XSSI (Extended SSI) ist eine Reihe erweiterter SSI-Anweisungen, die in das Modulmodul von Apache 1.2 oder höher in ein integriert sind.
Unter ihnen sind die verfügbaren Anweisungen:
#Printenv
#Satz
#Wenn
#Printenv
Funktion: Zeigt alle Umgebungsvariablen an, die derzeit in der Webserverumgebung vorhanden sind.
Syntax: Programmcode:
<!-#printieren->
<!-#printieren->
Parameter: Keine
Beispiel:
Programmcode:
<!-#printieren->
<!-#printieren->
#Satz
Funktion: Sie können Variablen Werte zuweisen, die in der nachfolgenden If -Anweisung verwendet werden sollen.
Syntax: Programmcode:
<!-#var = variable name value = variable value-> setze
<!-#var = variable name value = variable value-> setze
Parameter: Keine
Beispiel: Programmcode:
<!-#set var = colorValue = rot->
<!-#set var = colorValue = rot->
#Wenn
Funktion: Erstellen Sie eine Seite, die die Daten ändern kann, die gemäß den Berechnungsanforderungen angezeigt werden, wenn die IF -Anweisung verwendet wird.
Syntax: Programmcode:
<!-#wenn expr = $ variable name = variable Wert a->
Inhalt zeigen
<!-#elif expr = $ variable name = variable value b->
Inhalt zeigen
<!-#else->
Inhalt zeigen
<!-#endif->
<!-#wenn expr = $ variable name = variable Wert a->
Inhalt zeigen
<!-#elif expr = $ variable name = variable value b->
Inhalt zeigen
<!-#else->
Inhalt zeigen
<!-#endif->
Beispiel:
Programmcode:
<!-#wenn expr = $ server_name = http: //www.31896.net/->
Willkommen im Server -Sicherheitsdiskussionsbereich http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Willkommen bei Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Willkommen im Diskussionsbereich der Serversicherheit!
<!-#endif->
<!-#wenn expr = $ server_name = http: //www.31896.net/->
Willkommen im Server -Sicherheitsdiskussionsbereich http://www.31896.net/.
<!-#elif expr = $ server_name = http: //www.fineacer.org/->
Willkommen bei Qingchang Computer Network Security Online http://www.fineacer.org/.
<!-#else->
Willkommen im Diskussionsbereich der Serversicherheit!
<!-#endif->
Hinweis: Die in den vorherigen Anweisungen verwendeten Backslashes werden verwendet, um die internen Zitate so zu ersetzen, dass sie nicht als Endausdrücke interpretiert werden. Nicht weggelassen.
1. Konfigurationsbefehl
Der Befehl config wird hauptsächlich verwendet, um die Standardeinstellungen von SSI zu ändern. In:
ERRMSG: Setzen Sie die Standardfehlermeldung. Um die vom Benutzer normalerweise festgelegten Fehlerinformationen zurückzugeben, muss der ERRMSG -Parameter vor anderen SSI -Befehlen in der HTML -Datei platziert werden, andernfalls kann der Client die Standardfehlerinformationen anstelle der vom Benutzer festgelegten benutzerdefinierten Informationen nur anzeigen.
<!-#configrerrmsg = fehler! Bitte senden Sie eine E -Mail an [email protected] ->
TIMEFMT: Definiert das Verwendungsformat von Datum und Uhrzeit. Der Parameter TimeFMT muss vor dem Echo -Befehl verwendet werden.
<!-#configTimefmt = %a, %b %d, %y->
<!-#echo var = last_modified->
Die Ergebnisse werden als:
Mittwoch, 12. April 2000
Vielleicht sind Benutzer mit dem in dem obigen Beispiel verwendeten %a %b %d nicht vertraut. Fassen wir einige der am häufigsten verwendeten Datums- und Uhrzeitformate in SSI in Form einer Tabelle zusammen.
Sizefmt: Bestimmt, ob die Dateigröße in Bytes, Kilobytes oder Megabyte ausgedrückt wird. Wenn in Bytes, ist der Parameterwert Bytes; Abkürzung kann für Kilobytes und Megabyte verwendet werden. In ähnlicher Weise muss der SizeFMT -Parameter vor dem zu verwendenden FSIZE -Befehl platziert werden.
<!-#configSizeFmt = bytes->
<!-#fsize file = index.html->
2. Befehl einschließen
Mit dem Befehl inklusive Befehl können Text oder Bilder aus anderen Dokumenten in das aktuell analysierte Dokument einfügen, was der Schlüssel zum gesamten SSI ist. Über den Befehl einfügen, müssen Sie nur eine Datei ändern, um die gesamte Site sofort zu aktualisieren!
Der Befehl inklusive enthält zwei verschiedene Parameter:
Virtual: Gibt einen virtuellen Pfad zu einem Dokument auf der Serverseite. Zum Beispiel:
<#include virtual =/inclust/header.html ->
Datei: Gibt den relativen Pfad zum aktuellen Verzeichnis, in dem ../ nicht verwendet werden kann, und der absolute Pfad kann auch nicht verwendet werden. Zum Beispiel:
<#include file = header.html ->
Dies erfordert, dass jedes Verzeichnis eine Header.html -Datei enthält.
3. Echo -Befehl
Der Befehl echo kann die folgenden Umgebungsvariablen anzeigen:
Document_name: Zeigt den Namen des aktuellen Dokuments an.
<!-#echo var = document_name->
Die Ergebnisse werden als:
index.html
Document_uri: Zeigt den virtuellen Pfad zum aktuellen Dokument an. Zum Beispiel:
<!-#echo var = document_uri->
Die Ergebnisse werden als:
/YourDirectory/yourFileName.html
Wenn die Website weiter wächst, werden die URLs, die immer länger werden, definitiv Kopfschmerzen. Wenn Sie SSI verwenden, wird alles gelöst. Da wir den Domain -Namen der Website und den SSI -Befehl kombinieren können, um die vollständige URL anzuzeigen, heißt es:
http: // Ihr Domain%3c!-/#echo var = & ... UOT; ->
Query_string_unescaped: Zeigt die vom Client gesendete Abfragezeichenfolge an, die nicht entkommen wurde, wobei alle Sonderzeichen von Escape -Zeichen vorangegangen sind. Zum Beispiel:
<!-#echo var = query_string_unescaped->
DATE_LOCAL: Zeigt Datum und Uhrzeit der Servereinstellungszeitzone an. Benutzer können die Ausgabeinformationen basierend auf dem Parameter TIMEFMT des Befehlskonfigurationsbefehls anpassen. Zum Beispiel:
<!-#configtimefmt = %a, %d von %b im Jahr %y->
<!-#echo var = date_local->
Die Ergebnisse werden als:
Samstag, 15. April, im Jahr 2000
DATE_GMT: Die Funktion ist die gleiche wie date_local, außer dass sie ein Datum basierend auf GMT zurückgibt. Zum Beispiel:
<!-#echo var = date_gmt->
Last_Modified: Zeigt die letzte Aktualisierungszeit des aktuellen Dokuments an. In ähnlicher Weise ist dies ein sehr praktisches Merkmal in SSI. Solange Sie dem HTML -Dokument den folgenden einfachen Text hinzufügen, können Sie die Aktualisierungszeit auf der Seite dynamisch anzeigen.
<!-#echo var = last_modified->
CGI -Umgebungsvariablen
Zusätzlich zu den SSI -Umgebungsvariablen kann der Befehl echo auch die folgenden CGI -Umgebungsvariablen anzeigen:
Server_software: Zeigt den Namen und die Version der Serversoftware an. Zum Beispiel:
<!-#echo var = server_software->
Server_Name: Zeigt den Hostnamen, den DNS -Alias oder die IP -Adresse des Servers an. Zum Beispiel:
<!-#echo var = server_name->
Server_Protocol: Zeigt den von der Client -Anforderung verwendeten Protokollnamen und die Version an, z. B. HTTP/1.0. Zum Beispiel:
<!-#echo var = server_protocol->
Server_port: Zeigt den Antwortport des Servers an. Zum Beispiel:
<!-#echo var = server_port->
Request_method: Zeigt die Dokumentanfragemethode des Clients an, einschließlich GET, Head und Post. Zum Beispiel:
<!-#echo var = request_method->
Remote_Host: Zeigt den Namen des Client -Hosts an, der die Anforderungsnachricht veröffentlicht hat.
<!-#echo var = remote_host->
Remote_ADDR: Zeigt die IP -Adresse des Clients an, die die Anforderungsinformationen ausgestellt haben.
<!-#echo var = remote_addr->
Auth_Type: Zeigt die Authentifizierungsmethode der Benutzeridentität an.
<!-#echo var = auth_type->
Remote_User: Zeigt den vom Benutzer verwendeten Kontonamen an, der auf die geschützte Seite zugreift.
<!-#echo var = remote_user->
4. FSIZE: Zeigt die Größe der angegebenen Datei an. Sie können das Ausgabeformat mit dem SizeFMT -Parameter des Konfigurationsbefehls anpassen.
<!-#fsize file = index_working.html->
5. FlastMod: Zeigt das letzte Änderungsdatum der angegebenen Datei an. Sie können das Ausgabeformat mit dem TIMEFMT -Parameter des Konfigurationsbefehls steuern.
<!-#configtimefmt = %a, %d von %b im Jahr %y->
<!-#flastmod file = file.html->
Hier können wir den FlastMod -Parameter verwenden, um das Aktualisierungsdatum aller verknüpften Seiten auf einer Seite anzuzeigen. Die Methode lautet wie folgt:
<!-#configTimefmt = %b %d, %y->
<A href =/directory/file.html> Datei </a>
<!-#flastmod virtual =/directory/file.html->
<A href =/Another_Directory/Another_file.html> Eine andere Datei </a>
<!-#flastmod virtual =/Another_Directory/Another_File.html->
Die Ergebnisse werden als:
Datei 19. April 2000
Eine andere Datei 08. Januar 2000
6. Exec
Der Exec -Befehl kann CGI -Skripte oder Shell -Befehle ausführen. Wie man es benutzt, ist wie folgt:
CMD: Verwenden Sie /bin /sh, um die angegebene Zeichenfolge auszuführen. Wenn SSI die Option "IncludeNoExec" verwendet, wird der Befehl blockiert.
CGI: Kann verwendet werden, um CGI -Skripte auszuführen. Verwenden Sie beispielsweise im folgenden Beispiel das Programm des counter.PL-Skripts unter dem Server-CGI-BIN-Verzeichnis, um einen Zähler auf jeder Seite zu platzieren:
<!-#exec cgi =/cgi-bin/counter.pl->