Skrypty CGI: co to jest, sposoby na jego stworzenie

CGI to skrót od Common Gateway Interface. Jest to tak zwany mały program, który oferuje niezawodny sposób interakcji serwerów sieciowych w przeglądarce, wykonując te metody, które były niemożliwe w HTML. Większość skryptów CGI jest napisanych w Perlu. Jest to zwykły język programowania używany do tworzenia skryptów po stronie serwera ze standardowym plikiem tekstowym z rozszerzeniem (.cgi).

Podstawowe warunki programu

Przed użyciem skryptów CGI użytkownik musi zweryfikować, czy witryna jest obsługiwana przez tę witrynę, i określić, czy programista ma uprawnienia do korzystania ze skryptu. Niektóre hosty na to nie zezwalają. Jeśli programista strony zobaczy folder CGI-bin podczas pobierania plików HTML, może używać skryptów GCI.


Niektóre hosty zażądają funkcji bin CGI, ponieważ nie zawsze jest ona domyślnie dostarczana. Inni gospodarze mogą testować i zatwierdzać skrypty przed udzieleniem pozwolenia na korzystanie ze skryptów CGI. Jeśli programista nie potrzebuje edycji, nadal potrzebuje edytora tekstów, aby napisać skrypt dla żądań witryny. Niezależnie od tego, który edytor ma być używany, ważne jest, aby zapisać plik jako zwykły tekst. Ponadto będziesz potrzebować programu FTP dostarczanego z komercyjną wersją Pro lub darmową wersją Lite. Każda opcja działa tak długo, jak ładuje się w trybie ASCII, aby pomóc ci przejść przez instalację, ponieważ tworzenie skryptów CGI możezająć dużo czasu.


Konfiguracja i instalacja

Jeśli użytkownik ma bufor CGI, istnieje duża szansa na uruchomienie skryptu CGI. W celu prawidłowej instalacji zaleca się przejrzenie strony z typowymi problemami hosta sieciowego, panelu sterowania lokacją, dokumentami pomocniczymi lub komunikatem instalacyjnym. Jednym z najczęstszych błędów webmastera jest instalowanie skryptów CGI o niewłaściwej ścieżce. Jeśli istnieje już otwarty skrypt do użycia, ścieżka musi być poprawna, w przeciwnym razie serwer nie będzie działał. Dopóki skrypt się otworzy, sprawdź informację zwrotną dla zmiennych, które wymagają instalacji i komentarze w tym wierszu zaczynające się od "#". Po określeniu skryptu serwera można rozpocząć pobieranie. Należy to zrobić w trybie ASCII, ponieważ prosty skrypt CGI jest plikiem tekstowym. Technicznie, skrypty mogą być wykonywane z dowolnego katalogu, ale większość hostów pozwala na wykonanie tego tylko z CGI-bin. Ważne jest również użycie poprawnego uprawnienia do plików, które używają skryptu CGI.

Uprawnienia do pliku

Istnieją trzy rodzaje dostępu do danych z trzema różnymi uprawnieniami dla każdej grupy.
Serwery uniksowe umożliwiają ustawienie różnych poziomów dostępu. Ważne jest, aby wiedzieć, jakie uprawnienia skrypt posiada:
  • Grupa - składa się z dodanych użytkowników na serwerze. W razie konieczności będą mogli usunąć ich pozwolenie.
  • Użytkownik - składa się tylko z właściciela pliku w grupie, jest to konto hostingowe.
  • Kolejna grupa składa się z wszystkich innych aspektów na serwerze.
  • Czytanie - pozwala użytkownikom czytać i rozumieć dane określone w pliku.
  • Uprawnienia do zapisu i zapisu pozwolą użytkownikom odszyfrować i napisać nową datę, usunąć stare dane z archiwum.
  • Execute - uprawnienie do wykonania, zezwala na wysyłanie pliku tylko wtedy, gdy wykonywany jest program lub skrypt Upload CGI exe. Wstępne potwierdzenie, że skrypt będzie działał przed linkiem w trybie publicznym.
  • Przykład zastosowania aplikacji

    CGI - Program upraszcza tworzenie kompleksu, wysoką wydajność aplikacji internetowych wielokrotnego wykonywania wpis projektowanie i rozwój projektów internetowych. Zasadne jest zastosowanie nowoczesnych technologii i metod związanych deweloper z dowolnym systemem operacyjnym Toolkit lub serwera.
    posiada lekki (pod względem wykorzystania pamięci), co sprawia, że ​​nadaje się do warunków normalnych CGI, a wybór wysokowydajnych stałych nośnikach, takich jak FastCGI lub mod_perla. Dodawanie wtyczek z rosnących potrzeb, można korzystać z zaawansowanych funkcji, gdy są one potrzebne, na przykład, trzeba napisać wniosek o przeszukiwaniu bazy widżetów. Skrypt instancji jest tym, co użytkownik faktycznie wywołuje na serwerze WWW. Jest to bardzo mały prosty plik, który po prostu tworzy instancję interfejsu programu i wywołuje dziedziczoną metodę run (). Poniżej znajduje się pełny opis «widgetview.cgi»: #! /Usr /bin /perl -wuse WidgetView mój $ webapp = WidgetView- & gt; new () $ webapp- & gt; run () Jak widać, po prostu korzysta stosowane widgetview.cgi Moduł implementujący pakietPerl nazywa się WidgetView.pm. Aplikacja CGI dba o implementację metod new () i run (). W takim przypadku użytkownik nigdy nie powinien wywoływać print (), aby wysłać wynik do STDOUT. Zamiast tego cały wynik zwraca się jako skalar.
    CGI jest najbardziej znaczącym wkładem w zarządzanie stanem wniosku. Wszystko, co jest konieczne, aby rozwinąć program, to ustawić wartość parametru formularza HTML "rm" na wartość trybu wykonania, która ma zostać przetworzona przez wysłanie formularza. To jest klucz do aplikacji CGI.

    Metody pisania scen

    Za pomocą aplikacji CGI użytkownik uzyskuje dostęp do wielu wbudowanych metod. Poniżej wymienione są te, które są wywoływane ze skryptu. Metoda new () jest konstruktorem dla CGI. Zwraca łącze do pakietu aplikacji (klasy). Może przyjmować zestaw parametrów jako pary: klucz = & gt; znaczenie.
    Ta metoda może przyjmować określone parametry:
  • TMPL_PATH - Określa ścieżkę do katalogu szablonów.
  • QUERY - pozwala określić już utworzony obiekt żądania CGI.pm.
  • PARAMS - ten parametr pozwala ustawić liczbę modyfikowalnych trybów podczas wykonywania. Przekazując różne wartości w różnych skryptach instancji korzystających z tego samego modułu programu, można osiągnąć wyższy poziom ponownego wykorzystania.
  • Funkcja Run () jest wywoływana do obiektu Application Module ze skryptu. Podczas wywoływania wykonuje funkcjonalność interfejsu modułu aplikacji.

    Ta metoda najpierw określa stan aplikacji, patrząc na wartość parametru CGI określoną przez parametr mode_param (). Domyślnie "rm" dla "Run Mode", który będzie zawierał nazwę trybu działania. Jeślinie jest określony, stan domyślny jest równa start_mode (). Po określonym trybie uruchomienia () skanuje tablicy przydziału przechowywane w run_modes () i znajduje się wskaźnik funkcji, która jest wprowadzana wraz z nazwą systemu. Jeżeli znalezione, funkcja jest wywoływana i wrócił drukuj dane () „ed wysyłane do STDOUT w przeglądarce. Jeśli określony tryb nie zostanie znaleziony w run_modes stołowych () run () rechot ().

    Wsparcie PSGI

    Aplikacja oferuje wbudowaną obsługę PSGI. Domyślną zapytanie do obiektu to: psgi_app () $ psgi_coderef = WebApp- & gt; psgi_app ({args do new ()}) Najprostszym sposobem - aby utworzyć i powrotu PSGI - kompatybilny coderef. Musisz przekazać argumenty do hashref w taki sam sposób jak nowy. Zwraca kodereref zgodny z PSGI, używając CGI ::: PSGI jako obiektu zapytania. Aby użyć innego zapytania obiektu, tworzyć własne run_as_psgi Object (), jak pokazano poniżej: run_as_psgi () Mój $ psgi_aref = $ webapp- & gt; run_as_psgi Podobnie jak biegać, druk, struktura nie wyświetla i nie zwraca dane , wymagane przez specyfikację PSGI. Użyj go jeśli trzeba uruchomić aplikację na top procedury obsługi kompatybilnego PSGI np Plack. Wynik końcowy może wyglądać następująco:
    W opisie pozwala PSGI powrócić do procedury deskryptora pliku lub związek zamiast łańcuchów bajtów. W trybie PSGI jest obsługiwany bezpośrednio przez aplikację CGI.

    możliwe ponowne określenie metody

    CGI realizuje kilka metod, które jak się oczekuje, są zastępowane przez ich moduły wykonawcze podklasy. Metody te są następujące:
  • Ustawienia (). Metoda ta jest wywoływana przez odziedziczonej konstruktora new ().
  • Aby zdefiniować następną właściwość metod, należy użyć metody setup ().
  • Metoda setup () może wywoływać dowolne wystąpienia niestandardowej instancji aplikacji. Ta funkcja jest dobrym miejscem do określenia właściwości specyficznych dla programu za pomocą $ webapp- & gt; param () Metoda setup () może zostać zaimplementowana jako obraz poniżej:
    Jednakże, często wszystko, co musi być setup (), definiuje AutoRunmode trybów uruchomienia, który pozwala zrobić to z prostej składni przy użyciu atrybutów tryb uruchomieniu. Metoda Teardown (). Jeśli jest zaimplementowana, jest wywoływana automatycznie po utworzeniu skryptów CGI i uruchomieniu programu. Może być używany do czyszczenia po operacji. Korzystanie z typową przerywaniem () - wyłącza połączyć się z bazą danych, który został zainstalowany w konfiguracji opcji (). Można również skorzystać z przerywaniem () w celu przechowywania informacji o programie państwowej na serwerze: cgiapp_init ().

    Wysyłanie netto URI uruchomić tryby

    Współczesne ramy web zrobić bez ograniczeń URI, zamiast dostarczania URI Czystość: Czyste /cgi-bin/item.cgi?rm=view&id=15 URI do opisania i inne ten sam zasób może być: /item /15 /view. Proces dopasowywania URI uruchomić nazywa tryby dyspozytorskich i przetwarzane CGI :: Application :: wysyłki. Nie jest wymagany żaden dodatkowy menedżer. Można pracować nad projektem CGI :: aplikacji na pulpicie lub laptopa bez konieczności instalowania w pełni funkcjonalny serwer WWW, takich jak Apache. Zamiast tego zainstaluj CGI :: Application :: Server z CPAN. Po instalacji użytkownik będzie po kilku minutachwłasny serwer aplikacji. Przeprowadzaj automatyczne testy. Test :: WWW :: Mechanize :: CGIApp pozwala na przeprowadzanie testów funkcjonalnych aplikacji CGI :: App bez uruchamiania serwera WWW. Test :: WWW :: Mechanize może być użyty do sprawdzenia poprawności programu za pośrednictwem tego serwera. Bezpośrednie testowanie jest również łatwe. CGI - Program zazwyczaj drukuje dane wyjściowe z jego trybów pracy w STDOUT. Można to wyłączyć za pomocą zmiennej środowiskowej CGI_APP_RETURN_ONLY. Aplikacja ma architekturę wtyczek, która jest łatwa w użyciu i rozwija nowe wtyczki.

    Interfejs treści CGI

    Był to pierwszy zestaw specyfikacji do tworzenia dynamicznych treści na serwerze internetowym. Treści CGI dostarczane użytkownikom nie są statycznym kodem HTML odczytanym z pliku na serwerze. Jest to dynamiczna zawartość utworzona w skrypcie, który może wyodrębnić informacje z bazy danych, dostosować zawartość do typu przeglądarki, zapytuje, czy jest to nowy użytkownik, czy nie. PHP to język zaprojektowany specjalnie do implementacji dynamicznej zawartości na serwerach internetowych. Dzięki temu znacznie łatwiej jest tworzyć skrypty CGI w PHP niż w innych językach. Gdy serwer rozpoczyna wykonywanie, dostarcza wszystkich potrzebnych informacji kontekstowych:
  • Pełne informacje dotyczące zapytań, w tym nazwa /adres IP hosta zdalnego, żądany adres URL i jego argumenty, ciąg zapytania (jeśli taki istnieje).
  • Pliki cookie związane z wnioskiem.
  • W przypadku żądania POST, w wyniku wysłania formularzy internetowych, nazw i wartości parametrów.
  • Podstawowy przykład skryptu PHP

    Skrypt musi wykonać proces, a następnie wyświetlić poprawny kod HTML, w tymNagłówki HTTP. Przykładowy skrypt PHP:
    W tym skrypcie, pierwsza i ostatnia linia to HTML, a oferty PHP są zawarte w znacznikach, a następnie otrzymują skrypt z przeglądarki, dodając ciąg zapytania o dwóch argumentach: data1 i data2. Oprócz zmiennej globalnej $ _SERVER w skrypcie dostępne są następujące tablice asocjacyjne uruchamiania skryptów CGI:
  • $ _GET - nazwy i wartości argumentów przekazanych do serwera dla żądania GET.
  • $ _POST - nazwy i wartości parametrów wysyłanych do serwera w żądaniu POST, podczas wysyłania formularza.
  • $ _COOKIE - Nazwy i wartości plików cookie dołączonych do żądania.
  • $ _REQUEST - wszystkie pozycje w $ _GET, $ _POST i $ _COOKIEnpm za uruchamianie skryptów php od nodejs przez cgi. Ten moduł został zaprojektowany dla deskrypcji w celu zapewnienia niezakłóconego przetwarzania skryptów php.
  • Biorąc pod uwagę, że programista otrzymuje żądanie w nodejs i ma obiekt żądania o nazwie req i obiekt o nazwie res, musi on użyć tego modułu w następujący sposób:
    Zatem żądanie dla pliku /test.php będzie pasować do modułu php dla skryptów CGI. Funkcja paramsForRestest odczytuje obiekt zapytania i ustawia poprawne zmienne środowiskowe cgi dla zapytania. Jest to dostarczane jako osobna funkcja, więc w razie potrzeby możesz dodać dodatkowe zmienne zapytania. Funkcja detectBinary w systemie windows szuka dodatkowego modułu strony php-bin-win32 ", który zapewnia przenośny plik php. Ten kod działa dla deskshell i jeśli jest konieczny do użycia go do jakichkolwiek innych celów i dodatkowych funkcji.

    Pierwszy program

    Aby napisać prosty program CGI w Perlu, zgodnie z tradycją, należy użyć frazy "hello world". Oto onaprzedstawione w całości. Przechowywać go w pliku o nazwie «cześć» w katalogu cgi-bin i uruchom go poprzez podanie adresu URL: localhost /cgi-bin /hello w przeglądarce. Użytkownik powinien zobaczyć tekst "Witaj świecie" w przeglądarce. Jeśli nie, nauczyć się sekcja boxout do debugowania CGI, o pomoc w poprawie problem. To jest prosty program. Istnieje tylko kilka rzeczy, które odróżniają rozwój skryptów CGI Perl z linii poleceń programu standardowego zapuskayuscheysya. Pierwszym z nich jest opcja -T na linii Shebang. To przekłada Perla na tryb "taint". W tym trybie, Perl automatycznie ignorować żadnych danych pochodzących od użytkownika, a nie przekazuje te dane do systemu operacyjnego, dopóki nie zostaną usunięte. W tym sensie tryb skazy jest dobrym pomysłem. Drugą różnicą jest dodanie linii, która drukuje nagłówek treści. Będzie to pierwsza próbka użytkownika z protokołem CGI. Wszystko program CGI muszą zawierać zestaw nagłówków w przeglądarce użytkownika. W większości przypadków jedynym zwracanym nagłówkiem jest treść. To powie przeglądarce, jakie dane wysyła program. W tym przykładzie zwraca zwykły tekst jako rodzaj treści «text /plain». Zwykle powrót HTML, ponieważ typ zawartości będzie «text /html». Nie ma powodów do programu nie może wrócić do bardziej złożonych danych, takich jak PNG («image /png»). Zestaw nagłówków powinny być oddzielone od danych rzeczywistych pustej linii. Osiąga się to poprzez drukowanie dwa przełamane po ostatecznych skryptów CGI tytuł serveri.Takozh podkreślają, że program rejestrujewyjście do STDOUT. Serwer internetowy zostanie zorganizowany w celu zebrania wszelkich danych zapisanych w STDOUT i przeniesienia ich z powrotem do przeglądarki. Poprzedni przykład tak naprawdę nic nie zrobił. Nie trzeba mieć programu CGI, który wyświetla tylko stały tekst. Można to łatwo zrobić za pomocą strony HTML. Użytkownik musi nauczyć się na przykładzie tego, co ma wyjście dynamiczne. Na przykład skrypt, który drukuje aktualny czas:
    Ten skrypt działa na tej samej zasadzie, co ostatnio, ale daje czas systemowy, wykorzystując rozwój skryptów CGI w Perlu - «localtime» i druki. Za każdym razem, gdy skrypt zostanie ponownie załadowany, czas zostanie zaktualizowany. Jeszcze raz ten skrypt wyświetla zwykły tekst. Musisz wziąć pod uwagę wersję, która zwraca HTML:
    Ten program wygląda nieco bardziej skomplikowanie, ale w rzeczywistości robi to tak samo, jak w poprzednim przykładzie. Dodatkowa złożoność wynika z faktu, że powinny one wyświetlać pełną stronę HTML. Jeśli użytkownik kiedykolwiek oglądane ustawienia przeglądarki prawdopodobnie widział skrzynek lub przyciski opcji, aby włączyć lub wyłączyć Javascript i Java, ale nigdy nie widziałem ich na CGI lub PHP. Wynika to z tego, że javascript i Java są wykonywane przez przeglądarkę (lub nie, jeśli użytkownik je wyłącza). Przeglądarka nie wie nic o CGI ani PHP. Otrzymuje po prostu czysty kod HTML po wykonaniu skryptów na serwerze. Wbudowany w sposób tworzenie skryptów CGI PHP, ColdFusion, ASP, najczęściej używane przez programistów do tworzenia stron internetowych „front-end”, która będzie odwoływać się do bazy „z powrotem”, na przykład,aplikacje internetowe klient /serwer. Ogromną zaletą metody CGI jest to, że skrypty są przechowywane w plikach, więc są dosłownie tysiące swobodnie dostępnych skryptów, które są już napisane i gotowe do pobrania i użycia na stronie internetowej. Oznacza to, że nie trzeba uczyć się języka skryptowego, aby uzyskać korzyści ze skryptów, które już wykonały tę pracę.

    Powiązane publikacje