Common Gateway Interface

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

Το CGI (Common Gateway Interface - μεταφράζεται ως "κοινή πυλαία διεπαφή ") είναι μια μέθοδος επέκτασης της λειτουργικότητας του εξυπηρετητή ιστοσελίδων (web server) με την δυνατότητα εκτέλεσης προγραμμάτων ή scripts. Μια κοινή χρήση του CGI είναι π.χ. μια φόρμα παραγγελίας όπου ο χρήστης στέλνει δεδομένα σε ένα CGI script στον εξυπηρετητή, το script επικοινωνεί με τη βάση δεδομένων και επιστρέφει τα αποτελέσματα πίσω στο χρήστη σε μια σελίδα. [1]

Πριν την διάδοση της γλώσσας PHP/MySQL για τη δημιουργία δυναμικών ιστοσελίδων, ο προγραμματιστής έπρεπε να προγραμματίσει σε γλώσσα συνήθως C ή Perl μικρά προγράμματα (σενάρια) τα οποία θα εκτελούνταν από την ιστοσελίδα δια μέσου της διεπαφής CGI. Αυτά τα εκτελέσιμα προγράμματα δεν ήταν εύκολη υπόθεση να σχεδιαστούν-προγραμματιστούν σε σύγκριση με τον μεταγενέστερο σχεδιασμό δυναμικών ιστοσελίδων χρησιμοποιώντας γλώσσες προγραμματισμού όπως η PHP/MySQL. [2]

Παράδειγμα[Επεξεργασία | επεξεργασία κώδικα]

Ο παρακάτω κώδικας CGI σε γλώσσα προγραμματισμού Perl εμφανίζει όλες τις μεταβλητές που έχει ο εξυπηρετητής:

 #!/usr/local/bin/perl
 ##
 ##  printenv—demo CGI πρόγραμμα το οποίο τυπώνει τις μεταβλητές του συστήματος
 ##
 #
 print "Content-type: text/plain\n\n";
 foreach $var (sort(keys(%ENV))) {
   $val = $ENV{$var};
   $val =~ s/\n/\\n/g;
   $val =~ s/"/\\"/g;
   print "${var}=\"${val}\"\n";
 }
  • Για παράδειγμα, εάν ο φυλλομετρητής ζητήσει από τον εξυπηρετητή τις μεταβλητές του συστήματος στο http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding, σε ένα 64-bit λειτουργικό Microsoft Windows με εξυπηρετητή να τρέχει κάτω από cygwin επιστρέφονται οι παρακάτω πληροφορίες:
COMSPEC="C:\Windows\system32\cmd.exe"
DOCUMENT_ROOT="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HOME="/home/SYSTEM"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip, deflate"
HTTP_ACCEPT_LANGUAGE="en-us,en;q=0.5"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="example.com"
HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0"
PATH="/home/SYSTEM/bin:/bin:/cygdrive/c/progra~2/php:/cygdrive/c/windows/system32:..."
PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
PATH_INFO="/foo/bar"
PATH_TRANSLATED="C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\foo\bar"
QUERY_STRING="var1=value1&var2=with%20percent%20encoding"
REMOTE_ADDR="127.0.0.1"
REMOTE_PORT="63555"
REQUEST_METHOD="GET"
REQUEST_URI="/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding"
SCRIPT_FILENAME="C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin/printenv.pl"
SCRIPT_NAME="/cgi-bin/printenv.pl"
SERVER_ADDR="127.0.0.1"
SERVER_ADMIN="(server admin's email address)"
SERVER_NAME="127.0.0.1"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.19 (Win32) PHP/5.2.17"
SYSTEMROOT="C:\Windows"
TERM="cygwin"
WINDIR="C:\Windows"

Από τις μεταβλητές περιβάλλοντος, μπορούμε να δούμε ότι ο φυλλομετρητής είναι ο Firefox ο οποίος τρέχει σε λειτουργικό Windows 7 με επεξεργαστή 64bit. Ο εξυπηρετητής είναι ο Apache και το σύστημα προσομοιώνει το λειτουργικό Unix. Το σενάριο CGI ονομάζεται cgi-bin/printenv.pl.

Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. «CGI: Common Gateway Interface». World Wide Web Consortium (W3C). http://www.w3.org/CGI/. Ανακτήθηκε στις 2012-04-12. 
  2. Michele E. Davis, Jon A. Phillips (August 2007). Learning PHP & MySQL. O' Reilly. σελ. 1. ISBN 978-0-596-51401-3. 
Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα Common Gateway Interface της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 3.0. (ιστορικό/συντάκτες).