Common Gateway Interface: Διαφορά μεταξύ των αναθεωρήσεων

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Egmontaz (συζήτηση | συνεισφορές)
i/w
αφαίρεση διαφημιστικής παραπομπής - ολίγο εμπλουτισμός (επεξεργασία με το ProveIt)
Γραμμή 1: Γραμμή 1:
CGI (Common Gateway Interface) είναι μια μέθοδος επέκτασης της λειτουργικότητας του Web Server με την δυνατότητα εκτέλεσης προγραμμάτων ή scripts. Μια κοινή χρήση του CGI είναι π.χ. μια φόρμα παραγγελίας όπου ο χρήστης στέλνει δεδομένα σε ένα CGI script στο server, το script επικοινωνεί με τη βάση δεδομένων και επιστρέφει τα αποτελέσματα πίσω στο χρήστη σε μια σελίδα.<ref group="σ">http://www.aws.gr/knowledgebase.php?action=displayarticle&id=71</ref>
Το '''CGI''' (Common Gateway Interface - μεταφράζεται ως "κοινό περιβάλλον διεπαφής") είναι μια μέθοδος επέκτασης της λειτουργικότητας του [[Εξυπηρετητής|εξυπηρετητής ιστοσελίδων]] (web server) με την δυνατότητα εκτέλεσης προγραμμάτων ή scripts. Μια κοινή χρήση του CGI είναι π.χ. μια φόρμα παραγγελίας όπου ο χρήστης στέλνει δεδομένα σε ένα CGI script στο εξυπηρετητή, το script επικοινωνεί με τη βάση δεδομένων και επιστρέφει τα αποτελέσματα πίσω στο χρήστη σε μια σελίδα. <ref name="w3_cgi">{{cite web | url=http://www.w3.org/CGI/ | title=CGI: Common Gateway Interface | accessdate=2012-04-12 | publisher=World Wide Web Consortium (W3C)}}</ref>

{{πληροφορική-επέκταση}}
Πριν την διάδοση της γλώσσας [[PHP]]/[[MySQL]] για τη δημιουργία δυναμικών ιστοσελίδων ο προγραμματιστής απαιτούσε να προγραμματίσει σε γλώσσα [[C (γλώσσα προγραμματισμού)|C]] ή [[Perl]] σκριπτάκια τα οποία θα εκτελούντα από την ιστοσελίδα δια μέσου της διεπαφής CGI. Αυτά τα εκτελέσιμα προγράμματα δεν ήταν εύκολη υπόθεση να σχεδιαστούν-προγραμματιστούν συγκρίνοντας με το μεταγενέστερο σχεδιασμός δυναμικών ιστοσελίδων χρησιμοποιώντας γλώσσες προγραμματισμού όπως τη [[PHP]]/[[MySQL]]. <ref name="php_mysql_page1_CGI">{{cite book | title=Learning PHP & MySQL | author=Michele E. Davis, Jon A. Phillips | year=August 2007 | publisher=O' Reilly | pages=1 | isbn=978-0-596-51401-3}}</ref>

===Παράδειγμα===
Ο παρακάτω κώδικας CGI σε γλώσσα προγραμματισμού [[Perl]] εμφανίζει όλες τις μεταβλητές που έχει ο εξυπηρετητής:
<syntaxhighlight lang="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";
}
</syntaxhighlight>

* Για παράδειγμα εάν ο [[Web browser|φυλλομετρητής]] ζητήσει από τον [[Εξυπηρετητής|εξυπηρετηκή]] τις μεταβλητές του συστήματος στο <tt><nowiki>http://example.com/cgi-bin/printenv.pl/foo/bar?var1=value1&var2=with%20percent%20encoding</nowiki></tt>, σε ένα 64-bit λειτουργικό [[Microsoft Windows]] με εξυπηρετητή να τρέχει κάτω από [[cygwin]] επιστρέφονται οι παρακάτω πληροφορίες: <small>
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"</small>

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

== Παραπομπές ==
== Παραπομπές ==
{{παραπομπές}}
{{παραπομπές}}
<references group="σ"/>
[[Κατηγορία:Πληροφορική]]


{{ενσωμάτωση κειμένου|en|Common Gateway Interface}}

[[Κατηγορία:Πληροφορική]]


[[ar:واجهة المعابر العامة]]
[[ar:واجهة المعابر العامة]]

Έκδοση από την 17:19, 12 Απριλίου 2012

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