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.
Παραπομπές
- ↑ «CGI: Common Gateway Interface». World Wide Web Consortium (W3C). Ανακτήθηκε στις 12 Απριλίου 2012.
- ↑ Michele E. Davis, Jon A. Phillips (Αυγούστου 2007). Learning PHP & MySQL. O' Reilly. σελ. 1. ISBN 978-0-596-51401-3.
![]() ![]() | Στο λήμμα αυτό έχει ενσωματωθεί κείμενο από το λήμμα Common Gateway Interface της Αγγλικής Βικιπαίδειας, η οποία διανέμεται υπό την GNU FDL και την CC-BY-SA 4.0. (ιστορικό/συντάκτες). |