INTERNET Workshop SklepInternetowyPerl1

background image

INTERNET:

Workshop: j zyk Perl

Mój mały sklepik

<IMGSRC=" border="0" alt="Kliknij by zobaczy

wi kszy..." 0001 knt_img 000325_0000.jpg? 0087

Wst p

Zmienne

Wymiana danych

Entomologia

Komunikat na monitorze

Instalujemy Apache'a...

Z Perl Builderem tworzenie...

Wskazówki dla programistów

Marcin Nowak

Perl to j zyk, którego pierwotnym zastosowaniem było przetwarzanie plików tekstowych. Obecnie jest on

najcz ciej wykorzystywany do tworzenia interakcyjnych stron WWW - ksi ek go ci czy sklepów

internetowych. Ten popularny j zyk skryptowy ma bardzo du e mo liwo ci, a jednocze nie łatwo jest si go

nauczy .

Pisanie w Perlu nie wymaga ani kompilatora, ani du ego do wiadczenia programistycznego. Na pocz tek wystarczy

prosty edytor tekstu, cho odpowiednie narz dzia mog ułatwi pisanie programów (patrz: ramka na stronie 151).

Niniejszy kurs stanowi wprowadzenie do Perla. W pierwszej cz ci stworzymy prosty sklep internetowy,

przygotujemy formularz zamówienia, sprawdzimy, czy został on poprawnie wypełniony, i wy lemy odpowied do

u ytkownika. Pliki wykorzystywane w tym przykładzie znajduj si na płycie CD-ROM doł czonej do bie cego

numeru CHIP-a. Wszystkie zbiory HTML powinni my skopiowa do folderu zawieraj cego pliki udost pniane

przez serwer WWW. W przypadku Apache'a (patrz: ramka na stronie 152) jest to katalog htdocs.

Plik zamow.html zawiera formularz zamówienia, gdzie klient naszego sklepu wypełnia pola ksiazki, nazwisko i e-

mail. To, co dzieje si z warto ciami podanymi w formularzu po jego wysłaniu, okre la znacznik <form>:
<form method= "post" action="/cgi-bin/demo.pl">

Po wysłaniu formularza

dane s przekazywane do skryptu demo.pl, który powinien znajdowa si w podkatalogu

cgi-bin w folderze naszego serwera. Plik demo.pl mo emy umie ci tam na dwa sposoby: kopiuj c skrypt

bezpo rednio do katalogu cgi-bin z płyty CD-ROM doł czonej do CHIP-a lub tworz c go samodzielnie w kilka

minut za pomoc Perl Buildera (patrz: ramka na stronie 151).

Kiedy skrypt znajduje si ju tam, gdzie by powinien, przed pierwszym uruchomieniem musimy przypisa mu

takie atrybuty, aby serwer WWW miał uprawnienia nie tylko do odczytu, ale równie do jego uruchamiania. W

przypadku bł dnie ustawionych praw podczas próby uruchomienia pojawi si komunikat w rodzaju: "You don't

have permission to execute /cgi-bin/

demo.pl..."

;. Po nadaniu odpowiednich uprawnie skrypt zacznie działa

poprawnie. Ka de zamówienie zło one w naszym sklepie powinno zosta potwierdzone informacj o przyj ciu

zamówienia lub komunikatem o bł dzie.

Wszystkie skrypty Perla rozpoczynaj si wierszem wskazuj cym lokalizacj interpretera. Z tego powodu zanim

umie cimy własne skrypty na serwerze WWW naszego dostawcy usług internetowych, musimy dowiedzie si , jaka

jest cie ka dost pu do katalogu, w którym znajduje si Perl.

W systemie Linux pocz tkowa linia zwykle ma nast puj c posta :

#!/usr/bin/perl. W Windows pierwsza linia

mo e wygl da na przykład tak:

#!c:\perl\bin\perl.exe

----

Info

Grupy dyskusyjne

Uwagi i komentarze do artykułu:

news://news.vogel.pl/chip.artykuly

Pytania techniczne:

news://pl.comp.lang.perl

news://comp.lang.perl

Internet

Perl Builder:

http://www.solutionsoft.com/perl.htm

Wszystko o Perlu:

ftp://sunsite.icm.edu.pl/pub/CPAN/

FAQ:

http://www.kt.agh.edu.pl/other/perl/faq/

Kursy Perla

http://www.kt.agh.edu.pl/other/perl/

http://pipeta.chemia.pk.edu.pl/Perl/

http://hostidc.idc.com.pl/~siwy/perl.htm

http://www.snj.digimer.pl/artykuly.html

CGI-FAQ:

http://web.pertus.com.pl/tech/perl-cgi-faq.htm

W dziale Internet | Workshop: j zyk Perl znajduj si Active Perl 5.6 oraz pliki omawianej bazy danych

background image

Zmienne

Programy napisane w Perlu odstraszaj swoim wygl dem pocz tkuj cych adeptów programowania. S pełne

tajemniczych i niezrozumiałych symboli. Aby wej w wiat Perla, musimy si z nimi zapozna .

Znak dolara

$ słu y do definiowania zmiennych, które w danym momencie mog mie tylko jedn warto (w

odró nieniu od tablic - patrz: dalej). Zmienna taka mo e by liczb w dowolnym formacie lub ła cuchem

tekstowym i nosi nazw zmiennej skalarnej (w odró nieniu od tablic oraz tablic asocjacyjnych - patrz: dalej).

Obowi zuje tutaj jedna zasada: tekst musi by uj ty w cudzysłów, liczby - nie. Wa ne jest, aby ka de przypisanie

zako czyło si rednikiem (;).
$liczba=1.234567;$tekst="Witaj wiecie";

Raz zdefiniowan zmienn mo emy pó niej wykorzysta w dowolnym miejscu programu.
Print "To jest moje pozdrowienie: $tekst \n";

Powy sza komenda wy wietla na ekranie ( ci le mówi c na tzw. standardowym urz dzeniu wyj cia) tekst To jest

moje pozdrowienie: Witaj wiecie i przenosi kursor do nowego wiersza (\n). Taki sam efekt uzyskamy za pomoc

polecenia:
Print "To jest moje pozdrowienie:".$tekst. "\n";

Natomiast komenda
Print 'To jest moje pozdrowienie: $tekst \n';

sprawi, e na monitorze pojawia si napis To jest moje pozdrowienie: $tekst \n. U ycie apostrofów powoduje, e

znajduj cy si w ich wn trzu ci g znaków jest interpretowany wprost. Gdy u ywamy cudzysłowów, konstrukcje

oznaczaj ce zmienne (np. $tekst czy $lista[0]) oraz znaki specjalne (poprzedzone odwrotnym uko nikiem - np. \n)

s zamieniane na odpowiadaj ce im warto ci

W Perlu znak popularnej "małpy"

@ nie ma nic wspólnego z poczt elektroniczn , a słu y do definiowania tablic.

Tablica mo e zawiera liczby, ła cuchy tekstowe lub mieszank jednych i drugich. Poni ej definiujemy tablic o

nazwie lista, która przechowuje trzy ła cuchy znakowe.
@lista=("To jest", "moje poranne pozdrowienie", "moje wieczorne
pozdrowienie");

Pozycja zmiennej w obr bie listy okre lana jest przez liczb podawan w nawiasie kwadratowym. Numeracja

rozpoczyna si zawsze od zera. Polecenie
Print "$lista[0] $lista[2]";

wy wietla na ekranie monitora napis To jest moje wieczorne powitanie

Symbol procentu

% słu y do tworzenia tablic asocjacyjnych b d cych tabel par warto ci. Ka da taka para składa

si z klucza i warto ci. W tablicach do poszczególnych warto ci odwoływali my si , podaj c w nawiasach

kwadratowych liczb - tutaj nale y poda klucz w nawiasach klamrowych.
%para_warto ci=("nazwisko", "Cezar","imi ","Juliusz",
"narodowo

","Rzymianin", "wiek",2100);

Perl pozwala te zdefiniowa list par warto ci w bardziej przejrzystej formie:
%osoba=("nazwisko"=>"Caesar" ,"imi "=>"Julius","narodowo

"=>

"Rzymianin","wiek"=>2100);

Nast puj ce polecenia:
print "Nazwisko:% osoba{ 'nazwisko'}\n";print "Imi :% osoba{'imi '}\n";print
"Wiek:%para_warto ci{'wiek' }\n";

wy wietl tekst:
Nazwisko: CaesarImi : JuliusWiek: 2100

Gwiazdka

* okre la globalny typ danych i oznacza, e zmienna mo e mie dowolny format: skalarny, tablicy lub

tablicy asocjacyjnej.

Po zapoznaniu si z typami zmiennych mo emy przyst pi do napisania prostego skryptu w Perlu. Kod skryptu

piszemy, korzystaj c z edytora tekstu, i zachowujemy go w pliku, na przykład pod nazw test.pl. Nast pnie

przechodzimy do folderu, w którym zapisali my skrypt, i uruchamiamy go, wydaj c z linii komend (w Windows lini

polece trybu MS--DOS) komend

perl test.pl.

Mo emy tak post pi z przykładowym skryptem demo.pl. Poniewa jest on przeznaczony do uruchamiania za

po rednictwem serwera WWW i podczas r cznego uruchomienia nie s przekazane adne dane z formularza, w

oknie DOS-a pojawi si jedynie kod HTML z komunikatem o bł dzie.

background image

Spróbujmy teraz przyjrze si dokładniej skryptowi demo.pl. Po pierwszym wierszu wyst puje kilka linii

komentarza wygenerowanych przez Perl Buildera i rozpoczynaj cych si symbolem #. Nie maj one adnego

wpływu na działanie programu.

Pierwszy wiersz, który nas interesuje, rozpoczyna si symbolem, z jakim jeszcze si nie zetkn li my: znak &

oznacza, e teraz nast pi odwołanie do podprogramu (procedury) o nazwie GetFormInput. Podprogram ten znajduje

si na ko cu skryptu i rozpoczyna si wierszem sub GetFormInput. Wszystko, co znajduje si poni ej, w nawiasach

klamrowych, mo e u nowicjusza wywoła ból głowy. Nie musimy jednak rozumie wszystkich detali skryptu.

Wiele procedur, jak na przykład te do obsługi formularzy, zostało ju przez kogo napisanych. Nie ma sensu pisanie

ich od nowa - wystarczy umie z nich korzysta (oczywi cie je li pozwalaj na to ich autorzy).

background image

Wymiana danych

Mimo i najłatwiejsze jest korzystanie z gotowych procedur obsługi formularzy, warto zapozna si ze sposobem

komunikacji pomi dzy serwerem WWW a przegl dark . Na tym przykładzie poznamy tak e kolejne wła ciwo ci

Perla.

W odczytywaniu przez skrypt CGI informacji przysyłanych przez przegl dark wa n rol odgrywa zmienna

rodowiskowa %ENV, która - jak łatwo si domy li , widz c symbol % - jest tablic asocjacyjn . Znajduj si w

niej informacje m.in. o systemie operacyjnym komputera wysyłaj cego zapytanie i jego adresie IP. W ten sam

sposób do serwera dostarczane s informacje wpisane do formularza.

W przypadku adnej ksi ki zostanie wy wietlony odpowiedni komunikat.

Dost pne s dwie metody pozwalaj ce wysła dane do serwera. Pierwsza (POST) przesyła informacje z formularza

w sposób niewidoczny dla u ytkownika. Druga (GET) dodaje je do adresu wywoływanej strony:

www.xyz.pl/cgi-

bin/script.pl?wartosc1=przykład&wartosc2=demo

Informacja o tym, czy dane zostały wysłane za pomoc metody GET czy POST, przechowywana jest równie w

zmiennej rodowiskowej %ENV. W przypadku u ycia POST (tak jak to ma miejsce w naszym przykładzie) serwer

wysyła dane na tzw. wej cie standardowe programu. Gdy uruchamiamy program z linii polece , standardowym

wej ciem jest klawiatura.
local ($buf)if ($ENV{'REQUEST_METHOD'} eq 'POST'){ read (STDIN,$buf,$ENV{
'CONTENT_LENGTH'});}else{ $buf=$ENV{'QUERY_STRING'};}

Działanie tego kodu mo na wytłumaczy nast puj co: "Utwórz lokaln zmienn $buf. Je eli (if) metod

komunikacyjn jest (eq) POST, wówczas wykonaj polecenie podane w nawiasie klamrowym {}, a wi c przepisz

dane ze standardowego wej cia do zmiennej $buf, której długo dostosuj do długo ci odebranego ci gu danych.

Je eli metoda jest inna ni POST (else), wówczas wykonaj polecenie z drugiego nawiasu klamrowego {}: zmiennej

$buf przypisz warto {'Query_String'} zmiennej rodowiskowej $ENV, poniewa tam wła nie metoda GET

zapisuje dane".

Po wykonaniu procedury zmienna $buf przyjmuje nast puj c warto :
produkty=Perl+Workshop+-+Wstep& produkt=Podrecznik+hakera&
nazwisko=Marcin+Bieniek& mail=marcin%40domena.pl

Odrobina wysiłku wystarcza, aby odszyfrowa , co zamówił nasz klient, jak si nazywa i jaki ma adres e-mail.

W takiej postaci dane nie nadaj si jednak do dalszej analizy. Dlatego najpierw musimy je krok po kroku

uporz dkowa :
if ($buf eq ""){ return 0;}else{ @fval=split(/&/,$buf);}

Skrypt najpierw sprawdza, czy u ytkownik wysłał jakiekolwiek dane (czy zmienna eq nie jest pusta). Je li brakuje

danych, polecenie return zwraca do głównego programu warto 0. W przeciwnym razie ła cuch tekstowy

przechowywany w zmiennej $buf dzielony jest na fragmenty. Podział nast puje we wszystkich miejscach, w których

wyst puj znaki &. Poszczególne elementy zapisywane s nast pnie w tablicy @fval. W naszym przykładzie s to

cztery elementy:
$fval[0]: produkty=Perl+Workshop+ -+Wstep$fval[1]: produkty=Podrecznik+
hakera$fval[2]: nazwisko=Marcin+Bieniek$fval[3]: mail=marcin%40domain.pl

Uzyskane w ten sposób warto ci najkorzystniej jest zapisa w tablicy asocjacyjnej, do czego wykorzystamy

poni szy skrypt:

background image

foreach $i (0...$#fval){ ($nazwa,$val)= split(/=/,$fval[$i],2); $val=~tr/+/
/; $val=~s/%(...)pack("c", hex($1))/ge; $nazwa=~tr/+/ /;
$nazwa=~s/%(...)pack("c", hex($1))/ge;}

Procedura wykonywana jest w p tli (for-each), w której zmienna $i przyjmuje warto ci od 0 a do warto ci

najwi kszego indeksu tablicy @fval ($#fval). W naszym przypadku $#fval wynosi 3. W kolejnych krokach p tli

przetwarzane s warto ci od $fval[0] do $fval[3]. Najpierw ła cuchy tekstowe s ponownie dzielone (split), tym

razem w miejscach, w których wyst puj znaki =. Tekst na lewo od miejsca podziału zapisywany jest w zmiennej

$nazwa, tekst z prawej strony w $val.

background image

Entomologia

Cztery ostatnie polecenia z powy szego przykładu odpowiedzialne s za konwersj znaków + na spacje oraz

wyra e %kod wyst puj cych w zmiennych na odpowiadaj ce im znaki (np. %34 na plus). W obu przypadkach

wykorzystywana jest konstrukcja o składni: $zmienna=~ /znajd /zast p/. Takie operacje na tek cie nosz nazw

pattern matching i wyst puj w wielu ró nych wariantach.
if (!defined($field{nazwa})){
$field{$nazwa}=$val;}else{$field{$nazwa}.=",$val";}

Ostatni fragment podprogramu rozwi zuje problem, który pojawia si , kiedy

kilka pól w formularzu ma takie same nazwy. W naszym przykładzie dotyczy

to pola ksiazki, które mo e przyjmowa maksymalnie cztery ró ne warto ci.

Ka dorazowo przed utworzeniem nowej pary warto ci w tablicy asocjacyjnej

background image

nale y sprawdzi , czy nie wyst puje ju para warto ci z takim samym

kluczem.

Potwierdzenie zamówienia zawiera powitanie oraz list pozycji,

które wybrał klient.

Jedynie w sytuacji gdy ten warunek nie jest spełniony (negacj uzyskujemy za pomoc wykrzyknika), tworzona jest

nowa para warto ci. W przeciwnym razie wykonywana jest procedura zapisana w nawiasie klamrowym za else: do

warto ci zapisanej w polu o takiej nazwie $nazwa dodawany jest przecinek, a za nim zawarto zmiennej $val. Taki

efekt uzyskujemy dzi ki operatorowi .=, doł czaj cemu now warto do starej.

W wyniku działania procedury do programu głównego przekazywane s nast puj ce dane:
%field=( produkty=>"Perl postawy, Programuj i ty", nazwisko=>"Marcin Nowak",

mail=>"nowak@chip.pl");

Informacje w takiej formie mog by ju poddane dalszej analizie.

Przygl daj c si naszym przykładowym programom, zwró my uwag na kilka konstrukcji cz sto

wykorzystywanych w Perlu. Za pomoc wyra enia if uzale niamy wykonanie bloku programu zamkni tego

nawiasami klamrowymi od spełnienia jednego lub kilku warunków. Buduj c wyra enia warunkowe, musimy

pami ta , e efekty działania operatorów logicznych mog by ró ne, w zale no ci od tego, czy zmienna zawiera

ła cuch tekstowy czy warto liczbow . Procedura:
If($wartosc==3){ Podprogram}

przed wykonaniem podprogramu sprawdza, czy warto liczbowa zmiennej równa jest 3. Z kolei wyra enie
If($wartosc eq "Witaj wiecie"){ Podprogram}

bada warto ła cucha tekstowego. Operatory != oraz ne oznaczaj "nie równa si " i przeznaczone s kolejno dla

liczb oraz ła cuchów znakowych.

Teraz dane wyj ciowe z podprogramu zostan poddane dalszej obróbce w programie głównym. Najpierw

przekształcimy je do bardziej u ytecznej postaci, a nast pnie sprawdzimy, czy informacje od u ytkownika nie

zawieraj bł dów. W tym celu utworzymy dwie puste zmienne ($message i $found_err). Je li w trakcie

wykonywania instrukcji warunkowej oka e si , e brakuje jakich danych wej ciowych ($nazwisko lub $produkty s

puste, czyli zawieraj warto ""), tym zmiennym zostan przypisane warto ci. Mo emy te zbudowa wyra enie

warunkowe sprawdzaj ce zawarto zmiennej tekstowej. W tym celu posłu ymy si pełn uko ników konstrukcj ,

której składnia jest podobna do znanego ju nam wyra enia /szukaj/. Za pomoc polecenia
$mail!~/.+\@.+\..+/)

sprawdzamy, czy w adresie e-mail wyst puje znak @ (\@) oraz kropka (\.) przed ostatnim członem domeny.

Kombinacja .+ zast puje zawsze dowolny ci g znaków. Odwrotne uko niki przed symbolami @ i kropk oznaczaj ,

e znaki te b d wyszukiwane w zmiennej tekstowej.

W razie wyst pienia bł du zmienna $found_err przyjmuje warto 1, co oznacza logiczn prawd , i po wyra eniu

warunkowym if($found_err) wykonywany jest podprogram PrintError. Je eli aden bł d nie zostanie znaleziony,

$found_err nie ma przypisanej adnej warto ci, czemu odpowiada logiczny fałsz. W takim przypadku program

główny wykonywany b dzie bez zakłóce .

background image

Komunikat na monitorze

Niezale nie od tego, czy w zawarto ci formularza znaleziono bł dy, do klienta naszego sklepu wysyłany jest

komunikat. Aby przegl darka WWW mogła go wy wietli , musi on by zapisany w j zyku HTML. Dokumenty

zawieraj ce tre odpowiedzi i informacji o bł dzie znajduj si w plikach odpowiedz.html i blad.html. Perl Builder

pobiera znajduj cy si tam kod i po zmodyfikowaniu wstawia do swojego skryptu. Najwa niejsza zmiana dotyczy

pierwszego wiersza:
print "Content-type: text/html\n\n\";

Poniewa przegl darka musi wiedzie , jakie dane wysyła jej serwer, informacja o tym przekazywana jest w tak

zwanym nagłówku. My przesyłamy dokument HTML oznaczany text/html.

Nie mo emy zapomnie o dwóch parach znaków "\n" na ko cu wiersza. Wypisanie ka dego "\n" powoduje

przej cie do nowej linii, wi c mi dzy wierszem "Content-type..." a dalszymi danymi b dzie co najmniej jeden pusty

wiersz. Jest to niezb dne, aby zasygnalizowa przegl darce wyst pienie ko ca nagłówka. Je li tego nie zrobimy, w

przegl darce pojawi si komunikat Server-Error 500.

Pozostałe linie zawieraj zwyczajny kod HTML uzupełniony zmiennymi, które wcze niej za pomoc Perl Buildera

umie cili my w skrypcie. Polecenie
print "<p>Formularz zawiera bł d:<br>".$message. "\n";

wysyła do przegl darki komunikat o bł dzie. Exit 0 umieszczone na ko cu podprogramu ko czy działanie procedury

przed powrotem do programu głównego.

Byłoby te dobrze, gdyby wła ciciel sklepu mógł niezwłocznie informowa klientów o tym, e zamówienie zostało

przyj te. O tym, w jaki sposób wysyła e-maile za pomoc Perla, powiemy w drugiej cz ci kursu. Jako przykład

stworzymy wówczas prost baz danych z mo liwo ci czytania i zapisywania plików.

background image

Instalujemy Apache'a i Perla

Serwer Apache i pakiet z Perlem s standardowymi elementami ka dej dystrybucji Linuksa. U ytkownicy innych

systemów operacyjnych musz najpierw zdoby odpowiednie aplikacje. Wersj instalacyjn Perla mo emy zdoby

na wiele ró nych sposobów. Najpro ciej jest pobra j ze strony

www.perl.org

. Dla Windows dost pne s te inne

pakiety, równie rozpowszechniane bezpłatnie. W naszym kursie korzystamy z Active Perl wyprodukowanego

przez Active State, który wyró nia si bardzo prost instalacj . Po uruchomieniu instalator tak modyfikuje

ustawienia Windows, e od razu, be adnej dodatkowej konfiguracji, mo emy uruchamia skrypty Perla.

Do tworzenia aplikacji internetowych potrzebny jest jeszcze serwer WWW, który b dzie rodowiskiem testowym

dla naszych skryptów. Proponujemy wykorzysta do tego celu najbardziej rozpowszechniony serwer Apache,

poniewa jest bardzo prawdopodobne, e korzysta z niego równie nasz dostawca usług internetowych. Przykłady

prezentowane w ramach kursu powinny oczywi cie działa tak e na wszystkich innych serwerach.

Apache mo e by zainstalowany jedynie wówczas, gdy przez komputer obsługiwany jest protokół TCP/IP. Warunek

ten jest spełniony w przypadku ka dego komputera dysponuj cego dost pem do Internetu. Dla pewno ci mo emy

jeszcze sprawdzi to we Wła ciwo ciach otoczenia sieciowego lub w oknie DOS wpisa komend ping

127.0.0.1

-

je li zadziała, wszystko jest w porz dku. Instaluj c Apache, musimy pami ta o zmianie domy lnej lokalizacji

plików, poniewa spacja w .../Apache Group/... nie pozwoliłaby na uruchomienie programu w trybie DOS.

Proponujemy zmieni cie k dost pu na przykład na c:\apache.

Po zako czonej instalacji przechodzimy do podfolderu /conf i modyfikujemy plik httpd.conf. Nie nale y przera a

si ogromn liczb zawartych w nim komend. Do naszych zastosowa testowych musimy zmieni tylko jeden wpis.

Nale y odnale wiersz zaczynaj cy si od #ServerName, usun pierwszy znak i zast pi wyraz Dummy nazw

naszego komputera. Nale y tu u y nazwy, któr nadali my komputerowi podczas instalacji Windows.

Zapisujemy zmodyfikowany plik i uruchamiamy Apache'a. Serwer powinien otworzy si w oknie DOS-a, w

którym pojawi si komunikat "Apache for Win32 is running...". W razie wyst pienia problemów spróbujmy

uruchomi program z okna DOS-owego, dzi ki czemu b dziemy mogli ledzi wszystkie komunikaty o bł dach.

Je li serwer działa poprawnie, po wpisaniu w przegl darce adresu http://nazwa_komputera wy wietlona zostanie

strona powitalna Apache, któr jest plik index.html w katalogu .../apache/htdocs. Je eli adna strona si nie pojawia,

spróbujmy przegl darce poda adres IP naszego komputera (localhost), czyli http://127.0.0.1/.

background image

Z Perl Builderem tworzenie skryptów staje si proste

Samodzielne pisanie skryptów przy u yciu edytora tekstu jest czasochłonne, a przy tym łatwo jest si pomyli . Za

pomoc Perl Buildera mo emy nie tylko wygodnie zarz dza zmiennymi, ale tak e tworzy procedury do odczytu

danych z formularzy, budowy dynamicznych stron HTML czy te wysyłania e-maili.

Po zainstalowaniu programu musimy wprowadzi kilka zmian w oknie konfiguracyjnym, które otwieramy

poleceniem

Tools/Options. W polu Locations wprowadzamy odpowiednie cie ki dost pu do plików na dysku.

Zaznaczenie opcji

Save files in UNIX format na zakładce Preferences zapobiega dodawaniu przy zapisywaniu

skryptów pod Windows znaków ko ca wierszy. Znaki te s ródłem bł dów, je li skrypty uruchamiane s pó niej w

rodowisku Linux.

W zakładce

CGI-Wizard okre lony jest pierwszy wiersz, od którego rozpoczyna si ka dy skrypt. Na pocz tku tej

linii zawsze znajduj si znaki #!, a za nimi cie ka dost pu do interpretera Perla. W systemie Linux wiersz ten ma

zazwyczaj posta :

#!/usr/bin/perl, pod Windows mo e on zawiera : #!c:\perl\bin\perl.exe. Druga cie ka dost pu

wskazuje na program pocztowy, którym pod Linuksem jest zazwyczaj Sendmail. Zostawimy to pole nie zmienione

lub puste, rezygnuj c na razie z wysyłania poczty elektronicznej.

Perl Builder automatycznie odczytuje z podanego dokumentu HTML nazwy

pól, z których składa si formularz.

W niniejszym artykule przygotujemy skrypt, który b dzie wy wietlał prosty formularz zamówienia dla sklepu

internetowego. W przypadku niepoprawnego wypełnienia formularza klient powinien otrzyma informacj o

bł dzie. Je li nie b dzie adnych usterek, wy wietlone zostanie potwierdzenie przyj cia zamówienia. Wszystkie

pliki wykorzystywane w tym przykładzie znajduj si na płycie CD-ROM doł czonej do tego numeru CHIP-a.

Zbiory shop.htm, error.htm i odpowiedz.htm kopiujemy do podkatalogu htdocs w katalogu serwera.

Za pomoc komendy

File | New Script tworzymy plik demo.pl i zapisujemy go w katalogu /cgi-bin serwera WWW.

Uruchamiamy kreatora skryptów CGI, wybieraj c przycisk z paska narz dzi. Najpierw musimy poinformowa

program, który formularz ma zosta wykorzystany. Poleceniem

Select wybieramy plik shop.htm z folderu htdocs.

Perl Builder odczytuje z formularza nazwy pól, które pó niej pojawiaj si w lewym dolnym okienku w postaci

zmiennych. Nazwy ksi ki, nazwisko i e-mail zostaj zamienione na zmienne $produkty, $nazwisko i $e-mail.

Nast pnie musimy wybra sposób odczytania informacji z formularza. Mamy do wyboru wiele ró nych mo liwo ci

analizy danych. Posłu ymy si najcz ciej u ywan metod

Standard

Poleceniem

Next przechodzimy dalej. Aby klienci naszego sklepu nie mogli wypełnia formularza w sposób

zupełnie dowolny, dane przesłane do serwera podlegaj weryfikacji. By skonfigurowa t funkcj , przechodzimy na

zakładk

Validate Inputs. Najpierw do sprawdzenia wybierana jest zmienna $produkty. Poniewa przynajmniej

jedno pole produktu musi by zaznaczone, wybieramy warunek

non-blank. W oknie tekstowym do podania

komunikatu bł du wpisujemy na przykład:

Musisz wybra jedn z ksi ek. W identyczny sposób post pujemy ze

zmienn

$nazwisko. W przypadku zmiennej $e-mail sprawdzamy, czy jej zawarto ma form zgodn z formatem

adresu poczty elektronicznej - zaznaczamy pole

in E-mail address format.

Wybieraj c odpowiedni opcj , mo emy kontrolowa poprawno wprowadzanych danych.

W ostatnim kroku musimy na stronie error.htm umie ci komunikat o bł dzie. Za pomoc komendy

Select

wybieramy zbiór

blad.htm, a nast pnie polecenie Edit. Otworzy si edytor tekstu z kodem HTML zaznaczonej

uprzednio strony. W miejscu, w którym ma by wy wietlony komunikat, umieszczamy polecenie

[$message]. W

pliku znajduj cym si na CHIP-CD komenda ta jest ju wstawiona.

Ze wzgl du na u ytkowników Windows, którzy nie dysponuj Sendmailem, pominiemy na razie mo liwo

wysyłania poczty elektronicznej za pomoc skryptów Perla. U ytkownicy Linuksa nawet bez naszych wskazówek

powinni sobie z tym poradzi , korzystaj c z mo liwo ci Perl Buildera i Sendmaila.

Podobnie jak wcze niej, gdy za po rednictwem blad.html generowali my komunikat o bł dzie, tak i teraz

stworzymy formularz informuj cy o poprawnym wysłaniu zamówienia. Po przej ciu na zakładk

Display HTML

wybieramy przycisk

Edit, aby wy wietli kod strony odpowiedz.htm. Je li chcemy, eby pojawiły si tam warto ci

wybranych pól formularza, musimy u y wyra enia

[$zmienna]. Chc c zwróci si bezpo rednio do naszego

background image

klienta, nale y umie ci polecenie Witaj

[$nazwisko]. Za pomoc zmiennej [$produkty] mo emy mu przypomnie ,

co zostało zamówione. W pliku umieszczonym na CHIP-CD wpisy te s ju dodane. Klikamy przycisk

Finish i

skrypt jest ju gotowy.

Przed wysłaniem skryptu na serwer powinni my sprawdzi jego działanie za pomoc odpluskwiacza (debugera)

zawartego w Perl Builderze. Przechodzimy w tym celu na kart

Input Values, gdzie jest przedstawiony formularz z

naszej strony HTML. Zaznaczamy jeden albo kilka produktów i wpisujemy imi , nazwisko oraz adres e-mail

(mo emy te nie wpisywa nic, aby sprawdzi , czy pojawi si komunikat o bł dzie). Nast pnie wydajemy polecenie

Run/Continue z menu Run/Debug lub przyciskamy klawisz [F9], który rozpoczyna wykonywanie programu. Na

zakładce

Output HTML/Text pojawia si to, co serwer wysłałby do przegl darki u ytkownika. Je li skrypt nie

działa poprawnie, mo emy spróbowa wł czy opcj

Check Syntax with-w Flag. Wówczas Perl sprawdzi składni

programu i w razie napotkania bł dów wy wietli komunikaty, które mog okaza si bardzo pomocne podczas

usuwania usterek.

background image

Wskazówki dla programistów

Nawet do wiadczonym programistom nie udaje si napisanie programu, który zadziałałby od razu. Internal server

error, czyli bł d o numerze 500, b dzie nas prze ladował tak długo, a nauczymy si poprawnie wstawia znaki

cudzysłowu, zaczniemy pami ta o redniku na ko cu ka dego wiersza i b dziemy poprawnie otwierali i zamykali

nawiasy klamrowe w skomplikowanych konstrukcjach if i while. Bardzo rzadko zdarza si , aby bł d spowodowany

był powa n usterk w programie. W ponad 90 procentach przypadków bł dy s wynikiem prostych pomyłek.

Najłatwiej odnajdziemy wszystkie literówki, je li wywołamy skrypt z przeł cznikiem -w. W tym celu

modyfikujemy pierwszy wiersz skryptu nast puj co:
#! c:\perl\bin\perl.exe -w

W efekcie Perl wygeneruje w podkatalogu /logs katalogu instalacyjnego serwera Apache plik error.log, w którym

znajdziemy informacje o wszystkich nieprawidłowo ciach w działaniu skryptów.

Poniewa jest bardzo prawdopodobne, e stworzone przez nas skrypty b d w rzeczywisto ci pracowały na

serwerze z systemem Linux, w trakcie pisania kodu powinni my zwróci uwag na dwie najwa niejsze przyczyny

bł dów. W przeciwie stwie do Windows system Linux rozró nia małe i wielkie litery. Z tego powodu plik test.pl i

Test.pl to dwa zupełnie ró ne zbiory. Ponadto niektóre edytory tekstu, takie jak Wordpad czy Word, wstawiaj

znaki formatuj ce. W efekcie po uruchomieniu skryptu pojawi si server error 500. Ten ostatni problem nie dotyczy

z reguły tekstowych edytorów HTML.


Wyszukiwarka

Podobne podstrony:
INTERNET Workshop SklepInternetowyPerl MySQL
INTERNET Workshop BazaDanych ASP Płytoteka
INTERNET Workshop Język Perl Apache
Kraska Tajemniczy klient w polskim sklepie internetowym
Inżynieria oprogramowania zakupy w sklepie internetowym
Adverbs (zebrane patrz worksheets z internetu w folderze język angielski) 2
Zarządzanie firmą niskie ceny i setki opinii w sklepie internetowym Media Expert
INTERNET ZASTOSOWANIA Workshop PHP Apache Płytoteka
Regulamin Oferty Promocyjnej Darmowy Starter Play na Karte w Sklepie Internetowym 05042013
Zasilacze niskie ceny i setki opinii w sklepie internetowym Media Expert 3
Systemy operacyjne niskie ceny i setki opinii w sklepie internetowym Media Expert
Czy rekrutacja pracowników za pomocą Internetu jest
do kolokwium interna
internetoholizm prezentacja na slajdach
Zasady komunikacji internetowej Martens
Osteoporaza diag i lecz podsumow interna 2008

więcej podobnych podstron