Perl - programowanie CGI

Co to jest CGI?

  • Common Gateway Interface (CGI) to zestaw standardów definiujących sposób wymiany informacji między serwerem WWW a niestandardowym skryptem.

  • Specyfikacje CGI są obecnie utrzymywane przez NCSA, a NCSA definiuje CGI w następujący sposób:

  • Common Gateway Interface (CGI) jest standardem dla zewnętrznych programów bram do łączenia się z serwerami informacyjnymi, takimi jak serwery HTTP.

  • Obecna wersja to CGI / 1.1, a CGI / 1.2 jest w trakcie opracowywania.

Przeglądanie sieci

Aby zrozumieć koncepcję CGI, zobaczmy, co się dzieje, gdy klikamy hiperłącze dostępne na stronie internetowej, aby przeglądać określoną stronę internetową lub adres URL.

  • Twoja przeglądarka kontaktuje się z serwerem WWW przy użyciu protokołu HTTP i żąda adresu URL, tj. Nazwy pliku strony internetowej.

  • Serwer WWW sprawdzi adres URL i wyszuka żądaną nazwę pliku. Jeśli serwer sieciowy znajdzie ten plik, wysyła go z powrotem do przeglądarki bez dalszego wykonywania, w przeciwnym razie wysyła komunikat o błędzie wskazujący, że zażądałeś niewłaściwego pliku.

  • Przeglądarka internetowa pobiera odpowiedź z serwera WWW i wyświetla treść odebranego pliku lub komunikat o błędzie w przypadku, gdy plik nie zostanie znaleziony.

Istnieje jednak możliwość skonfigurowania serwera HTTP w taki sposób, aby za każdym razem, gdy zażądano pliku w określonym katalogu, plik ten nie był odsyłany; zamiast tego jest wykonywany jako program i cokolwiek ten program wyprowadza w wyniku, jest wysyłane z powrotem do przeglądarki do wyświetlenia. Można to zrobić za pomocą specjalnej funkcjonalności dostępnej na serwerze WWW i nazywa sięCommon Gateway Interfacelub CGI i takie programy, które są wykonywane przez serwer w celu uzyskania wyniku końcowego, nazywane są skryptami CGI. Te programy CGI mogą być skryptami PERL, skryptami powłoki, programami C lub C ++ itp.

Diagram architektury CGI

Obsługa i konfiguracja serwera WWW

Przed przystąpieniem do programowania CGI upewnij się, że serwer WWW obsługuje funkcje CGI i jest skonfigurowany do obsługi programów CGI. Wszystkie programy CGI, które mają być wykonywane przez serwer sieciowy, są przechowywane we wstępnie skonfigurowanym katalogu. Ten katalog nazywa się katalogiem CGI i zgodnie z konwencją nosi nazwę / cgi-bin. Zgodnie z konwencją pliki Perl CGI będą miały rozszerzenie jako.cgi.

Pierwszy program CGI

Oto prosty odsyłacz do skryptu CGI o nazwie hello.cgi . Ten plik został zachowany/cgi-bin/katalogu i ma następującą zawartość. Przed uruchomieniem programu CGI upewnij się, że masz zmianę trybu pliku za pomocąchmod 755 hello.cgi Polecenie UNIX.

#!/usr/bin/perl

print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Hello Word - First CGI Program</title>';
print '</head>';
print '<body>';
print '<h2>Hello Word! This is my first CGI program</h2>';
print '</body>';
print '</html>';

1;

Teraz, jeśli klikniesz hello.cgi link następnie żądanie trafia do serwera WWW, który wyszukuje hello.cgi w katalogu / cgi-bin, wykonuje go i niezależnie od wygenerowanego wyniku, serwer sieciowy wysyła ten wynik z powrotem do przeglądarki internetowej, co jest następujące -

Hello Word! This is my first CGI program

Ten skrypt hello.cgi jest prostym skryptem Perla, który zapisuje swoje dane wyjściowe do pliku STDOUT, tj. Screen. Dostępna jest jedna ważna i dodatkowa funkcja, czyli pierwsza linia do wydrukowaniaContent-type:text/html\r\n\r\n. Ta linia jest wysyłana z powrotem do przeglądarki i określa typ zawartości, która ma być wyświetlana na ekranie przeglądarki. Teraz musisz znać podstawową koncepcję CGI i możesz napisać wiele skomplikowanych programów CGI używając Perla. Ten skrypt może współdziałać z dowolnym innym systemem zewnętrznym, także w celu wymiany informacji, takich jak baza danych, usługi sieciowe lub inne złożone interfejsy.

Zrozumienie nagłówka HTTP

Pierwsza linia Content-type:text/html\r\n\r\nto część nagłówka HTTP, która jest wysyłana do przeglądarki, aby przeglądarka mogła odczytać treść przychodzącą ze strony serwera. Cały nagłówek HTTP będzie miał następującą postać -

HTTP Field Name: Field Content

Na przykład -

Content-type:text/html\r\n\r\n

Istnieje kilka innych ważnych nagłówków HTTP, których będziesz często używać w programowaniu CGI.

Sr.No. Nagłówek i opis
1

Content-type: String

Ciąg MIME definiujący format zwracanej treści. Przykład: Typ treści: tekst / html

2

Expires: Date String

Data, w której informacje stają się nieważne. Powinno to być używane przez przeglądarkę, aby zdecydować, kiedy strona wymaga odświeżenia. Prawidłowy ciąg daty powinien mieć format 01 Jan 1998 12:00:00 GMT.

3

Location: URL String

Adres URL, który powinien zostać zwrócony zamiast żądanego adresu URL. Możesz użyć tego pola, aby przekierować żądanie do dowolnej innej lokalizacji.

4

Last-modified: String

Data ostatniej modyfikacji pliku.

5

Content-length: String

Długość zwracanych danych w bajtach. Przeglądarka używa tej wartości do raportowania szacowanego czasu pobierania pliku.

6

Set-Cookie: String

Ustaw plik cookie przekazany przez ciąg

Zmienne środowiskowe CGI

Cały program CGI będzie miał dostęp do następujących zmiennych środowiskowych. Te zmienne odgrywają ważną rolę podczas pisania dowolnego programu CGI.

Sr.No. Nazwy i opis zmiennych
1

CONTENT_TYPE

Typ danych treści. Używane, gdy klient wysyła załączoną zawartość do serwera. Na przykład przesyłanie plików itp.

2

CONTENT_LENGTH

Długość informacji o zapytaniu. Jest dostępny tylko dla żądań POST

3

HTTP_COOKIE

Zwraca ustawione pliki cookie w postaci pary klucz-wartość.

4

HTTP_USER_AGENT

Pole nagłówka żądania agenta użytkownika zawiera informacje o kliencie użytkownika, który wysłał żądanie. Nazwa przeglądarki internetowej.

5

PATH_INFO

Ścieżka do skryptu CGI.

6

QUERY_STRING

Informacje zakodowane w adresie URL, które są wysyłane z żądaniem metody GET.

7

REMOTE_ADDR

Adres IP zdalnego hosta wysyłającego żądanie. Może to być przydatne do logowania lub do celów uwierzytelniania.

8

REMOTE_HOST

W pełni kwalifikowana nazwa hosta wysyłającego żądanie. Jeśli te informacje nie są dostępne, można użyć REMOTE_ADDR do uzyskania adresu IR.

9

REQUEST_METHOD

Metoda użyta do wysłania żądania. Najpopularniejsze metody to GET i POST.

10

SCRIPT_FILENAME

Pełna ścieżka do skryptu CGI.

11

SCRIPT_NAME

Nazwa skryptu CGI.

12

SERVER_NAME

Nazwa hosta lub adres IP serwera.

13

SERVER_SOFTWARE

Nazwa i wersja oprogramowania, na którym działa serwer.

Oto mały program CGI, który zawiera listę wszystkich zmiennych CGI obsługiwanych przez serwer WWW. Kliknij to łącze, aby zobaczyć wynik Pobierz środowisko

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<font size=+1>Environment</font>\n";
foreach (sort keys %ENV) {
   print "<b>$_</b>: $ENV{$_}<br>\n";
}

1;

Czy otworzyć okno dialogowe „Pobieranie pliku”?

Czasami pożądane jest udostępnienie opcji, w której użytkownik kliknie łącze, a zamiast wyświetlania rzeczywistej zawartości wyświetli się okno dialogowe „Pobieranie pliku”. Jest to bardzo łatwe i można je uzyskać poprzez nagłówek HTTP.

Ten nagłówek HTTP będzie inny niż nagłówek wspomniany w poprzedniej sekcji. Na przykład, jeśli chcesz utworzyć plikFileName plik do pobrania z podanego linku to jego składnia będzie wyglądać następująco -

#!/usr/bin/perl

# HTTP Header
print "Content-Type:application/octet-stream; name = \"FileName\"\r\n";
print "Content-Disposition: attachment; filename = \"FileName\"\r\n\n";

# Actual File Content will go hear.
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) ) {
   print("$buffer");
}

Metody GET i POST

Musiałeś spotkać się z wieloma sytuacjami, w których musisz przekazać pewne informacje z przeglądarki na serwer WWW i ostatecznie do programu CGI obsługującego twoje żądania. Przeglądarka najczęściej korzysta z dwóch metod przekazywania tych informacji do serwera WWW. Te metody sąGET Metoda i POSTMetoda. Sprawdźmy je jeden po drugim.

Przekazywanie informacji metodą GET

Metoda GET wysyła zakodowane informacje o użytkowniku dołączone do samego adresu URL strony. Strona i zakodowane informacje są oddzielone znakiem? znak w następujący sposób -

http://www.test.com/cgi-bin/hello.cgi?key1=value1&key2=value2

Metoda GET jest domyślną metodą przekazywania informacji z przeglądarki do serwera WWW i tworzy długi ciąg znaków, który pojawia się w polu Lokalizacja: przeglądarki. Nigdy nie powinieneś używać metody GET, jeśli masz hasło lub inne poufne informacje do przekazania do serwera. Metoda GET ma ograniczenie rozmiaru: w ciągu żądania można przekazać tylko 1024 znaki.

Ta informacja jest przekazywana za pomocą QUERY_STRING nagłówka i będzie dostępny w programie CGI poprzez zmienną środowiskową QUERY_STRING, którą można analizować i używać w programie CGI.

Możesz przekazywać informacje, po prostu łącząc pary klucz i wartość wraz z dowolnym adresem URL lub możesz użyć tagów HTML <FORM>, aby przekazać informacje metodą GET.

Prosty przykład adresu URL: metoda pobierania

Oto prosty adres URL, który przekazuje dwie wartości do programu hello_get.cgi przy użyciu metody GET.

http://www.tutorialspoint.com/cgi-bin/hello_get.cgi?first_name=ZARA&last_name=ALI

Poniżej jest hello_get.cgi skrypt do obsługi danych wejściowych podawanych przez przeglądarkę internetową.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "GET") {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$first_name = $FORM{first_name};
$last_name  = $FORM{last_name};

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print "<h2>Hello $first_name $last_name - Second CGI Program</h2>";
print "</body>";
print "</html>";

1;

Prosty przykład FORMULARZA: GET Method

Oto prosty przykład, który przekazuje dwie wartości za pomocą formularza HTML FORM i przycisku przesyłania. Zamierzamy użyć tego samego skryptu CGI hello_get.cgi do obsługi tego wejścia.

<FORM action = "/cgi-bin/hello_get.cgi" method = "GET">
First Name: <input type = "text" name = "first_name">  <br>

Last Name: <input type = "text" name = "last_name">
<input type = "submit" value = "Submit">
</FORM>

Oto rzeczywisty wynik powyższego kodowania formularza. Teraz możesz wpisać imię i nazwisko, a następnie kliknąć przycisk przesyłania, aby zobaczyć wynik.

Przekazywanie informacji metodą POST

Bardziej niezawodną metodą przekazywania informacji do programu CGI jest POSTmetoda. Spowoduje to pakowanie informacji w dokładnie taki sam sposób, jak metody GET, ale zamiast wysyłać je jako ciąg tekstowy po rozszerzeniu?w adresie URL wysyła go jako oddzielną wiadomość jako część nagłówka HTTP. Serwer WWW dostarcza ten komunikat do skryptu CGI w postaci standardowego wejścia.

Poniżej znajduje się zmodyfikowany hello_post.cgiskrypt do obsługi danych wprowadzanych przez przeglądarkę internetową. Ten skrypt obsłuży metodę GET oraz POST.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$first_name = $FORM{first_name};
$last_name  = $FORM{last_name};

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Hello - Second CGI Program</title>";
print "</head>";
print "<body>";
print "<h2>Hello $first_name $last_name - Second CGI Program</h2>";
print "</body>";
print "</html>";

1;

Weźmy ponownie ten sam przykład co powyżej, który przekazuje dwie wartości za pomocą HTML FORM i przycisku przesyłania. Zamierzamy użyć skryptu CGI hello_post.cgi do obsługi tego wejścia.

<FORM action = "/cgi-bin/hello_post.cgi" method = "POST">
First Name: <input type = "text" name = "first_name">  <br>

Last Name: <input type = "text" name = "last_name">

<input type = "submit" value = "Submit">
</FORM>

Oto rzeczywisty wynik powyższego kodowania formularza, wpisujesz imię i nazwisko, a następnie kliknij przycisk przesyłania, aby zobaczyć wynik.

Przekazywanie danych pola wyboru do programu CGI

Pola wyboru są używane, gdy wymagane jest wybranie więcej niż jednej opcji. Oto przykład kodu HTML dla formularza z dwoma polami wyboru.

<form action = "/cgi-bin/checkbox.cgi" method = "POST" target = "_blank">
<input type = "checkbox" name = "maths" value = "on"> Maths
<input type = "checkbox" name = "physics" value = "on"> Physics
<input type = "submit" value = "Select Subject">
</form>

Wynikiem tego kodu jest następująca postać -

Poniżej jest checkbox.cgi skrypt do obsługi danych wejściowych podanych przez przeglądarkę internetową dla przycisku opcji.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
if( $FORM{maths} ) {
   $maths_flag ="ON";
} else {
   $maths_flag ="OFF";
}
if( $FORM{physics} ) {
   $physics_flag ="ON";
} else {
   $physics_flag ="OFF";
}

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Checkbox - Third CGI Program</title>";
print "</head>";
print "<body>";
print "<h2> CheckBox Maths is : $maths_flag</h2>";
print "<h2> CheckBox Physics is : $physics_flag</h2>";
print "</body>";
print "</html>";

1;

Przekazywanie danych przycisku radiowego do programu CGI

Przyciski radiowe są używane, gdy wymagana jest tylko jedna opcja. Oto przykład kodu HTML dla formularza z dwoma przyciskami opcji -

<form action = "/cgi-bin/radiobutton.cgi" method = "POST" target = "_blank">
<input type = "radio" name = "subject" value = "maths"> Maths
<input type = "radio" name = "subject" value = "physics"> Physics
<input type = "submit" value = "Select Subject">
</form>

Wynikiem tego kodu jest następująca postać -

Poniżej jest radiobutton.cgi skrypt do obsługi danych wejściowych podanych przez przeglądarkę internetową dla przycisku opcji.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$subject = $FORM{subject};

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Radio - Fourth CGI Program</title>";
print "</head>";
print "<body>";
print "<h2> Selected Subject is $subject</h2>";
print "</body>";
print "</html>";

1;

Przekazywanie danych obszaru tekstowego do programu CGI

Element textarea jest używany, gdy tekst wielowierszowy ma zostać przesłany do programu CGI. Oto przykładowy kod HTML dla formularza z polem TEXTAREA -

<form action = "/cgi-bin/textarea.cgi" method = "POST" target = "_blank">
<textarea name = "textcontent" cols = 40 rows = 4>
Type your text here...
</textarea>
<input type = "submit" value = "Submit">
</form>

Wynikiem tego kodu jest następująca postać -

Poniżej znajduje się plik textarea.cgi skrypt do obsługi danych wejściowych podawanych przez przeglądarkę internetową.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$text_content = $FORM{textcontent};

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Text Area - Fifth CGI Program</title>";
print "</head>";
print "<body>";
print "<h2> Entered Text Content is $text_content</h2>";
print "</body>";
print "</html>";

1;

Przekazywanie danych z rozwijanej skrzynki do programu CGI

Rozwijane pole jest używane, gdy mamy wiele dostępnych opcji, ale tylko jedna lub dwie zostaną wybrane. Oto przykład kodu HTML dla formularza z jednym rozwijanym oknem

<form action = "/cgi-bin/dropdown.cgi" method = "POST" target = "_blank">
<select name = "dropdown">
<option value = "Maths" selected>Maths</option>
<option value = "Physics">Physics</option>
</select>
<input type = "submit" value = "Submit">
</form>

Wynikiem tego kodu jest następująca postać -

Poniżej znajduje się plik dropdown.cgi skrypt do obsługi danych wejściowych podawanych przez przeglądarkę internetową.

#!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
   $buffer = $ENV{'QUERY_STRING'};
}
# Split information into name/value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%(..)/pack("C", hex($1))/eg;
   $FORM{$name} = $value;
}
$subject = $FORM{dropdown};

print "Content-type:text/html\r\n\r\n";
print "<html>";
print "<head>";
print "<title>Dropdown Box - Sixth CGI Program</title>";
print "</head>";
print "<body>";
print "<h2> Selected Subject is $subject</h2>";
print "</body>";
print "</html>";

1;

Korzystanie z plików cookie w CGI

Protokół HTTP jest protokołem bezstanowym. Jednak w przypadku komercyjnej witryny internetowej wymagane jest przechowywanie informacji o sesjach między różnymi stronami. Na przykład rejestracja jednego użytkownika kończy się po transakcji obejmującej wiele stron. Ale jak zachować informacje o sesji użytkownika na wszystkich stronach internetowych?

W wielu sytuacjach używanie plików cookie jest najskuteczniejszą metodą zapamiętywania i śledzenia preferencji, zakupów, prowizji i innych informacji wymaganych dla lepszych wrażeń odwiedzających lub statystyk witryny.

Jak to działa

Twój serwer przesyła pewne dane do przeglądarki odwiedzającego w formie pliku cookie. Przeglądarka może zaakceptować plik cookie. Jeśli tak, jest przechowywany jako zwykły zapis tekstowy na dysku twardym gościa. Teraz, gdy użytkownik przejdzie na inną stronę w Twojej witrynie, plik cookie jest dostępny do pobrania. Po odzyskaniu serwer wie / pamięta, co zostało zapisane.

Pliki cookie to zapis danych w postaci zwykłego tekstu składający się z 5 pól o zmiennej długości -

  • Expires- data wygaśnięcia pliku cookie. Jeśli pole jest puste, plik cookie wygaśnie, gdy odwiedzający zamknie przeglądarkę.

  • Domain - nazwa domeny Twojej witryny.

  • Path- Ścieżka do katalogu lub strony internetowej, która ustawiła plik cookie. To może być puste, jeśli chcesz pobrać plik cookie z dowolnego katalogu lub strony.

  • Secure- Jeśli to pole zawiera słowo „bezpieczny”, plik cookie można pobrać tylko z bezpiecznego serwera. Jeśli to pole jest puste, takie ograniczenie nie istnieje.

  • Name = Value - Pliki cookie są ustawiane i przeglądane w postaci par klucza i wartości.

Konfiguracja plików cookie

Wysyłanie plików cookie do przeglądarki jest bardzo łatwe. Te pliki cookie będą wysyłane wraz z nagłówkiem HTTP. Zakładając, że chcesz ustawić identyfikator użytkownika i hasło jako pliki cookie. Więc zostanie to zrobione w następujący sposób -

#!/usr/bin/perl

print "Set-Cookie:UserID = XYZ;\n";
print "Set-Cookie:Password = XYZ123;\n";
print "Set-Cookie:Expires = Tuesday, 31-Dec-2007 23:12:40 GMT";\n";
print "Set-Cookie:Domain = www.tutorialspoint.com;\n";
print "Set-Cookie:Path = /perl;\n";
print "Content-type:text/html\r\n\r\n";
...........Rest of the HTML Content goes here....

Tutaj używaliśmy Set-CookieNagłówek HTTP do ustawiania plików cookie. Opcjonalne jest ustawienie atrybutów plików cookie, takich jak Wygasa, Domena i Ścieżka. Należy pamiętać, że pliki cookie są ustawiane przed wysłaniem magicznej linii"Content-type:text/html\r\n\r\n.

Pobieranie plików cookie

Pobranie wszystkich ustawionych plików cookie jest bardzo łatwe. Pliki cookie są przechowywane w zmiennej środowiskowej CGI HTTP_COOKIE i będą miały następującą postać.

key1 = value1;key2 = value2;key3 = value3....

Oto przykład, jak odzyskać pliki cookie.

#!/usr/bin/perl
$rcvd_cookies = $ENV{'HTTP_COOKIE'};
@cookies = split /;/, $rcvd_cookies;
foreach $cookie ( @cookies ) {
   ($key, $val) = split(/=/, $cookie); # splits on the first =.
   $key =~ s/^\s+//;
   $val =~ s/^\s+//;
   $key =~ s/\s+$//;
   $val =~ s/\s+$//;
   if( $key eq "UserID" ) {
      $user_id = $val;
   } elsif($key eq "Password") {
      $password = $val;
   }
}
print "User ID  = $user_id\n";
print "Password = $password\n";

Daje to następujący wynik, pod warunkiem, że powyższe pliki cookie zostały ustawione przed wywołaniem skryptu pobierania plików cookie.

User ID = XYZ
Password = XYZ123

Moduły i biblioteki CGI

W Internecie znajdziesz wiele wbudowanych modułów, które zapewniają bezpośrednie funkcje do wykorzystania w programie CGI. Oto najważniejsze raz.

  • Moduł CGI

  • Berkeley cgi-lib.pl