Co to jest Common Gateway Interface (CGI)?

CGI jest wspólnym interfejsem bramy. Jak sama nazwa mówi, Jest to" wspólny " interfejs bramy dla wszystkiego. To takie banalne i naiwne z nazwy. Czuję, że to zrozumiałem i czułem to za każdym razem, gdy spotkałem to słowo. Ale szczerze mówiąc, nie zrobiłem tego.

Jestem programistą PHP z doświadczeniem w tworzeniu stron internetowych.

User (client) request for page - - - > webserver (- >embedded PHP interpreter) - - - - > skrypt po stronie serwera(PHP) - - - > MySQL Serwer.

Teraz powiedz, że mój skrypt PHP może pobierać wyniki z serwera MySQL i serwera MATLAB i innego serwera.

Więc teraz skrypt PHP jest CGI? Ponieważ jego interfejs między serwerem internetowym i wszystkimi innymi serwerami? Nie wiem. Czasami nazywają CGI, technologię , a innym razem nazywają CGI programem lub innym serwerem.

  • Czym dokładnie jest CGI?

  • O co chodzi z /cgi-bin/*.cgi? O co chodzi? Nie wiem co to jest cgi-bin katalog na serwerze dla. Nie wiem dlaczego mają *.rozszerzenia cgi.

  • Dlaczego Perl zawsze wchodzi w drogę. CGI & Perl (język). Nie wiem też, co jest z tą dwójką. Prawie cały czas słyszę te dwa w połączeniu "CGI & Perl". Ta książka jest kolejnym świetnym przykładem programowania CGI z Perlem . Dlaczego nie "Programowanie CGI z PHP / JSP/ASP"? Nigdy nie widziałem takich rzeczy.

  • Programowanie CGI w C , bardzo mnie myli. " W C "?? Poważnie?? Nie wiem, co powiedzieć. Jestem zdezorientowany. " W C "?? To wszystko zmienia. Program musi być skompilowany i wykonany. To całkowicie zmienia moje spojrzenie na programowanie internetowe. Kiedy kompilować? W jaki sposób program jest wykonywany (ponieważ będzie to kod maszynowy, więc musi być wykonywany jako niezależny proces). Jak komunikuje się z serwerem WWW? IPC? a połączenie ze wszystkimi serwerami (w moim przykładzie MATLAB & MySQL) za pomocą programowania socket? Zgubiłem się!!

  • Ludzie mówią, że CGI jest przestarzały i nie jest już używany. Naprawdę? Jaka jest najnowsza aktualizacja?

Pewnego razu natrafiłem na sytuację, w której musiał dać HTTP PUT request dostęp do serwer WWW (Apache HTTPD). Its a long do tyłu. Z tego co pamiętam to co zrobiłem:

  1. Edytowano plik konfiguracyjny Apache HTTPD, aby przekazać serwerowi www wszystkie HTTP umieścić żądania do niektórych put.php ( musiałem napisać to PHP skrypt)

  2. Zaimplementuj put.php do obsługi żądania (zapisz plik w lokalizacji wspomniane)

Ludzie mówili, że napisałem skrypt CGI. Poważnie, nie miałem pojęcia co rozmawiali o tym.
  • czy naprawdę napisałem skrypt CGI?
Mam nadzieję, że zrozumiałeś, czym jest moje zamieszanie. (Bo sam Nie wiem, gdzie jestem zdezorientowany). Proszę was o jak najprostszą odpowiedź. Naprawdę. nie rozumiem żadnej wymyślnej terminologii technicznej. Przynajmniej nie w tym przypadku.

EDIT:

Znalazłem ten niesamowity tutorial " Programowanie CGI jest proste!"- Samouczek CGI, który wyjaśnia pojęcia w najprostszy możliwy sposób. Po przeczytaniu tego artykułu możesz przeczytać pierwsze kroki z programowaniem CGI w C, aby uzupełnić swoje zrozumienie o rzeczywiste próbki kodu. Dodałem również te linki do tego samouczka do Wikipedii artykuł: http://en.wikipedia.org/wiki/Common_Gateway_Interface

 703
cgi
Author: Avindra Goolcharan, 2010-01-19

12 answers

CGI jest interfejsem, który mówi serwerowi jak przekazywać dane do i z aplikacji. Dokładniej opisuje, w jaki sposób informacje o żądaniu są przekazywane w zmiennych środowiskowych (takich jak typ żądania, zdalny adres IP), jak ciało żądania jest przekazywane przez standardowe wejście i jak odpowiedź jest przekazywana przez standardowe wyjście. Więcej informacji można znaleźć w specyfikacji CGI.

Aby użyć swojego obrazu:

user (client) request for page ---> webserver ---[CGI]----> Server side Program ---> MySQL Server.

Większość jeśli nie wszystkie, webservery mogą być skonfigurowany do wykonywania programu jako 'CGI'. Oznacza to, że serwer WWW, po otrzymaniu żądania, przekaże dane do określonego programu, ustawiając niektóre zmienne środowiskowe i ustawiając parametry za pomocą standardowego wejścia i standardowego wyjścia, aby program wiedział, gdzie i czego szukać.

Główną korzyścią jest to, że można uruchomić dowolny kod wykonywalny z sieci, biorąc pod uwagę, że zarówno serwer WWW, jak i program wiedzą, jak działa CGI. Dlatego można pisać programy internetowe w C lub Bash ze zwykłym serwerem WWW z obsługą CGI. To i to, że większość środowisk programistycznych może łatwo używać standardowych zmiennych wejściowych, wyjściowych i środowiskowych.

W Twoim przypadku najprawdopodobniej użyłeś innego, specyficznego dla PHP, środka komunikacji między twoimi skryptami a serwerem WWW, ten, jak dobrze wspomniałeś w swoim pytaniu, jest wbudowanym interpreterem o nazwie mod_php.

Odpowiadając na twoje pytania:
Czym właściwie jest CGI?

Zobacz powyżej.

O co chodzi z /cgi-bin/*.cgi? Co z tym? Nie wiem Do czego służy ten katalog cgi-bin na serwerze. Nie wiem dlaczego mają *.rozszerzenia cgi.

To tradycyjne miejsce dla programów cgi, wiele webserverów ma ten katalog wstępnie skonfigurowany, aby uruchamiać tam wszystkie binaria jako programy CGI. The .rozszerzenie cgi oznacza plik wykonywalny, który ma działać przez CGI.

Dlaczego Perl zawsze wchodzi sposób. CGI & Perl (język). Nie wiem też, co się z nimi dzieje. Prawie cały czas słyszę te dwa w połączeniu "CGI & Perl". Ta książka jest kolejnym świetnym przykładem programowania CGI z Perlem dlaczego nie "Programowanie CGI z PHP / JSP / ASP". Nigdy nie widziałem takich rzeczy.

Ponieważ Perl jest starożytny (starszy od PHP, JSP i ASP, które powstały, gdy CGI było już stare, Perl istniał, gdy CGI było nowe) i stał się dość znany z tego, że jest bardzo dobrym językiem do serwowania dynamiczne strony WWW poprzez CGI. Obecnie istnieją inne alternatywy do uruchomienia Perla na serwerze, głównie mod_perl .

Programowanie CGI w C to mnie bardzo myli. w C?? Poważnie?? Nie wiem, co powiedzieć. Jestem zdezorientowany. "w C"?? To wszystko zmienia. Program musi być skompilowany i wykonany. To całkowicie zmienia moje spojrzenie na programowanie internetowe. Kiedy kompilować? Jak program jest wykonywany (bo będzie to kod maszynowy, więc musi być wykonywany jako niezależny proces). Jak komunikuje się z serwerem WWW? IPC? a połączenie ze wszystkimi serwerami (w moim przykładzie MATLAB & MySQL) za pomocą programowania socket? Zgubiłem się!!

Raz skompilujesz plik wykonywalny, serwer WWW wykonuje program i przekazuje dane w żądaniu do programu i wypisuje odebraną odpowiedź. CGI określa, że na każde żądanie zostanie uruchomiona jedna instancja programu. To dlatego CGI jest obecnie nieefektywne i przestarzałe.

Mówią, że CGI jest przestarzały. Nie jest już używany. Naprawdę? Jaka jest jego najnowsza aktualizacja?

CGI jest nadal używany, gdy wydajność nie jest najważniejsza i wymagany jest prosty sposób wykonania kodu. Jest on nieefektywny z wcześniej podanych powodów i istnieją bardziej nowoczesne sposoby wykonywania dowolnego programu w środowisku sieciowym. Obecnie najbardziej znanym jest FastCGI .

 398
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-10 00:04:47
Czym właściwie jest CGI?

Oznacza, że serwer WWW pobiera dane z programu (zamiast, na przykład, pliku).

O co chodzi z /cgi-bin/*.cgi?

Nic wielkiego. To tylko zjazd.
Nie wiem Do czego służy ten katalog cgi-bin na serwerze. Nie wiem dlaczego mają *.rozszerzenia cgi.

Serwer musi wiedzieć, co zrobić z plikiem (tzn. traktować go jako program do wykonania zamiast czegoś po prostu podać). Posiadanie .rozszerzenie html mówi mu, aby używał typu tekst / zawartość html. Posiadanie .rozszerzenie cgi mówi mu, aby uruchamiał go jako program.

Przechowywanie plików wykonywalnych w osobnym katalogu daje dodatkową ochronę przed wykonywaniem nieprawidłowych plików i / lub serwowaniem programów CGI jako surowych danych w przypadku, gdy serwer zostanie źle skonfigurowany.

Dlaczego Perl zawsze wchodzi w drogę.

Nie. Perl był po prostu duży i popularny w tym samym czas jako CGI.

Nie używałem Perla CGI od lat. Używałem mod_perl przez długi czas, i tendencję do PSGI / Plack z FastCGI te dni.

Ta książka jest kolejnym świetnym przykładem programowania CGI z Perlem Dlaczego nie "Programowanie CGI z PHP / JSP/ASP".

CGI nie jest zbyt wydajny. Lepsze metody rozmowy z programami z webserverów pojawiły się mniej więcej w tym samym czasie co PHP. JSP i ASP to różne metody rozmowy z programy.

Programowanie CGI w C to mnie bardzo myli. w C?? Poważnie??

Jest to język programowania, dlaczego nie?

Kiedy kompilować?

  1. napisz kod
  2. Compile
  3. Access URL
  4. Webserver uruchamia program

Jak program jest wykonywany (ponieważ będzie to kod maszynowy, więc musi być wykonywany jako niezależny proces).

Nie musi być wykonywana jako niezależny proces (można pisać Moduły Apache w C), ale cała koncepcja CGI polega na tym, że uruchamia zewnętrzny proces.

Jak komunikuje się z serwerem WWW? IPC?

STDIN/STDOUT i zmienne środowiskowe-zgodnie ze specyfikacją CGI.

I współdziałanie ze wszystkimi serwerami (w moim przykładzie MATLAB & MySQL) za pomocą socket programowanie?

Używając dowolnych metod, które lubisz i które są obsługiwane.

Oni powiedzmy, że CGI jest zamortyzowane. Nie jest już używany. Naprawdę?

CGI jest nieefektywne, powolne i proste. Jest rzadko używany, gdy jest używany, to dlatego, że jest prosty. Jeśli wydajność nie jest wielka, to prostota jest wiele warta.

Jaka jest jego najnowsza aktualizacja?

1.1

 60
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-01 09:59:18

CGI jest specyfikacją interfejsu pomiędzy serwerem WWW (serwerem HTTP) a programem wykonywalnym jakiegoś typu, który ma obsługiwać określone żądanie.

Opisuje, w jaki sposób pewne właściwości tego żądania powinny zostać przekazane do środowiska tego programu i jak program powinien przekazać odpowiedź z powrotem do serwera oraz jak serwer powinien "wypełnić" odpowiedź, aby utworzyć poprawną odpowiedź na pierwotne żądanie HTTP.

Przez jakiś czas CGI było Internetem IETF Projekt i jako taki miał datę wygaśnięcia. Wygasł bez aktualizacji, więc nie było "standardu" CGI. Jest to obecnie informacyjny RFC, ale jako takie dokumenty powszechną praktyką i nie jest standardem samym w sobie. rfc3875.txt, rfc3875html

Programy implementujące interfejs CGI mogą być napisane w dowolnym języku uruchomionym na docelowej maszynie. Muszą mieć dostęp do zmiennych środowiskowych i zazwyczaj standardowe wejście i generują swoje wyjście na standardowe wyjście.

Skompilowane języki, takie jak C, były powszechnie używane, podobnie jak języki skryptowe, takie jak perl, często używając bibliotek, aby ułatwić dostęp do środowiska CGI.

Jedną z dużych wad CGI jest to, że nowy program jest generowany dla każdego żądania, więc utrzymywanie stanu między żądaniami może być poważnym problemem z wydajnością. Stan może być obsługiwany w plikach cookie lub zakodowany w adresie URL, ale jeśli się powiększy, musi być przechowywany w innym miejscu i kluczowany z zakodowane informacje url lub plik cookie. Każde wywołanie CGI musiałoby ponownie załadować zapisany stan z jakiegoś sklepu.

Z tego powodu, a także ze względu na bardzo prosty interfejs do żądań i sesji, znacznie popularniejsze są lepiej zintegrowane środowiska między serwerami WWW i aplikacjami. Środowiska takie jak nowoczesna implementacja php z apache znacznie lepiej integrują język docelowy z serwerem WWW i zapewniają dostęp do obiektów żądań i sesji, które są potrzebne do efektywnie obsługuj żądania http. Oferują one znacznie łatwiejszy i bogatszy sposób pisania "programów" do obsługi żądań HTTP.

To, czy napisałeś skrypt CGI, zależy raczej od interpretacji. Z pewnością spełniło to zadanie, ale znacznie bardziej powszechne jest uruchamianie php jako modułu, w którym interfejs między skryptem a serwerem nie jest ściśle interfejsem CGI.

 40
Author: CB Bailey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 06:06:58

CGI jest określone wRFC 3875 , choć jest to późniejsza "oficjalna" kodyfikacja oryginalnegodokumentu NCSA . Zasadniczo CGI definiuje protokół przekazywania danych o żądaniu HTTP z serwera www do programu do przetworzenia-dowolnego programu, w dowolnym języku. W momencie pisania specyfikacji (1993), większość serwerów internetowych zawierała tylko statyczne strony, "aplikacje internetowe" były rzadką i nową rzeczą, więc wydawało się naturalne, aby trzymać je z dala od" normalnej " statycznej zawartości, takiej jak w cgi-bin katalog poza zawartością statyczną, a kończący się .cgi.

W tym czasie nie było tu również dedykowanych "języków programowania internetowego", takich jak PHP, A C było dominującym przenośnym językiem programowania - tak wielu ludzi pisało swoje skrypty CGI w C. Ale Perl szybko okazał się lepiej pasujący do tego typu rzeczy, a CGI stał się niemal synonimem Perla na jakiś czas. Potem pojawiły się serwlety Javy, PHP i kilka innych i przejęły dużą część rynku Perla podziel się.

 17
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 21:27:52

Spójrz na CGI w Wikipedii. CGI jest protokołem pomiędzy serwerem WWW a zewnętrznym programem lub skryptem, który obsługuje wejście i generuje wyjście, które jest wysyłane do przeglądarki.

CGI jest po prostu sposobem na serwer WWW i program do komunikacji, nic więcej, nic mniej. Tutaj serwer zarządza połączeniem sieciowym i protokołem HTTP, a program obsługuje wejście i generuje wyjście, które jest wysyłane do przeglądarki. Skrypt CGI może być w zasadzie dowolnym program, który może być uruchamiany przez serwer WWW i postępuje zgodnie z protokołem CGI. Tak więc program CGI może być zaimplementowany na przykład w C. Jest to jednak niezwykle rzadkie, ponieważ C nie jest zbyt dobrze przystosowany do tego zadania.

/cgi-bin/*.cgi to po prostu ścieżka, na której ludzie często umieszczają swój skrypt CGI. Serwer WWW jest domyślnie skonfigurowany do pobierania skryptów CGI z tej ścieżki.

Skrypt CGI może być zaimplementowany również w PHP, ale wszystkie programy PHP nie są skryptami CGI. Jeśli webserver ma wbudowany interpreter PHP( np. mod_php w Apache), wtedy Faza CGI jest pomijana przez bardziej wydajny protokół bezpośredni pomiędzy serwerem WWW a interpreterem.

To, czy zaimplementowałeś skrypt CGI, czy nie, zależy od tego, jak Twój skrypt jest wykonywany przez serwer WWW.

 13
Author: Juha Syrjälä,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 21:30:14

CGI jest mechanizmem, w którym zewnętrzny program jest wywoływany przez serwer WWW w celu obsługi żądania, przy czym zmienne środowiskowe i standardowe dane wejściowe są używane do przekazywania danych żądania do programu. Dokładny język, w którym jest napisany zewnętrzny program, nie ma znaczenia, chociaż łatwiej jest pisać programy CGI w niektórych językach w porównaniu z innymi.

Ponieważ skrypty CGI wymagają uprawnień do wykonywania, httpd domyślnie zezwala tylko na uruchamianie programów CGI w katalogu cgi-bin dla (prawdopodobnie teraz błędnie) celów bezpieczeństwa.

Większość skryptów PHP uruchamianych w procesie serwera www poprzez mod_php. To nie jest CGI.

CGI jest wolne, ponieważ program (i powiązany interpreter) muszą być uruchamiane na żądanie. Nowoczesne alternatywy to implementacja wbudowana, używana przez mod_php, oraz długotrwałe procesy, używane przez FastCGI. Dany język może mieć swój własny sposób implementacji tych mechanizmów, więc pamiętaj, aby popytać przed skorzystaniem z CGI.

 11
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 21:27:17

CGI zasadniczo przekazuje żądanie do dowolnego interpretera skonfigurowanego z serwerem WWW - może to być Perl, Python, PHP, Ruby, C praktycznie wszystko. Perl był najczęstszym w tamtych czasach, dlatego często widzisz go w odniesieniu do CGI.

CGI nie jest martwy. W rzeczywistości większość dużych firm hostingowych uruchamia PHP jako CGI w przeciwieństwie do mod_php, ponieważ oferuje konfigurację na poziomie użytkownika i kilka innych rzeczy, gdy jest wolniejszy niż mod_php. Ruby i Python są również zazwyczaj Uruchom jako CGI. kluczowa różnica polega na tym, że moduł serwera działa jako część rzeczywistego oprogramowania serwera-gdzie jak w przypadku CGI jego całkowicie poza serwerem, serwer po prostu używa modułu CGI do określenia, jak przekazać i odebrać dane do zewnętrznego interpretera.

 11
Author: prodigitalson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-01 02:22:59

Może chcesz wiedzieć, co nie jest CGI, a odpowiedzią jest moduł dla Twojego serwera www(jeśli przypuszczam, że jesteś uruchomiony Apache). I to jest wielka różnica, ponieważ CGI potrzebuje zewnętrznego programu, wątku, cokolwiek, aby utworzyć instancję serwera aplikacji PERL, PHP, C, gdzie gdy uruchomisz jako moduł, ten program jest serwerem WWW (apache) per-se.

Z powodu tego wszystkiego pojawia się wiele problemów z wydajnością, bezpieczeństwem i przenośnością. Ale dobrze jest najpierw wiedzieć, co nie jest CGI, aby zrozumieć, co to jest.

 7
Author: denica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 07:06:22

Prawdziwy przykład: skomplikowana baza danych, która musi być pokazana na stronie internetowej. Ponieważ baza została zaprojektowana gdzieś około 1986 roku (!), wiele danych zostało spakowanych na różne sposoby, aby zaoszczędzić miejsce na dysku.

W miarę rozwoju programiści nie mogli już rozwiązywać skomplikowanych żądań danych w SQL, na przykład dlatego, że algorytmy sortowania były nietypowe.

Istnieją trzy sensowne rozwiązania:

  1. szybkie i brudne: wyślij niesortowane dane do PHP, posortuj to tam. Oczywiście bardzo drogie rozwiązanie, ponieważ będzie to powtarzane za każdym razem, gdy strona zostanie wywołana
  2. napisz plugin do silnika bazy danych -- ale admin nie był gotowy, aby pozwolić obcemu kodowi na uruchomienie na swoim serwerze, lub
  3. możesz przetwarzać dane w programie (C, Perl, itp.), oraz output HTML. Sam program wchodzi do /cgi-bin i jest wywoływany przez serwer WWW (np. Apache) bezpośrednio, a nie przez PHP.

CGI uruchamia Twój skrypt w rozwiązaniu # 3 i wyświetla efekt w przeglądarce. Masz szybkość skompilowanego programu, elastyczność języka lepszą niż SQL i nie musisz pisać wtyczek do serwera SQL. (Ponownie, jest to przykład specyficzny dla SQL i C)

 6
Author: Michał Leon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-18 19:25:34

CGI to program (lub Web API), który piszesz i zapisujesz na serwerze WWW. CGI to plik.

Ten plik siedzi i czeka na serwerze WWW. Gdy przeglądarka klienta wysyła żądanie do serwera www w celu wykonania pliku CGI, serwer WWW uruchamia plik CGI na stronie serwera. Dane wejściowe dla tego programu CGI, jeśli istnieją, pochodzą z przeglądarki klienta. Wyjścia tego programu CGI są wysyłane do przeglądarki.

Jakiego języka używasz do pisania programu CGI? Inne posty już wspomnieć c, java, php, perl, itp.

 5
Author: Loc Pham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-23 00:56:07

Skrypt CGI jest programem konsoli / powłoki. W systemie Windows, gdy używasz Okna "Wiersz polecenia", uruchamiasz programy konsolowe. Gdy serwer WWW wykonuje skrypt CGI, dostarcza dane wejściowe do programu konsoli / powłoki przy użyciu zmiennych środowiskowych lub "standard input". Standardowe wejście jest jak wpisywanie danych do programu konsoli/powłoki; w przypadku skryptu CGI, wpisywanie odbywa się na serwerze WWW. Skrypt CGI zapisuje dane na "standardowe wyjście" i to wyjście jest wysyłane do klienta (WWW przeglądarka) jako strona HTML. Standardowe wyjście jest podobne do wyjścia, które widzisz w programie konsoli / powłoki, z wyjątkiem tego, że serwer WWW odczytuje je i wysyła.

Skrypt CGI może być uruchamiany z przeglądarki. URI zazwyczaj zawiera ciąg zapytania dostarczany do skryptu CGI. Jeżeli metoda jest "get", to łańcuch zapytania jest dostarczany do skryptu CGI w zmiennej środowiskowej o nazwie QUERY_STRING. Jeżeli metodą jest "post", wtedy łańcuch zapytania zostanie dostarczony do skryptu CGI przy użyciu standardowego wejścia (skrypt CGI odczytuje łańcuch zapytania ze standardowego wejścia).

Wczesnym zastosowaniem skryptów CGI było przetwarzanie formularzy. Na początku HTML, formularze HTML zazwyczaj miały atrybut "action" i przycisk oznaczony jako przycisk "submit". Po naciśnięciu przycisku Wyślij URI określony w atrybucie "action" zostanie wysłany do serwera z danymi z formularza wysłanymi jako ciąg zapytania. Jeśli "akcja" określa skrypt CGI, to skrypt CGI zostanie wykonany i wygeneruje strona HTML.

RFC 3875 "the Common Gateway Interface (CGI)" częściowo definiuje CGI używając C, jak mówiąc, że zmienne środowiskowe "są dostępne za pomocą funkcji getenv() lub zmiennej environ biblioteki C".

Jeśli tworzysz skrypt CGI przy użyciu C / C++ i używasz do tego Microsoft Visual Studio, to tworzysz program konsolowy.

 5
Author: user34660,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-20 23:53:18

Idea CGI polega na tym, że program/skrypt (czy to Perl, czy nawet C) odbiera dane wejściowe przez STDIN (dane żądania) i wysyła dane przez stdout (echo, instrukcje printf). Powodem, dla którego większość skryptów php się nie kwalifikuje, jest to, że są uruchamiane pod modułem PHP Apache.

 4
Author: Nathan Osman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 21:28:24