CGI - Common Gateway Interface

   
 
 
 
Notwendige Voraussetzungen
1. Beispiel für CGI-Script ohne Parameterübergabe

 
 
 

<html><head><!-- T--><title>Programmiersprachen C</title></head><body>

<h2>

Programmiersprachen - Ausbildung <p></h2>

<hr>
 
 
 

. . .
 
 
 

<hr>

Ascii Codetabelle über CGI-Script berechnet

<a href ="cgi-bin/a1.cgi">Ascii-CGI</A><p>

<hr>

<h4><a href="a.beck.html">A. Beck</A>, 03.10.1996

</body>

</html>
 
 
 

/* CGI-Beispiel Ascii-Code Tabelle */
 
 
 

#include <stdio.h>
#include <ctype.h>

int main()
{
  int    i,j;

  printf("Content-Type: text/html");
  printf("\n\n")  ;
  /*puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">");*/
  puts("<html><head><title>CGI-Script - ASCII Codetabelle</title></head>\n");
  puts("<body><h2><hr>\n");
  puts("<pre>\n");

  for (i=0; i<4; i++)printf("|dec hex Char ");
  printf("|\n");
  for (i=0; i<32; i ++)
  {
    printf("\n| ");
    for (j=0; j < 128; j += 128/4)
    {
      printf("%3d %2X ",i+j,i+j);
      if (isgraph(j+i))printf("  %c  | ",j+i);
      else printf("  .  | ");
    }
  }
  puts("</pre><hr>");
  puts("<a href=\"http://www.....de/~beck/a.beck.html\">A. Beck</A> <p>");
  puts("</body>\n");
  puts("</html>\n");
  return 0;
}


Erzeugte Ausgabe:

Content-Type: text/html

<html><head><title>CGI-Script - ASCII Codetabelle</title></head>

<body><h2><hr>

<pre>

|dec hex Char |dec hex Char |dec hex Char |dec hex Char |

|   0  0   .  |  32 20   .  |  64 40   @  |  96 60   `  |
|   1  1   .  |  33 21   !  |  65 41   A  |  97 61   a  |
|   2  2   .  |  34 22   "  |  66 42   B  |  98 62   b  |
|   3  3   .  |  35 23   #  |  67 43   C  |  99 63   c  |
|   4  4   .  |  36 24   $  |  68 44   D  | 100 64   d  |
|   5  5   .  |  37 25   %  |  69 45   E  | 101 65   e  |
|   6  6   .  |  38 26   &  |  70 46   F  | 102 66   f  |
|   7  7   .  |  39 27   '  |  71 47   G  | 103 67   g  |
|   8  8   .  |  40 28   (  |  72 48   H  | 104 68   h  |
|   9  9   .  |  41 29   )  |  73 49   I  | 105 69   i  |
|  10  A   .  |  42 2A   *  |  74 4A   J  | 106 6A   j  |
|  11  B   .  |  43 2B   +  |  75 4B   K  | 107 6B   k  |
|  12  C   .  |  44 2C   ,  |  76 4C   L  | 108 6C   l  |
|  13  D   .  |  45 2D   -  |  77 4D   M  | 109 6D   m  |
|  14  E   .  |  46 2E   .  |  78 4E   N  | 110 6E   n  |
|  15  F   .  |  47 2F   /  |  79 4F   O  | 111 6F   o  |
|  16 10   .  |  48 30   0  |  80 50   P  | 112 70   p  |
|  17 11   .  |  49 31   1  |  81 51   Q  | 113 71   q  |
|  18 12   .  |  50 32   2  |  82 52   R  | 114 72   r  |
|  19 13   .  |  51 33   3  |  83 53   S  | 115 73   s  |
|  20 14   .  |  52 34   4  |  84 54   T  | 116 74   t  |
|  21 15   .  |  53 35   5  |  85 55   U  | 117 75   u  |
|  22 16   .  |  54 36   6  |  86 56   V  | 118 76   v  |
|  23 17   .  |  55 37   7  |  87 57   W  | 119 77   w  |
|  24 18   .  |  56 38   8  |  88 58   X  | 120 78   x  |
|  25 19   .  |  57 39   9  |  89 59   Y  | 121 79   y  |
|  26 1A   .  |  58 3A   :  |  90 5A   Z  | 122 7A   z  |
|  27 1B   .  |  59 3B   ;  |  91 5B   [  | 123 7B   {  |
|  28 1C   .  |  60 3C   <  |  92 5C   \  | 124 7C   |  |
|  29 1D   .  |  61 3D   =  |  93 5D   ]  | 125 7D   }  |
|  30 1E   .  |  62 3E   >  |  94 5E   ^  | 126 7E   ~  |
|  31 1F   .  |  63 3F   ?  |  95 5F   _  | 127 7F   .  | </pre><hr>
<a href="http://www.informatik.htw-dresden.de/~beck/a.beck.html">A. Beck</A> <p>
</body>

</html>





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Aufruf


Beispiel mit Parameterübergabe
 

 
 
 
 
char vBuf[1024];

strcpy(vBuf,getenv("QUERY_STRING"));
 
 
 

oder
 
 
 

gets(Param); /* Umlenkung der Standardeingabe */
 
 
 

Umgebungsvariablen
 
 
 

Eine Reihe von Umgebungsvariablen liefern nützliche Informationen, so aucha2.cgi den Zugriff auf übergebene Parameter.
 
 
 

Im folgenden Beispiel die Umgebungsvariablen von www.htw-dresden.de
 
 
 

Die Umgebungsvariablen differieren je nach Server bzw. Serverversion
 
 
env.cgi  

CGI-Script zur Ermittlung der Umgebungsvariablen

#include <stdio.h>

#include <ctype.h>

void main(int argc, char*argv[],char*env[])
{

 char **pEnv=env;

 puts("Content-Type: text/html\n");

 puts("<html><head><title>CGI-Script CGI-Environment</title>");
 puts("</head><body><h2><hr>\n");
 puts("<pre>\n");
 while(*pEnv)
 {
 puts(*pEnv);pEnv++;
 }
 puts("</body></html>");
}

Aufruf:
http://www.htw-dresden.de/~beck/cgi-bin/env.cgi?P1:Max,P2:Moritz

TZ=NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00
DOCUMENT_ROOT=/u/web/doc
HTTP_ACCEPT=image/png, image/*, */*
HTTP_ACCEPT_ENCODING=gzip
HTTP_HOST=www.htw-dresden.de
HTTP_USER_AGENT=Mozilla/3.0 (compatible; StarOffice/5.2;Linux)
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin
REMOTE_ADDR=212.185.244.91
REMOTE_HOST=pd4b9f45b.dip.t-dialin.net
REMOTE_PORT=61197
SCRIPT_FILENAME=/home/rex/fi1/beck/public_html/cgi-bin/env.cgi
SERVER_ADDR=141.56.15.3
SERVER_ADMIN=schreiber@htw-dresden.de
SERVER_NAME=www.htw-dresden.de
SERVER_PORT=80
SERVER_SIGNATURE=Apache/1.3.9 Server atwww.htw-dresden.de Port 80
SERVER_SOFTWARE=Apache/1.3.9 (Unix)
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.0
REQUEST_METHOD=GET
QUERY_STRING=P1:Max,P2:Moritz
REQUEST_URI=/~beck/cgi-bin/env.cgi
SCRIPT_NAME=/~beck/cgi-bin/env.cgi
Forms zur Eingabe von Werten und Steuerung des CGI-Scriptes