This page has been robot translated, sorry for typos if any. Original content here.

Alles über CGI (Common Gateway Interface)

Was ist CGI?

Von Anfang an werden wir die Terminologie verstehen. CGI - Commom Gateway Interface ist eine Schnittstelle, die es einem Webserver ermöglicht, beliebige Programme auf Anfrage vom Browser aus zu starten und dem Browser das Ergebnis seiner Arbeit mitzuteilen. CGI-Programm (Skript) ist ein Programm (Skript), das auf dem Server läuft und über die obige Schnittstelle auch mit dem Browser kommuniziert. Da es keine strengen Regeln für Definitionen von Begriffen gibt, handelt es sich wegen des Programms (Skript) sehr oft um CGI , nicht aber um die Schnittstelle selbst.

Wenn dies ein Programm ist, muss es jedes ausführbare Format besitzen, das für ein bestimmtes Betriebssystem akzeptabel ist. Programme dürfen alles kritzeln: C / C ++, Pascal, Java, Visual ist auch nur Basic, Delphi usw.

Wenn dieses Skript (Skript), dann auf dem Betriebssystem, unter dem sich der Webserver dreht, muss ein entsprechender Skript-Interpreter vorhanden sein: shell, perl, tcl / tk, command.com usw.

Der Hauptgrund für das CGI-Programm (Skript) -Entwicklungswerkzeug, um die folgenden Anforderungen zu erfüllen: - erlauben, aus dem Standard-Eingabe-Stream (Stdin) sprechen - um die Werte der Umgebungsvariablen zu erhalten - in den Standard-Standardausgabe fließen

Für was wird CGI verwendet:

  • Das Arbeiten mit Hilfesystemen ist auch eine Datenbank.
  • Das Erstellen dynamischer HTML-Dokumente ist auch eine Ressource (einschließlich Zähler, Gästebücher usw.)
  • Fernverwaltung verschiedener Systeme
  • Arbeiten Sie einfach mit verschiedenen Programmen, denn die HTML-Oberfläche ist recht einfach zu bedienen, einfach zu fertigen ist auch schön anzusehen :)

Der Arbeitsmechanismus von CGI-Programmen

Wie bereits erwähnt, erfasst CGI Eingabedaten aus dem Standard-Eingabedatenstrom oder aus Umgebungsvariablen, gibt aber die Ergebnisse seiner Arbeit an den Standard-Ausgabestrom aus. Für diejenigen. Wer weiß nicht, was es ist: Standard-Eingabe-Stream (stdin) - daher erwirbt das Programm (Skript) standardmäßig Eingabeinformationen. Normalerweise ist dies eine Tastatur, aber sie kann neu zugewiesen werden, und das Programm (Skript) wird Eingabedaten von einer Datei, einem Socket, dem Ausgabestrom eines anderen Programms erhalten.

Umgebungsvariablen sind Variablen, die für das System definiert sind, auch für den Server, auf dem das CGI ausgeführt wird. .

Standard Output Stream (stdout) - hier zeigt das Programm (Skript) die Ergebnisse seiner Arbeit an. Normalerweise ist dies ein "Monitor", aber es ist erlaubt, auf eine Datei, einen Socket, einen Eingabestream eines anderen Programms, einen Drucker usw. umzulagern.

Die meisten Beispiele in diesem Handbuch sind nur auf die Shell geschrieben, um die Darstellung des Materials zu vereinfachen.

Es wird nicht empfohlen, die Shell zum Schreiben von CGI-Skripten gemäß den endgültigen Sicherheitsrichtlinien zu verwenden.

1.1 CGI-Aufruf ohne Parameter

Ein sehr einfaches Skript, das das aktuelle Datum ausgibt: #!/bin/sh echo Content-type: text/html echo echo "

Heute ist "Datum Echo"

"Im HTML-Act wird hier auf diese Weise ein Verweis darauf beschrieben <a href = http: //translate.googleusercontent.com/translate_c? depth = 1 & hl = de & amp; prev = hp & amp; rurl = translate.google.com & amp; sl = en & amp; sp = nmt4 & amp; tl = de & amp; u = http://www.shram.kiev.ua/cgi-bin/examples/today.cgi&usg=ALkJrhidnFCaN6GHoKyghfPjsDoEAi3QLQ>

WICHTIGER HINWEIS Der grundlegende Fehler, dass fast jeder, der mit dem Schreiben von CGI-Programmen oder Skripts beginnt, darin besteht, dass er vergisst, einen Zeiger auf den Typ des zu druckenden Ergebnisses einzufügen - den Header des Ausgabedokuments. Dies ist auch die dritte Zeile im Beispiel.

echo Inhaltstyp: text / html echo wo Inhaltstyp: - der Typ der Ausgabe der Handlung (Text / HTML, Bild / GIF, Bild / JPEG, etc.).
Eine leere Zeile in der Schlussfolgerung drückt aus, dass der Titel auch durch das Dokument selbst beendet wurde.

1.2 Übergeben von Parametern an das CGI-Skript oder -Programm

Parameter werden paarweise mit den Basismethoden übergeben: GET ist auch POST . Jeder von ihnen hat Pluspunkte und Nachteile.

Wenn Sie GET verwenden, werden die Parameter der angeforderten URL hinzugefügt, und Sie können sie auch wie folgt aufrufen:

http: // some_host / cgi-bin / some_script? -Optionen Damit können Sie auf solche Skript-Links in HTML-Dokumenten reagieren. Auf dem Server werden die übergebenen Parameter der Variablen QUERY_STRING zugewiesen.

Der Text des Skripts selbst: #!/bin/sh echo Content-type: text/html echo echo "

Du hast das hier geschickt:

"echo" "set | grep QUERY_STRING echo"

"echo" Umgebung
"setze echo" "</ code> und wie er aus diesem Dokument herausgerufen wurde: <a href = http: //translate.googleusercontent.com/translate_c? depth = 1 & hl = de & amp; prev = hp & amp; rurl = translate.google.com & amp; sl = en & amp; sp = nmt4 & amp; tl = de & amp; u = http://www.shram.kiev.ua/cgi-bin/examples/link.cgi%3Fsome_parameters&usg=ALkJrhg9zyaMhscIojLPShXK_eUl5E-j0w> Beispielarbeit (hier klicken) </a>

Die Verwendung des GET- Verfahrens zur Übertragung von Parametern, die vertrauliche Informationen enthalten, ist jedoch nicht akzeptabel. In diesem Fall werden alle diese Informationen offen übertragen.

Mit der POST- Methode können Sie Vertraulichkeit gewährleisten, wenn Sie Parameter an ein Skript übergeben. Aber es übergibt Parameter an den Standard-Eingabestream, und Sie müssen dazu Formulare verwenden. Der Server sendet das EOF-Skript nicht am Ende des Programms. Stattdessen müssen Sie die Umgebungsvariable CONTENT_LENGTH verwenden, um zu bestimmen, welche Datenkapazität Sie aus der Standardeingabe berechnen müssen.

Erstellen Sie einen Zähler

In jüngster Zeit wächst die Zahl der Personen, die einen Besuch ihrer Website ablehnen möchten, in einem rasanten Tempo. Im Internet essen Sie viele Orte, an denen die Leute irgendwelche Zähler für jedes Betriebssystem nehmen und sie auf ihre Seiten schrauben können.

Dieser Leiter der Verwaltung wird für diejenigen, die sich für den Mechanismus der Arbeit der Theken interessieren, nützlicher werden, da alle beigegebenen Beispiele spezielle "Schnickschnack" nach den Elementen der Einstellungen, der Verwaltung usw. sind. habe keinen Weg. Mehr "anspruchsvolle", gebrauchsfertige Zähler suchen nach Altavista, Yahoo und anderen Suchmaschinen. Oder fragen Sie in den relevanten Nachrichtenkonferenzen (relcom.www.users, relcom.www.support; in fidoshnyh ehah ru.internet. *).

2.1 Arten von Zählern

In Bezug auf den Arbeitsmechanismus können Zähler in ein Paar von Typ unterteilt werden:
  1. CGI-Skripte funktionieren wie Server Side Include
  2. CGI-Skripts, die kein serverseitiges Include verwenden
Server Side Include (SSI) ist ein HTML-Kommentartyp, der dem Webserver mitteilt, dass dynamisch generierte Daten im Call-Room ersetzt werden müssen. Das grundlegende Format des SSI-Aufrufs im Textkörper des HTML-Dokuments lautet wie folgt:

<!--#command tag="value"...-->

Dabei ist #command einer der vielen Befehle, die vom Webserver verstanden werden. In diesem Fall ist der #exec -Befehl der interessanteste , der es Programmen ermöglicht, auch die Ergebnisse ihrer Arbeit zu ersetzen. Die vom Web-Server analysierten Dokumente werden server-analysierte Dokumente genannt.

2.2 Besucherzähler arbeitet als SSI

Und der Arbeitsalgorithmus:

  1. Der Server erhält eine Anforderung vom Browser für das HTML-Dokument.
  2. Der Server sucht nach dem SSI-Aufruf.
  3. Wenn solche Anrufe erkannt werden, wird das Ergebnis in ihren Räumlichkeiten abgelegt. Im Fall des Befehls #exec das Ergebnis der Arbeit des in "value" angegebenen Programms.
  4. Der generierte HTML-Act wurde im umgekehrten Pfad zum Browser gesetzt.

Erforderliche Servereinstellungen (im Apache Server-Beispiel):

  1. Schreibe in die Datei srm.conf (falls noch nicht geschrieben): AddType text / html .shtml AddHandler server-analysierte .shtml Diese Anweisungen teilen dem Server mit, dass Dateien mit der Erweiterung .shtml vom Server geparste Dokumente sind.
  2. In der Datei access.conf für das Verzeichnis, in dem server-analysierte Dokumente gefunden werden, fügen Sie unter Optionen die Option Includes hinzu.
  3. Weisen Sie für Dateien, die SSI-Aufrufe enthalten, die Erweiterung .shtml zu (siehe Abschnitt 1).
Wir demonstrieren den Betrieb des Zählers anhand eines Beispiels des Zählerskripts, das im Internet unter http://www.webtools.org/ zu finden ist. Es ist in Perl geschrieben, so beliebt heute.

Von hier aus berechnen wir: <! - # exec cgi = "/ cgi-bin / counter" ->
(Klicken Sie auf Neu laden, bis Ihnen langweilig wird)

Dieser Zähler ist ein Text, d.h. Das Skript gibt nur den Text, der angezeigt wird. Ebenso dürfen Bilder eingeschlossen werden. Um dies zu tun, müssen Sie die Textfiguren durch die Tags img src = "picture_c_corresponding_cipher" ersetzen. Ein neugieriger Leser wird leicht erraten, dass die Anzahl der Tags img src ... gleich der Anzahl der Ziffern in dem Wert ist, der vom Zähler zurückgegeben wird.

Der Zähler dieses Zählers im Hauptteil des Vorgangs wird mit dem Befehl ausgeführt: <!--#exec cgi="/cgi-bin/counter"-->

2.3 Ein Zähler, der SSI nicht verwendet

Einfacher aus der Sicht des Benutzers, aber komplexer in der Programmierung ist der Zähler, der SSI in keiner Weise verwendet. Der Arbeitsmechanismus eines solchen Zählers ist wie folgt:

  • Im Body des HTML-Acts ist angegeben: &lt;img src = / cgi-bin / Beispiele / counter.cgi&gt; dh. Das angeforderte Bild ist nicht statisch, sondern wird dynamisch von einem CGI-Skript generiert.
  • Der Server, der eine Anforderung für ein Bild erhalten hat, führt das Skript aus, das im src des img- Tags angegeben ist.
  • Skript, erhöht den Wert des Zählers pro Stück, erzeugt ein Bild mit dem Wert des Zählers und gibt es auch an den Browser.

Da dieser Typ von Zählern im Internet am populärsten ist, wird der Algorithmus seiner Arbeit im Detail betrachtet.

Mit der crypt ( counter.cgi ), die im Body des HTML-Dokuments durch das in der Shell geschriebene Tag img src = "... counter.cgi" aufgerufen wird, besitzt auch der folgende Quellcode (Zeilennummern nur hinzugefügt, um die Erklärung zu vereinfachen): 1: #!/bin/sh 2: now=`date -u` 3: echo "Content-type: image/gif;" 4: echo "Expires: $now" 5: echo 6: counter|showdigits 1: #!/bin/sh 2: now=`date -u` 3: echo "Content-type: image/gif;" 4: echo "Expires: $now" 5: echo 6: counter|showdigits

Dass dieses Skript (eine Zeilenbeschreibung) funktioniert:
1 - Der Titel des Skripts. Es zeigt auf den Befehlsinterpreter, der es ausführen wird.

2 - Definieren Sie die Variable now , die die Startzeit des Skripts enthält (die Zeit, zu der das Image erstellt wurde). Die ' -u' - Taste sagt, dass das Erstellungsdatum / die Erstellungszeit in GMT angezeigt wird. Warum sollte das unten beschrieben werden?

3 - Wir fangen an, den Titel des Server-Einwands zu bilden. Geben Sie den Typ der zurückgegebenen Daten an: image / gif

4 - Da dies ein Zähler ist, muss sichergestellt werden, dass das Kartika mit seinen Angaben in keiner Weise zwischengespeichert wird (und welche Art von Zähler es später ist) :) . Um dies zu tun, weisen wir darauf hin, dass das Bild vom Browser sofort zaekspayritsya erhalten sollte. Hier verwenden wir auch die Variable now , die in Zeile 2 definiert ist. Die Verwendung von Expires in dieser Form entspricht dem Standard für das HTTP-Protokoll Version 1.1. Aber bei der Verwendung von Expires kann die Funktion eines Acts mit witzigen Störungen beginnen, wenn die Stunden des Kunden für einige Minuten hinter der Serveruhr liegen. Ein Dilemma beginnt - es ist auf diese Weise vom Standard festgelegt, aber es stellt sich heraus, dass es nicht genau das ist, was Sie brauchen. Was zu tun ist? In der vorherigen Version des Protokolls (HTTP 1.0) konnte Expires auf 0 festgelegt werden, aber RFC2068 besagt, dass Clients, die auch unter HTTP 1.1 ausgeführt werden, die alte Variante der Verwendung von Expires (Expires: 0) unterstützen sollten. Also die Mitarbeiter, liebe Russen, entscheiden selbst.

5 - Ende des Einspruchsheaders - gibt einen leeren String zurück.

6 - Mit zwei Programmen (Counter auch Showdigits) erzeugen Sie das Bild selbst.

Die Zählerprogramme zeigen auch, dass Ziffern in C geschrieben werden, indem die Arbeitsbibliothek mit GIF-Dateien - libgd - verwendet wird. Ohne es werden die Programme nicht kompiliert. Die neueste Version der Bibliothek kann immer unter http://www.boutell.com/gd/ bezogen werden .

Dann funktionieren diese Programme:

  • counter - liest aus der Datei counter.rc die Zahl, die den vorherigen Wert des Zählers darstellt, fügt einen hinzu, kritzelt auch zurück. Wenn Sie nicht die Route zu den Dateien angeben - Bilder mit Zahlen, auch die Maske dieser Dateien, dann nehmen Sie den Standard, der im Hauptteil des Programms definiert ist. Danach berechnet es den Zählerwert und die Route zu den Bildern wird auf stdout ausgegeben, dann wird die Befehlszeile für showdigits generiert.
  • showdigits - dieses Programm bildet tatsächlich auch ein Bild mit dem aktuellen Zählerstand. Dazu verwenden wir eine Reihe von vorgefertigten Bildern mit Abbildungen (gif-Format, alle Bilder der gleichen Größe), die auch von den Zählerdaten auf stdin empfangen werden. Auf der Route wird auch die Maske aus der Anzahl der benötigten Bilder genommen und eines davon wird von einem Hyph gesammelt. Danach geht er direkt zu ... stdout ! Und dann leitet der Server diesen Strom auch an den Browser weiter, der (der Browser) stellt ihn als Bild dar, da der Einwand-Header anzeigt, dass es sich um eine Hyph handelt.
Die Essenz hier ist: - Der Server sendet einen Datenstrom an den Browser. - Der Browser ist voll davon, an welcher Stelle auch der Server den ihm übertragenen Datenstrom (ob statisch oder dynamisch erzeugt, eine normale Datei oder das Ergebnis der lebenswichtigen Aktivität des Skripts) übernimmt, ist der Browser in der Lage, ihn korrekt zu interpretieren. Verwenden Sie dazu den Header, der in diesem Beispiel vom Skript counter.cgi erzeugt wurde, aber in 3-5 Zeilen (siehe oben). Und im Fall von statischen Dateien generiert der Server selbst diesen Header basierend auf seinen eigenen Einstellungen, aber im Falle von CGI sollte dies durch das Skript selbst geschehen.

Server-Seite enthält

Nun, es ist klar, dass statische HTML-Dokumente gut sind, aber dynamisch erstellte sind noch besser. :) In diesem Kapitel werden wir über das dynamische Erstellen von Dokumenten mit serverseitigen Includes sprechen. Übrigens bemerken wir, dass die Möglichkeit der Verwendung von SSI die Fähigkeit jedes einzelnen Servers ist. Einige Server unterstützen SSI in keiner Weise, aber für diejenigen, die über diese Fähigkeit verfügen, können sich die Formate auch in Befehlssätzen unterscheiden. Lesen Sie daher die Bedienungsanleitung Ihres Webservers. Alle Beispiele in diesem Kapitel beziehen sich auf den Apache-Server.

3.1 Was ist SSI?

Wie bereits im vorherigen Kapitel erwähnt, ist Server Side Include (SSI) eine Webserver-Anweisung, die es dem Server ermöglicht, beliebige Daten in den Räumlichkeiten des Aufrufs zu platzieren. In einem HTML-Code sieht der SSI-Aufruf wie ein Formatkommentar aus:

<!--#command tag="value"...-->

Dabei steht #command für eine der vom Webserver verstandenen SSI-Direktiven, aber " value " sind die Parameter.

Die gelieferten Daten können auch statisch, dynamisch generiert werden. Statische Daten sind bereits fertig, geschrieben in Form von Dateien, Textfragmenten oder HTML. Solche Daten sind praktisch in dem Fall zu verwenden, in dem Sie in verschiedenen HTML-Dokumenten repetitive Fragmente einfügen können. Dynamisch generierte Daten führen zur Arbeit von CGI-Skripten oder Betriebssystembefehlen, auf denen ein bestimmter Webserver läuft. Die Verwendung dieser Art von Daten bietet dem Web-Entwickler großartige Möglichkeiten. Aber laut der geschwächten russisch-bürgerlichen Werbung: "Vergiss den Orbit nicht ohne Zucker!". Ich meine, erinnern Sie sich an Maßnahmen , um einen sicheren Zugang zu Informationen zu gewährleisten! Eine falsche Verwendung von SSI kann zu einem unbefugten Zugriff auf Informationen und dementsprechend zu verschiedenen schwerwiegenden Konsequenzen führen. .

3.2 Grundlegende SSI-Richtlinien

config verwaltet verschiedene Aspekte der Analyse eines Dokuments. Attribute: errmsg Fehlermeldung, die an den Client zurückgegeben wird, wenn beim Parsen des Dokuments ein Fehler aufgetreten ist. sizefmt legt die Größe der Dateigröße fest (Byte, Kilobyte, Megabyte). timefmt legt das Datum / Uhrzeit-Format fest. echo gibt den Wert einer der folgenden Umgebungsvariablen aus. Attribute: var Der Name der Druckvariablen exec führt den angegebenen Befehl oder das CGI-Skript aus. Attribute: cgi ist angegeben (% -coded) URL-relativer Weg zum CGI-Skript. Wenn die Route nicht mit (/) beginnt, wird angenommen, dass die Route relativ zum aktuellen Dokument angegeben ist.

Das CGI-Skript wird an den Wert der Variablen PATH_INFO und QUERY_STRING der ursprünglichen Clientanforderung übergeben.

Der cmd- Server führt die angegebene Zeichenfolge mithilfe der Betriebssystemshell aus. fsize gibt die Größe der angegebenen Datei in Bezug auf sizefmt aus . Attribute: file gibt den Pfad zur Datei relativ zum aktuellen Verzeichnis mit der analysierten Datei an. virtual ist angegeben (% -coded) URL-relative Route zu der Datei. Wenn die Route nicht mit (/) beginnt, wird angenommen, dass die Route relativ zum aktuellen Dokument angegeben ist. flastmod gibt das Datum / die Uhrzeit der endgültigen Änderung der angegebenen Datei unter Berücksichtigung der Zeitangabe aus . Attribute sind so gut wie der Befehl fsize . include fügt den Text eines anderen Vorgangs oder einer Datei in das analysierte Dokument ein. Es ist sehr nützlich, um Fragmente in verschiedenen Dokumenten zu wiederholen. Attribute: file gibt den Pfad zur Datei nur relativ zum aktuellen Verzeichnis an, das die analysierte Datei enthält. virtual ist angegeben (% -coded) URL-relative Route zu der Datei. Wenn die Route nicht mit (/) beginnt, wird angenommen, dass die Route relativ zum aktuellen Dokument angegeben ist. In Apache können die enthaltenen Dateien verschachtelt sein. printenv gibt eine Liste aller vorhandenen Variablen sowie deren Werte aus. Es gibt keine Attribute. Beispiel:
<!--#printenv --> set legt den Wert der Variablen fest. Attribute: var gibt den Namen der Variablen an, die festgelegt werden soll. Wert gibt den Wert der Variablen an, die gesetzt wird. Beispiel:
<!--#set var="variable_1" value="some_value_of_variable_1" -->

3.3 SSI-Umgebungsvariablen

DOCUMENT_NAME - Dateiname Beschreibung im Hauptteil des Dokuments: <!--#echo var="DOCUMENT_NAME" --> Ergebnis der Verwendung: <! - # echo var = "DOCUMENT_NAME" ->

DOCUMENT_URI - virtueller Pfad zur Datei Beschreibung im Hauptteil des Dokuments: <!--#echo var="DOCUMENT_URI" --> Ergebnis der Verwendung: <! - # echo var = "DOCUMENT_URI" ->

QUERY_STRING_UNESCAPED - Entschlüsselung der Abfragezeichenfolge , wobei allen Shell-Metazeichen vorangestellt wird "\" Beschreibung im Hauptteil des Dokuments: <!--#echo var="QUERY_STRING_UNESCAPED" --> Ergebnis der Verwendung: (keine)

DATE_LOCAL - das aktuelle Datum ist auch die Uhrzeit (lokale) Beschreibung im Hauptteil des Dokuments: <!--#echo var="DATE_LOCAL" --> Ergebnis der Verwendung: <! - # echo var = "DATE_LOCAL" ->

DATE_GMT - aktuelles Datum auch Uhrzeit (GMT) Beschreibung im Hauptteil des Dokuments: <!--#echo var="DATE_GMT" --> Ergebnis der Benutzung: <! - # echo var = "DATE_GMT" ->

LAST_MODIFIED - das Datum ist auch der Zeitpunkt der letzten Änderung der Datei Beschreibung im Hauptteil des Dokuments: <!--#echo var="LAST_MODIFIED" --> Ergebnis der Verwendung: <! - # echo var = "LAST_MODIFIED"

3.4 Konfigurieren des Servers

Um sicherzustellen, dass der Serever in welchem ​​Raum in der Tat wusste, um die Daten zu ersetzen, muss er diesen Akt analysieren. Die vom Server analysierten Dokumente werden als Server-analysierte Dokumente bezeichnet.

Zunächst müssen Sie dem Server mitteilen, welche Dokumente er analysieren muss. Dazu müssen Sie der Konfigurationsdatei folgende Parameter hinzufügen (für Apache sind ältere Versionen der NCSA-Webserver auch die Datei srm.conf , aber für neue Versionen von Apache, zum Beispiel 1.3.4 - httpd.conf ), müssen Sie die folgenden Parameter hinzufügen: Apache-Server:

AddType text / html .shtml &lt;br&gt; AddHandler server-analysierte .shtml

NCSA Server:

AddType text / x-server-analysierte-html .shtml Die angegebenen Parameter drücken alle Dateien mit der Erweiterung aus .shtml werden Server-geparst , auch bevor diese Aktion dem Kunden "gegeben" wird, sollte der Server sie analysieren.

Warum eine separate Erweiterung für Server-analysierte Dokumente angeben ?, fragt der neugierige Leser. Wir antworten. Natürlich stört keine Person das Hinzufügen einer Zeichenfolge zur Konfigurationsdatei

AddType text / x-server-analysierte-html .html Dies führt jedoch dazu, dass der Server alle Dokumente mit einer Erweiterung überprüft .html, Selbst wenn sie keinen SSI-Aufruf haben, wird die Systemlast erhöht, aber die Leistung des Servers sinkt.

Es sollte auch daran erinnert werden, dass es nicht erfolgreich ist, den SSI-Aufruf in das CGI-Programm aufzunehmen, da ihre Schlussfolgerung nicht vom Server analysiert wird.

Weitere Informationen zum Konfigurieren des Servers für die Verwendung von SSI finden Sie in der Dokumentation zu Ihrem Server.

Apps

Anhang 1. Variablen der Serverumgebung

Im Folgenden finden Sie eine Liste der Hauptserver-Umgebungsvariablen mit einer kurzen Beschreibung des Zwecks: In diesem Fall ist der Apache 1.2.5-Server mit dem PHP / FI-2.0.1-Modul. Bei anderen Webservern (MS IIS, Netscape, NCSA httpd usw.) können die Variablen variieren.

REMOTE_HOST - der Name des Hosts, der mit dem Server verbunden ist. Im Falle der Arbeit über einen Proxy, der Name des Proxys.
Beispiel: REMOTE_HOST = lom.pvrr.ru

REMOTE_ADDR - IP-Adresse des mit dem Server verbundenen Hosts. Bei der Arbeit über einen Proxy - die IP-Adresse des Proxy.
Beispiel: REMOTE_ADDR = 194.87.186.11

REMOTE_PORT ist die Portnummer des Clients.
Beispiel: REMOTE_PORT = 3381

HTTP_USER_AGENT - Name / Versionsnummer / usw. Kunde (Browser). Die Verwendung dieser Variablen führt manchmal zur Raserei einzelner Internetnutzer. :) Aber in der Klasse selbst ist eine sehr nützliche Sache. Zum Beispiel, um russische Kodierungen automatisch zu erkennen.
Beispiel: HTTP_USER_AGENT = Mozilla / 4.07 [de] (X11; I; FreeBSD 2.2.6-RELEASE i386)

HTTP_ACCEPT - andere Datentypen als text / html, die vom Client (Browser) wahrgenommen werden
Beispiel: HTTP_ACCEPT = Bild / GIF, Bild / X-XBitmap, Bild / JPEG, Bild / PJPEG, Bild / Png, * / *

HTTP_ACCEPT_CHARSET - welche Charets der Kunde (Browser) versteht.
Beispiel: HTTP_ACCEPT_CHARSET = iso-8859-1, *, utf-8

HTTP_ACCEPT_LANGUAGE - Welche Sprachen werden vom Kunden (Browser) wahrgenommen ?
Beispiel: HTTP_ACCEPT_LANGUAGE = nl, nl-BE, de

* * *

SERVER_NAME ist der Servername, der dem IN A- Eintrag in DNS entspricht, oder der Wert der ServerName- Variablen (oder ähnlich) in der Serverkonfiguration.
Beispiel: SERVER_NAME = arche.pvrr.ru

HTTP_HOST ist der Name des Servers oder des virtuellen Hosts, auf den der Client zugreift. Der Wert HTTP_HOST kann gleich dem Wert von SERVER_NAME sein.
Beispiel: HTTP_HOST = www.pvrr.ru

SERVER_SOFTWARE - welche Software wird als Server verwendet ?
Beispiel: SERVER_SOFTWARE = ​​Apache / 1.2.5 PHP / FI-2.0.1

DOCUMENT_ROOT - route zum "root" des Webservers vom "root" des Dateisystems des Computers, auf dem es läuft.
Beispiel: DOCUMENT_ROOT = / usr / local / www / html

HTTP_CONNECTION ist der Verbindungstyp.
Beispiel: HTTP_CONNECTION = Keep-Alive

SERVER_PROTOCOL ist das Protokoll, das für die Kommunikation mit einem bestimmten Client verwendet wird.
Beispiel: SERVER_PROTOCOL = HTTP / 1.0

REQUEST_URI ist der Name der angeforderten Ressource / des angeforderten Dokuments, der den Pfad vom Stamm des Webservers enthält. Beim Zugriff auf das Server-Root-Verzeichnis oder das Verzeichnis dieser Variablen erhält der Verzeichnisname im Fall des Server-Stammverzeichnisses entweder "/".
Beispiel: REQUEST_URI = / cgi-bin / tralala / script.cgi

DOCUMENT_URI - имя запрашиваемого ресурса/документа, включающее в себя путь от корня веб-сервера. Обычно инициализируется при вызове SSI. В отличие от REQUEST_URI эта переменная, в случае обращения к каталогу либо корню сервера получает значение содержащее также имя файла, являющегося Directory Index'ом этого каталога.
Пример: DOCUMENT_URI=/tralala/index.shtml

HTTP_REFERER - наполненный URL документа, по ссылке с которого вы попали на этот сервер. Данную переменную разрешено использовать при написании счетчиков.
Пример: HTTP_REFERER=http://lom.pvrr.ru/java/cgi/cgi_1.html

GATEWAY_INTERFACE - название/версия интерфейса, чрез какой сервер работает со скриптом.
Пример: GATEWAY_INTERFACE=CGI/1.1

SCRIPT_FILENAME - имя скрипта, содержащее наполненный маршрут от "корня" файловой системы.
Пример:SCRIPT_FILENAME=/usr/local/www/cgi-bin/tralala/script.cgi

SCRIPT_NAME - имя скрипта, содержащее маршрут от "корня" веб-сервера.
Пример: SCRIPT_NAME=/cgi-bin/tralala/script.cgi

REQUEST_METHOD - метод используемый заказчиком для передачи данных серверу. Бывают GET, HEAD, POST, PUT.
Пример: REQUEST_METHOD=GET

QUERY_STRING - этой переменной значение присваивается при передаче данных серверу методом GET
Пример: QUERY_STRING=button=on

CONTENT_LENGTH - этой переменной присваивается значение, равное количеству байт, переданных браузером серверу при использовании метода POST.
Пример: CONTENT_LENGTH=9

REMOTE_USER - имя пользователя. Передается только если аутентифицируется доступ к CGI скрипту.

PATH_INFO - дополнительная информация о маршруту, которую передал клиент. То кушать скрипт может приобретать некоторые параметры, содержащие информауцию о некотором "маршруте" к некоторым данным (например к файлу конфигурации, необходимому для отделки запроса отименно этого клиента). Этот маршрут "виртуальный" - т.е от "корня веб-сервера". Остальные данные разрешено передавать как обычно - методом GET или POST.
Пример: PATH_INFO=/some/path

PATH_TRANSLATED - то бла бла , что также PATH_INFO, только маршрут физический - "от корня файловой системы"

REMOTE_IDENT - Если HTTP сервер поддерживает идентификацию согласно RFC 931, то этой переменной присваивается имя пользователя получаемое от сервера.

SERVER_ADMIN - e-mail правителя веб-сервера.
Пример: SERVER_ADMIN=webmaster@www.pvrr.ru

SERVER_PORT - порт, какой "слушает" веб-сервер.
Пример: SERVER_PORT=80

* * *

HTTP_X_FORWARDED_FOR - в случае труда чрез прокси - IP адрес клиента, работаеющего чрез прокси.
Пример: HTTP_X_FORWARDED_FOR=194.87.186.11

HTTP_VIA - имя, номер порта, разновидность ПО прокси-сервера.
Пример: HTTP_VIA=1.0 proxy1.pvrr.ru:8080 (Squid/2.1.PATCH1)

HTTP_CACHE_CONTROL - что-то связанное с возрастом акта в кэше прокси сервера :) Лгать никак не буду - никак не знаю :)
Пример: HTTP_CACHE_CONTROL=max-age=259200