====== CGI-Scripte ======
Folgende Ausführungen zur Erstellung von CGI-Scripten mit TUSCRIPT wurden von - [ schaelkle | schaelkle ] auf dem TUSTEP-Workshop 2012 in Blaubeuren vorgestellt und von - {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}} schneider-lastin leicht verändert ins Wiki übernommen.
----
[[tuscript:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]
----
===== Vorbemerkungen =====
**Common Gateway Interface**\\ 
  * Das Common Gateway Interface (CGI) ist ein **Standard für den Datenaustausch** zwischen einem **Webserver** und dritter Software, die **Anfragen** bearbeitet. Dieser Standard ermöglicht es WWW-Browsern, Programme (Scripte) auf WWW-Servern auszuführen. Mit CGI können **HTML-Seiten dynamisch erstellt** werden, die zur Zeit der Anfrage noch nicht auf dem Server existieren, sondern erst von dem CGI-Script erzeugt werden.
  * Scripte sind in ASCII-Dateien stehende Anweisungsfolgen.
  * Scripte müssen in fest vorgegebenen Verzeichnissen stehen.
  * WWW-Server kann auch der eigene PC sein.
\\ **Aufruf von TUSTEP auf einem WWW-Server**\\ 
  * TUSTEP erwartet bestimmte Informationen in Systemvariablen.
  * Diese Systemvariablen werden mit einem Script definiert.
  * Erst dann wird TUSTEP (unter WINDOWS automatisch) aufgerufen.
\\ **Aufruf eines CGI-Scripts über WWW**\\ //Client://\\ 
  * Browser aufrufen; Servername, Scriptname und evt. Anfragetext eingeben.
  http://servername/cgi-bin/scriptname?anfragetext
  * Browser schickt den Scriptnamen und ggf. den Anfragetext zum Server.
\\ //Server://\\ 
  * Server setzt Systemvariablen und ruft das Script.
  SERVER_NAME, SCRIPT_NAME, QUERY_STRING, ...
  * Script setzt Systemvariablen und ruft TUSTEP.
  TUSTEP_CGI, TUSTEP_DSK, TUSTEP_SCR, ...
  * TUSTEP ruft das mit TUSTEP_CGI vorgegebene Script.
  * Das CGI-Script erzeugt eine HTML-Datei.
  * Server schickt die HTML-Datei zurück.
\\ //Client://\\ 
  * Browser zeigt die HTML-Datei an.
\\ **Script-Aufruf wird vom Server zerlegt**\\  Aufruf des Scripts:\\ 
  http://localhost/cgi-bin/wochentag?TAG=6&MONAT=1&JAHR=2014
Der Server **zerlegt** den Aufruf in drei Teile und **speichert** sie in Systemvariablen.\\  Abfragen der Systemvariablen:\\ 
FETCH server = SERVER_NAME
      server:  localhost
FETCH script = SCRIPT_NAME
      script:  /cgi-bin/wochentag
FETCH query =  QUERY_STRING                 falls METHOD=GET
      query:   TAG=6&MONAT=1&JAHR=2014
FETCH query =  -STD-                        falls METHOD=POST
\\ **Anfragetext muss vom Script zerlegt werden**\\ 
SET liste = DECODE (query, CGI)
    liste:  TAG=6
            MONAT=1
            JAHR=2014
SET tag = GET_VALUE (liste, "TAG")
    tag:  6
SET monat = GET_VALUE (liste, "MONAT")
    monat: 1
SET jahr = GET_VALUE (liste, "JAHR")
    jahr: 2014
\\ 
===== Schritt 1: Einrichten eines Server-Verzeichnisses =====
  #DATEI, server, PROJEKT, c
\\ 
===== Schritt 2: Starten des Servers =====
  #*SERVER
{{files_open:bilder:server.jpg|server.jpg}}\\ \\ 
===== Schritt 3: Einrichten eines CGI-Scripts =====
  #*CGI
→ Datei 'tustep.ini' wird automatisch eingerichtet.\\ {{files_open:bilder:TUSCRIPT_CGI_Script_einrichten.jpg|TUSCRIPT_CGI_Script einrichten.jpg}}\\ \\ 
===== Schritt 4: Aufruf des Scripts =====
  http://localhost/uhrzeit
{{files_open:bilder:tuscript_cgi_script_aufrufen.jpg|TUSCRIPT_CGI_Script aufrufen.jpg}}\\ \\ \\ 
===== Erstellen eines eigenen CGI-Scripts =====
\\  1. Anmelden der Datei 'tustep.ini' und Öffnen der Standard-Editor-Datei\\ 
#ANMELDE, server*tustep.ini, TRAEGER=C
#EDIERE,-std-
2. Schreiben des Scripts in der Standard-Editor-Datei\\ 
$$ MODE TUSCRIPT, {}
FETCH server = SERVER_NAME
FETCH script = SCRIPT_NAME
SET url = "http://{server}{script}"
SET zeit = TIME_3 ()
= $
Uhrzeit
3. Retten des Scripts aus der Standard-Editor-Datei als Segment in die Datei 'tustep.ini'\\ 
  r,server*tustep.ini,uhrzeit
4. Aufruf des Scripts\\ 
  http://localhost/uhrzeit
{{files_open:bilder:tuscript_cgi_script_aufrufen2.jpg|TUSCRIPT_CGI_Script aufrufen2.jpg}}\\ \\ **Wird fortgesetzt.**
----
[[tuscript:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]