|
ÀÁÐÀÊÀÄÀÁÐÀ (Òîæå ñàìîå íî â ÷èòàåìîì âèäå)
Èpj lyz d ltym hf,jnfz yfl j,yjdktybtv cjlth;bvjuj cdjtuj Web-cfqnf, yfcsofz
tuj bynthtcysvb vfnthbfkfvb, ds, dthjznyj, pflevsdftntcm j njv, xnj t;tlytdyj
cjplf.ncz cjnyb yjds[ Web-cfqnjd, rjnjhst nfr;t t;tlytdyj gjgjkyz.ncz cjnyzvb
yjds[ ljrevtynjd. Êfr cjplf.ncz dct 'nb yjdst vfccbds cnhfybw b rfrbv j,hfpjv
jyb nfr ,scnhj j,yjdkz.ncz? Âct 'nj yt nfr ckj;yj, rfr rf;tncz yf gthdsq
dpukzl, gjcrjkmre pltcm bcgjkmpetncz rjywtgwbz lbyfvbxtcrb[ Web-cnhfybw.
 'njq cnfnmt vs hfccvjnhbv 'nfgs cjplfybz vt[fybpvf ge,kbrfwbb yf Web-cfqnt
ghtcc-htkbpjd. Ífi cfqn ,eltn cjtlbyznm «yf ktne» ghtcc-htkbps, [hfyzobtcz d
,fpt lfyys[, c if,kjyysvb Web-cnhfybwfvb. Ìs yt cnfdbkb wtkm. jpyfrjvbnm
xbnfntktq c jcyjdfvb chtlcnd hfphf,jnrb Web-cfqnjd, gjcrjkmre j, 'njv yfgbcfyj
vyj;tcndj rybu b cnfntq. Äfyyfz cnfnmz ghtlyfpyfxtyf d jcyjdyjv lkz nt[
gjkmpjdfntktq, rjnjhst e;t bvt.n jgsn cjplfybz Web-cnhfybw b ghjcns[ cfqnjd.
Ífif ukfdyfz wtkm — gjrfpfnm, rfr yfxfnm hfphf,fnsdfnm cdjq gthdsq lbyfvbxtcrbq
Web-cfqn. Äkz gjybvfybz cnfnmb ;tkfntkmyj bvtnm ,fpjdst pyfybz j, fh[bntrnehf[
byajhvfwbjyys[ cbcntv, j zpsrt hfpvtnrb ubgthntrcnf (HTML) b zpsrt ghjuhfvvbhjdfybz
Perl . Äkz cjplfybz 'njuj cfqnf vs djcgjkmpetvcz nhtvz vjoysvb jnrhsnsvb
nt[yjkjubzvb: Apache, MySQL b Perl/DBI.
×nj nfrjt cnfnbxtcrbq Web-cfqn?
Ïthtl ntv, rfr gjuhepbnmcz d hfphf,jnre lbyfvbxtcrjuj Web-cfqnf, df;yj
gjyznm, xnj ghtlcnfdkz.n cj,jq cnfnbxtcrbq Web-cfqn b cnfnbxtcrbt Web-cnhfybws,
cjcnfdkz.obt tuj jcyjde. Ñnfnbxtcrbt Web-cnhfybws cjplf.ncz dhexye., gjnjv
cj[hfyz.ncz b pfuhe;f.ncz yf cfqn. Âczrbq hfp, rjulf nht,etncz bpvtybnm
cjlth;bvjt nfrjq cnhfybws, gjkmpjdfntkm vjlbabwbhetn tt yf cdjtv hf,jxtv
rjvgm.ntht, ghbvtyzz, rfr ghfdbkj, HTML-htlfrnjh, cj[hfyztn tt b pfntv pfyjdj
pfuhe;ftn yf Web-cfqn. Âybvfntkmyj ghbcvjnhtdibcm r rfrjve-yb,elm gjhnfke,
ljgecnbv r CNN.com bkb BBC.co.uk, vj;yj gjlevfnm, xnj lkz j,yjdktybz cjlth;bvjuj
cdjb[ cfqnjd 'nb rjvgfybb ghbdktrf.n fhvb. dthcnfkmobrjd. Íf cfvjv ;t ltkt
ceotcndetn kexibq cgjcj, — bcgjkmpjdfybt rjywtgwbb lbyfvbxtcrjuj Web-cfqnf.
×nj nfrjt lbyfvbxtcrbq Web-cfqn?
Êf;lfz jnj,hf;ftvfz cnhfybwf lbyfvbxtcrb[ Web-cfqnjd jcyjdfyf yf if,kjyyjq
cnhfybwt, d rjnjhe. dcnfdkztncz gjcnjzyyj vtyz.ottcz byajhvfwbjyyjt yfgjkytybt,
rjnjhjt j,sxyj [hfybncz d ,fpt lfyys[. Êjulf gjkmpjdfntkm pfghfibdftn cnhfybwe,
cjjndtncnde.ofz byajhvfwbz bpdktrftncz bp ,fps, dcnfdkztncz d if,kjy, j,hfpez
yjde. Web-cnhfybwe, b gthtcskftncz Web-cthdthjv d gjkmpjdfntkmcrbq ,hfepth,
rjnjhsq b jnj,hf;ftn tt ljk;ysv j,hfpjv. Êhjvt byajhvfwbjyyjuj yfgjkytybz,
lbyfvbxtcrb vjuen cjplfdfnmcz nfr;t b 'ktvtyns yfdbufwbb gj Web-cfqne. Òfrbv
j,hfpjv, tckb dfv ye;yj j,yjdbnm cjlth;bvjt cdjtuj cfqnf, ds ghjcnj lj,fdkztnt
ntrcn lkz yjdjq cnhfybws, rjnjhsq pfntv dcnfdkztncz d ,fpe lfyys[ c gjvjom.
jghtltktyyjuj vt[fybpvf. Â htpekmnfnt gjkexftncz, xnj Web-cfqn rfr ,s cfv ct,z
j,yjdkztn.
Ïjxtve lbyfvbxtcrbt cfqns kexit
Ñhfpe gjckt njuj rfr lbyfvbxtcrbq cfqn cjplfy b pfgeoty d hf,jne, yfxbyf.n
ghjzdkznmcz tuj ghtbveotcndf. Òtgthm d dfitv hfcgjhz;tybb bvttncz chfdybntkmyj
yt,jkmijt rjkbxtcndj if,kjyys[ cnhfybw, c gjvjom. rjnjhs[ utythbhe.ncz cjnyb, f
vj;tn ,snm, b nsczxb Web-cnhfybw. Âbl (lbpfqy) cfqnf vj;tn ,snm kturj bpvtyty c
gjvjom. vjlbabrfwbb 'nb[ if,kjyjd. Èpvtytybt cjlth;bvjuj ,fps lfyys[ vj;yj
ghjbpdjlbnm xthtp Web-bynthatqc c bcgjkmpjdfybtv HTML-ajhvs, yt dnjhufzcm ghb
'njv d nt[ybxtcrbt ltnfkb rf;ljq cgtwbabxtcrjq ÑÓÁÄ.
Ñjplfybt lbyfvbxtcrjuj cfqnf
Ïthdjt, xnj ye;yj lkz cjplfybz lbyfvbxtcrjuj cfqnf, — 'nj Web-cthdth,
yfghbvth Apache.
Web-cthdth vj;tn bcgjkmpjdfnmcz lkz j,cke;bdfybz 'ktrnhjyyjuj vfufpbyf,
cthdthf yjdjcntq, gjbcrjdjuj vt[fybpvf, cbcntvs lbcnfywbjyyjuj j,extybz b lf;t
lkz dctq cjdjregyjcnb gthtxbcktyys[ cath. Âs,jh Web-cthdthf pfdbcbn jn njuj,
rfrbv dbljv ltzntkmyjcnb xfcnyjt kbwj bkb jhufybpfwbz cj,bhftncz pfybvfnmcz d
Èynthytnt.
Ítvyjubt bp ghbybvftvs[ d ,bpytct cnhfntubxtcrb[ htitybq cnjkm ;t pyfxbvs,
rfr ds,jh gkfnajhvs lkz Web-cthdthf. Õfhfrnthbcnbrb cthdthf — 'nj xhtpdsxfqyj
df;ysq afrnjh, jghtltkz.obq yflt;yjcnm epkf, tuj «jnpsdxbdjcnm» yf pfghjcs
rkbtynjd, f nfr;t nj, rfrbt ecbkbz ytj,[jlbvj ghtlghbybvfnm lkz gjllth;fybz tuj
d hf,jxtv cjcnjzybb. Ïhb ghfdbkmyjv ds,jht rjvgjytynjd b rfxtcndtyyjv ghjtrnt
Web-eptk vj;tn cnfnm lkz rkbtynjd b gfhnythjd yjdsv, ,jktt elj,ysv cgjcj,jv
dpfbvjltqcndbz c dfitq rjvgfybtq. Ïthtuheprf Web-cthdthf vj;tn ghbdtcnb r njve,
xnj cthdth ,fp lfyys[ bkb rfrjq-kb,j byjq htcehc cnfytn ytljcnegysv lkz
rkbtynjd.
Êhegyst rjvgfybb lj ytlfdytuj dhtvtyb ltkfkb cnfdrb yf Microsoft Internet
Information Server, Netscape FastTrack, IBM WebSphere, f Apache d jcyjdyjv
bcgjkmpjdfkcz yt,jkmibvb rjvgfybzvb. Îlyfrj ctqxfc cbnefwbz ytcrjkmrj
bpvtybkfcm, b Apache yfxbyftn gjllth;bdfnm hf,jnjcgjcj,yjcnm ytrjnjhs[ rhegys[
Èynthytn-ghjtrnjd, d xfcnyjcnb Yahoo.
Ïjkye. dthcb. cnfnmb ds vj;tnt yfqnb yf yfitv CD-ROM.
Apache ghtljcnfdkztn ,jufnst djpvj;yjcnb, gjpdjkz.obt yfcnhjbnm Web-cthdth d
cjjndtncndbb c gjnht,yjcnzvb bylbdblefkmys[ b rjhgjhfnbdys[ gjkmpjdfntktq.
Ífcnhjqrf ghjbpdjlbncz c gjvjom. lbhtrnbd, cjlth;fob[cz d rjyabuehfwbjyys[
afqkf[. Apache gjpdjkztn cjplfdfnm dbhnefkmyst Web-epks, f nfr;t dsgjkyztn
aeyrwbb proxy-cthdthf. Åckb ye;yj ghtljcnfdbnm ljcneg r cjlth;bvjve cthdthf
kbim juhfybxtyyjve rheue kbw, Web-cthdth vj;yj yfcnhjbnm nfr, xnj,s ghb
j,hfotybb r erfpfyysv rfnfkjufv cthdth ghjdthzk htubcnhfwbjyyst bvtyf b gfhjkb
d cj,cndtyyjq bkb d jlyjq bp gjlrk.xtyys[ r ytve ,fp lfyys[.
Äfktt dfv ye;yj htibnm, rfr ds cj,bhftntcm [hfybnm byajhvfwbjyyjt yfgjkytybt
(rjyntyn), rjnjhjt jnj,hf;ftncz yf Web-cnhfybwt. Â lfyyjq cnfnmt yf rjyrhtnyjv
ghbvtht vs gjrf;tv, rfr cjplfnm ,fpe lfyys[ d ÑÓÁÄ MySQL, rjnjhfz gjpdjkbn yfv
hfp,bnm Web-rjyntyn yf nf,kbws, cjlth;fobt gjkz b pfgbcb c lfyysvb. Ïjkt — 'nj
lbcrhtnyfz tlbybwf lfyys[ d nf,kbwt. Ífghbvth, vs vj;tv cjplfnm nf,kbwe
tbl_news_items c gjkzvb col_title, col_date, col_fullstory, col_author. ÑÓÁÄ
MySQL — jnkbxysq ds,jh lkz cjplfybz nfrjq ,fps lfyys[ dcktlcndbt ghjcnjns d
bcgjkmpjdfybb b flvbybcnhbhjdfybb, cdj,jlyjq hfcghjcnhfyztvjcnb lkz hfpys[
gkfnajhv, drk.xfz Linux b Windows, b ,scnhj hfcneotq gjgekzhyjcnb.
Ïjckt 'njuj vs cjplflbv lbyfvbxtcrbt if,kjyyst cnhfybws yf HTML. ×nj,s
hfphf,jnfnm ghbkj;tybz lkz dpfbvjltqcndbz c ,fpjq lfyys[ b if,kjyfvb, vs
djcgjkmpetvcz zpsrjv Perl.
Íf cfvjv ltkt yfv ytj,[jlbvj cjplfnm nhb Perl-ghjuhfvvs, bkb crhbgnf: jlby
,eltn jnj,hf;fnm ccskrb yf dct bvt.obtcz ghtcc-htkbps (pr-list-dbi.pl), lheujq
— cjlth;bvjt ds,hfyyjuj ghtcc-htkbpf (pr-content-dbi.pl), f nhtnbq gjpdjkbn yfv
lj,fdbnm cdt;bq ghtcc-htkbp d ,fpe lfyys[ (pr-add-dbi.pl). Ðf,jne gj dthcnrt
vj;yj djpkj;bnm yf k.,bvsq HTML-htlfrnjh, yfghbvth, Allaire HomeSite (http://www.allaire.com/).
Òjkmrj gjvybnt, xnj ghb cjplfybb if,kjyf ytj,[jlbvj jcnfdkznm gecnst j,kfcnb, d
rjnjhst ,eltn dcnfdkznmcz lbyfvbxtcrjt yfgjkytybt (tcntcndtyyj, gthtvtyyjq
lkbys).
Ïjckt hfphf,jnrb j,otuj lbpfqyf lkz cdjb[ ghtcc-htkbpjd ghjcnj dcnfdmnt d
erfpfyyst dsit gecnst j,kfcnb cgtwbfkmyst rk.xtdst ckjdf (cv. j, 'njv yb;t).
Êfr njkmrj gjkmpjdfntkm pfghjcbn rfrjq-kb,j ghtcc-htkbp, Web-cthdth j,hf,jnftn
Perl-rjl b pfvtybn rk.xtdst ckjdf d if,kjyf[ byajhvfwbjyysv yfgjkytybtv,
bpdktxtyysv bp ,fps lfyys[, nj tcnm rfrbv-nj rjyrhtnysv ghtcc-htkbpjv.
È gjcktlytt, xnj ye;yj cltkfnm, — pfuhepbnm dfib if,kjys yf Web-cthdth d
jghtltktyyst lbhtrnjhbb. Ìj;yj djcgjkmpjdfnmcz FTP-rkbtynjv CuteFTP (http://www.cuteftp.com/), yj
vs ghtlgjxbnftv bcgjkmpjdfnm afqkjde. j,jkjxre FAR. Ädt df;yst dtob, rjnjhst
cktletn pfgjvybnm: gthdjt — afqks if,kjyjd ljk;ys cjlth;fnm bvtyf, jrfyxbdf.obtcz
yf .pl, b dnjhjt — jyb ljk;ys bvtnm ghfdj yf dsgjkytybt (d UNIX-cbcntvf[ yflj
dsgjkybnm rjvfyle chmod 0755 bvz_if,kjyf.pl). Ýnj dct!
Äj,fdktybt aeyrwbjyfkmyjcnb
Ít ghtlcnfdkztn jcj,s[ ckj;yjcntq lj,fdktybt aeyrwbjyfkmys[ djpvj;yjcntq r
vt[fybpve ge,kbrfwbb ghtcc-htkbpjd. Ìj;yj jncjhnbhjdfnm ccskrb yf ljcnegyst d
,fpt lfyys[ ghtcc-htkbps gj lfnt bkb yfpdfyb., uheggbhez b[ gj ujlfv. Èkb,
yfghbvth, ds pf[jnbnt jnj,hfpbnm ckexfqysq ghtcc-htkbp yf dfitq Web-cnhfybwt,
dhtvz jn dhtvtyb ghtljcnfdkzz tuj byajhvfwb. gjctnbntkzv ytpfdbcbvj jn njuj,
rjulf jy ,sk htfkmyj jge,kbrjdfy. Íj crjhtt dctuj cfvjq df;yjq b gjktpyjq
aeyrwbjyfkmyjcnm. ,eltn lj,fdktybt HTML-ajhvs lkz ddjlf cjlth;bvjuj
ghtcc-htkbpf b hfphf,jnrb CGI-ghjuhfvvs yf Perl d wtkz[ j,hf,jnrb 'njq ajhvs b
gjcktle.otuj hfpvtotybz ljrevtynf d ,fpt lfyys[. Ífgjvybv, xnj CGI (Common
Gateway Interface) — ghjnjrjk, vt[fybpv, bkb ajhvfkmyjt cjukfitybt vt;le
Web-cthdthjv b jnltkmyjq ghjuhfvvjq. Ñthdth rjlbhetn d[jlyst lfyyst, yfghbvth
HTML-ajhvs, f ghjuhfvvf CGI ltrjlbhetn b[ b utythbhetn gjnjr ds[jlys[ lfyys[. Â
cgtwbabrfwbb ghjnjrjkf ybxtuj yt crfpfyj j rfrjv-kb,j jghtltktyyjv zpsrt
ghjuhfvvbhjdfybz. Ïj'njve ghjuhfvvs, cjjndtncnde.obt 'njve ghjnjrjke, vjuen
,snm yfgbcfys ghfrnbxtcrb yf k.,jv zpsrt — yf C, C++, Visual Basic, Delphi,
Tcl, Python bkb, rfr d yfitv ckexft, yf Perl.
Ïjldtltv ytrjnjhst bnjub. Íflttvcz, xnj 'nf cnfnmz gjvj;tn dfv jwtybnm
ghtbveotcndf rjywtgwbb lbyfvbxtcrb[ Web-cnhfybw gthtl cnfnbxtcrbvb. Ïhbvtytybt
lfyyjq rjywtgwbb ghbdtltn r cjrhfotyb. hexyjq hf,jns, gjvj;tn hfcghtltkbnm
hf,jxe. yfuhepre cthdthf b gjpdjkbn ,scnhj edtkbxbnm rjkbxtcndj byajhvfwbjyyjuj
yfgjkytybz cfqnf. Êjv,byfwbz bp Apache, MySQL b Perl ghtljcnfdbn ghfrnbxtcrb
,tcgkfnye., ghjcne. d bcgjkmpjdfybb, ub,re. d ecnfyjdrt b yfcnhjqrt
rhjcc-gkfnajhvtyye. b vfcinf,bhetve. chtle hfphf,jnrb. Çltcm vs yt ,eltv
hfccvfnhbdfnm jcj,tyyjcnb b[ ecnfyjdrb, nfr rfr, dj-gthds[, yf 'nj gjghjcne yt
[dfnbn vtcnf, jndtltyyjuj lkz lfyyjq cnfnmb, f dj-dnjhs[, rf;ljt bp 'nb[
chtlcnd gjcnfdkztncz dvtcnt c dtcmvf gjlhj,yjq ljrevtynfwbtq.
Ñjplfybt ,fps lfyys[ d ÑÓÁÄ MySQL
Ðfphf,jnrf vjltkb ,fps lfyys[
Ïthdsv b yfb,jktt df;ysv ltqcndbtv ghb cjplfybb ,fps lfyys[ zdkztncz
hfphf,jnrf tt vjltkb. Ènfr, ghbcnegftv.
Øfu 1
Ífv ye;yj rfr-nj yfpdfnm ,fpe lfyys[. Ífpjdtv tt db_website.
Øfu 2
Ítj,[jlbvj jghtltkbnm, xnj bvtyyj ,elen cjlth;fnm nf,kbws ,fps lfyys[. Â ÁÄ
vjuen d[jlbnm cjnyb nf,kbw. Ñyfxfkf yfv gjnht,etncz dctuj jlyf nf,kbwf lkz
[hfytybz yfib[ ghtcc-htkbpjd. Ífpjdtv tt tbl_news_items.
Øfu 3
Ñktletn jghtltkbnm gjkz, rjnjhst ,eltn cjlth;fnm yfif nf,kbwf. Ýnb gjkz
,elen zdkznm cj,jq dct 'ktvtyns ghtcc-htkbpf. Â yfitv ghbvtht bcgjkmpe.ncz gznm
gjktq: col_id (xbckjdjq bltynbabrfnjh ghtcc-htkbpf), col_title (yfpdfybt),
col_date (lfnf ge,kbrfwbb), col_fullstory (cjlth;bvjt), col_author (bvz
fdnjhf). Ïjkt col_id ,eltn cjlth;fnm eybrfkmysq bltynbabrfnjh, gj rjnjhjve
gjkmpjdfntkm cvj;tn pfghfibdfnm cjlth;bvjt jghtltktyyjuj ghtcc-htkbpf.
Ñjplfybt ,fps lfyys[
Òtgthm yfv ytj,[jlbvj ecnfyjdbnm cjtlbytybt c ÑÓÁÄ MySQL b cjplfnm yfie ,fpe
lfyys[. Íb;t vs gjrf;tv, rfr cltkfnm 'nj bp rjvfylyjq cnhjrb. Îlyfrj ceotcndetn
vyj;tcndj cbcntv eghfdktybz, bkb vtytl;thjd ÑÓÁÄ MySQL, rjnjhst gjpdjkz.n
flvbybcnhbhjdfnm tt, bcgjkmpez lhe;tcndtyysq uhfabxtcrbq bynthatqc.
Ïht;lt dctuj dfv j,zpfntkmyj cktletn pyfnm jcyjds zpsrf pfghjcjd SQL
(Structured Query Language). Â gjcnfdre ÑÓÁÄ MySQL d[jlbn gjkyjt jgbcfybt
gjllth;bdftvjq cgtwbabrfwbb SQL. Ýnjn zpsr ytckj;ty lkz gjcnb;tybz, gjcrjkmre
tuj jgthfnjhs b b[ rjycnherwbb kturj gjyznm b pfgjvybnm. Äkz hf,jns dfv
gjnht,e.ncz jgthfnjhs cjplfybz (CREATE bkb INSERT), ds,jhrb (SELECT) b elfktybz
(DROP bkb DELETE) lfyys[, f nfr;t b[ bpvtytybz (UPDATE, MODIFY). Â rjyrhtnys[
ghbvthf[ vs djcgjkmpetvcz njkmrj ytrjnjhsvb bp yb[.
×nj,s yt hfccvfnhbdfnm ecnfyjdre gjkmpjdfntkmcrb[ extnys[ pfgbctq (user
accounts) b yfpyfxtybt ytj,[jlbvs[ ghfd ljcnegf, ghtlgjkj;bv, xnj ds
bcgjkmpetnt extnye. pfgbcm flvbybcnhfnjhf (root).
Øfu 1
Înrhjqnt nthvbyfkmyjt jryj (tckb ds hf,jnftnt d uhfabxtcrjq j,jkjxrt X
Window ÎÑ Linux bkb d ÎÑ Windows 9x/NT/2000) b ecnfyjdbnt cjtlbytybt c ÑÓÁÄ
MySQL, ddtlz d rjvfylyjq cnhjrt mysql. Â jndtn ds ljk;ys gjkexbnm ghbukfitybt
lkz ddjlf rjvfyl mysql>.
Øfu 2
Ñjplflbv yfie ,fpe lfyys[, ddtlz:
CREATE DATABASE db_website;
Ïjckt ddjlf rf;ljq rjvfyls yt pf,sdfqnt gtxfnfnm cbvdjk (;). Îy jxtym df;ty,
gjcrjkmre gjcskftn MySQL cbuyfk rjywf ddjlf rjvfyls.
Øfu 3
Äfktt ytj,[jlbvj gjckfnm rjvfyle, erfpsdf.oe. cbcntvt MySQL, rfre. rjyrhtnyj
,fpe lfyys[ vs cj,bhftvcz bcgjkmpjdfnm. Âdtlbnt:
use db_website;
Øfu 4
Ñjplflbv nf,kbwe tbl_news_items, ult jghtltkbv nbg lfyys[, rjnjhst ,elen
[hfybnmcz d tt gjkz[. Âdtlbnt:
1. CREATE TABLE tbl_news_items ( 2. col_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 3. col_title VARCHAR(100), 4. col_author VARCHAR(100), 5. col_body TEXT, 6. col_date DATE 7. );
Øfu 5
Òtgthm, rjulf vs cjplfkb nf,kbwe lkz [hfytybz yfib[ lfyys[, yfv ye;yj
pfgjkybnm tt rfrbvb-nj ghbvthysvb lfyysvb. Çfvtnmnt, xnj d yb;tcktle.otq
rjvfylt vs yt ,eltv jghtltkznm gjkt col_id, gjnjve xnj jyj pfgjkyztncz
fdnjvfnbxtcrb gj vtht lj,fdktybz yjds[ lfyys[. Òfr;t bvtqnt d dble, xnj
cbynfrcbc lkz lfns — <ujl/vtczw/ltym>. Ènfr, d rjvfylyjq cnhjrt mysql>
ddtlbnt cktle.oe. rjvfyle.
8. INSERT INTO tbl_news_items (col_title, _ col_author, col_body, col_date) 9. VALUES ( 10. ‘Ìjq gthdsq ghtcc-htkbp’, 11. ‘Âfit Èvz’, 12. ‘Ýnjn ghtcc-htkbp [hfybncz d ÁÄ MySQL’, 13. ‘2001/4/15’ 14. );
Âdtlbnt tot ytcrjkmrj gjlj,ys[ pfghjcjd lkz dcnfdrb. ×nj,s ghjcvjnhtnm nj,
xnj [hfybncz d ,fpt lfyys[, d rjvfylyjq cnhjrt mysql> ddtlbnt:
SELECT * FROM tbl_news_items;
Ñjplfybt lbyfvbxtcrb[ Web-cnhfybw yf Perl
Ïjlujnjdrf r hf,jnt
Äkz pfgecrf Perl-ghjuhfvv gjyflj,bncz bynthghtnfnjh Perl dthcbb 5.005 bkb
5.6 lbcnhb,enbdjd Perl Standard bkb ActiveState Perl lkz UNIX bkb Win32. Åckb
ds ,eltnt pfybvfnmcz hfphf,jnrjq ghbkj;tybq lkz aeyrwbjybhjdfybz gjl Win32, nj
gfrtn jn ActiveState ytcrjkmrj elj,ytt d bcgjkmpjdfybb, r njve ;t d ytuj d[jlbn
enbkbnf PPM lkz ecnfyjdrb ljgjkybntkmys[ vjlektq.
Äkz jhufybpfwbb dpfbvjltqcndbz yfib[ Perl-ghjuhfvv c ÑÓÁÄ MySQL ytj,[jlbvj,
xnj,s d gjcnfdre Perl d[jlbk vjlekm DBI. Ïjcrjkmre vjlekm d jcyjdyjv ybxtuj cfv
yt ltkftn, f gthtrkflsdftn dct jgthfwbb gj dpfbvjltqcndb. c ,fpfvb lfyys[ yf
cjjndtncnde.obq bv lhfqdth, nj nht,etncz ecnfyjdrf ,b,kbjntrb DBD-Mysql
(lhfqdth r ÁÄ MySQL lkz vjlekz DBI). Êfr pfzdbk Òbv Ám.yc (Tim Bunce), fdnjh b
hfphf,jnxbr erfpfyyjuj vjlekz, «DBI — 'nj API-bynthatqc lkz jhufybpfwbb ljcnegf
r ,fpfv lfyys[ bp Perl-ghjuhfvv. Ñgtwbabrfwbz DBI API jghtltkztn yf,jh aeyrwbq,
gthtvtyys[ b ghfdbk, bcgjkmpetvs[ lkz ghjphfxyjuj bynthatqcf c ,fpfvb lfyys[».
Êjywtgwbz lhfqdthjd ,fp lfyys[ dtcmvf elj,yf, gjcrjkmre d cdjtv
Perl-ghbkj;tybb ds bcgjkmpetnt cnfylfhnyst lkz DBI dspjds, rjnjhst pfntv
gthtflhtce.ncz vjlekb cjjndtncnde.otve lhfqdthe, f njn, d cdj. jxthtlm, e;t
yfghzve. ,eltn dpfbvjltqcndjdfnm c ÁÄ, yt nht,ez jn dfc bpextybz nt[ybxtcrb[
jcj,tyyjcntq rf;ljq rjyrhtnyjq ÑÓÁÄ. Òfrbv j,hfpjv, ceotcnde.n lhfqdths
DBD::Sybase, DBD::Oracle, DBD::Informix b n.l. (hbc. 1, 2).
Ðbc. 1. Àh[bntrnehf DBI
Ðbc. 2. Ïjnjr lfyys[ xthtp
bynthatqc DBI
Ítvyjuj dsqltv pf hfvrb ntvfnbrb cnfnmb. Äjgecnbv, xnj d gjcnfdre DBI yt
d[jlbn lhfqdth lkz cgtwbabxtcrjq ÑÓÁÄ. Â lfyyjv ckexft yf gjvjom ghbltn vjcn
DBD-ODBC. Äjcnfnjxyj cjplfnm yjdsq bcnjxybr lfyys[ (Data Source Name) lkz
lhfqdthf ODBC (Open DataBase Connectivity), ult ye;yj ds,hfnm nbg 'njq ÑÓÁÄ,
flhtc [jcnf, gj rjnjhjve yflj ecnfyjdbnm cjtlbytybt, bvz ,fps lfyys[ b
fdnjhbpfwbjyyst lfyyst, nj tcnm bvz gjkmpjdfntkz b gfhjkm (hbc. 3). È pfntv,
bcgjkmpez vjlekm DBI, dpfbvjltqcndjdfnm c ,fpjq lfyys[. Êhjvt njuj, rfr
ghfdbkj, d cnfylfhnye. gjcnfdre ActiveState Perl d[jlbn vjlekm Win32::ODBC
(Win32-ODBC). Ðf,jnf c ybv ytvyjuj jnkbxftncz jn hf,jns c DBI, yj d wtkjv jxtym
gj[j;f. Ðfpybwf kbim d njv, xnj Win32::ODBC — vjlekm njkmrj lkz Win32-cbcntv b
gjpdjkztn hf,jnfnm c «hjlysvb» aeyrwbzvb ODBC ,jktt 'aatrnbdyj, xtv DBD::ODBC.
Ðbc. 3. Äj,fdktybt yjdjuj
bcnjxybrf lfyys[ xthtp ODBC-flvbybcnhfnjh
Ìt;le ODBC b DBI vj;yj ghjdtcnb gfhfkktkm. DBI — 'nj fyfkju ODBC
Administrator (vtytl;thf lhfqdthjd ,fp lfyys[). Êf;lsq DBD-lhfqdth gj cdjbv
aeyrwbzv cjjndtncndetn ODBC-lhfqdthe. Ìj;tn cvenbnm kbim njn afrn, xnj
ceotcndetn, rfr ujdjhbkjcm dsit, lhfqdth DBD::ODBC. Íj jy dctuj kbim gjpdjkztn
ecnfyjdbnm cdzpm DBI c ODBC-lhfqdthfvb.
Äkz ecnfyjdrb DBI b DBD-Mysql, c gjvjom. enbkbns PPM d chtlt Win32 ddtlbnt d
rjvfylyjq cnhjrt:
ppm install DBI
Î,hfnbnt dybvfybt, xnj d 'njn vjvtyn dfi rjvgm.nth ljk;ty ,snm gjlrk.xty r
Èynthytne. Åckb ;t cjjndtncnde.obq vjlekm bvttncz e dfc yf kjrfkmyjv lbcrt,
djcgjkmpeqntcm cghfdjxyjq byajhvfwbtq, ddtlz rjvfyle:
ppm help install
Äkz gjkmpjdfntktq UNIX-cbcntv ecnfyjdrf vjlekz DBI ,eltn ghj[jlbnm ghfrnbxtcrb
nfr ;t, rfr b ecnfyjdrf lheub[ Perl-vjlektq:
tar –zxvf DBI-1.06.tar.gz cd DBI-1.06/ perl Makefile.PL make make test make install
Ìj;yj nfr;t djcgjkmpjdfnmcz j,jkjxrjq CPAN. Åckb ;t yf dfitv rjvgm.ntht
ecnfyjdktyf UNIX-dthcbz gfrtnf jn ActiveState, nj vj;yj hf,jnfnm b c
ecnfyjdjxyjq enbkbnjq PPM. Èyjulf ,sdftn, xnj j,jkjxrb CPAN b PPM yt
aeyrwbjybhe.n, tckb d ctnb ghtlghbznbz, r rjnjhjq gjlrk.xty dfi rjvgm.nth,
ecnfyjdkty ,hfylvfe'h, bkb ctntdjq 'rhfy (firewall). Â lfyyjv ckexft dfv
gjvjuen njkmrj vjlekb c bc[jlysvb ntrcnfvb, pfuhe;tyyst dhexye.. Äkz b[
ecnfyjdrb b gjlrk.xtybz r Perl bkb Apache gjnht,etncz bynthghtnfnjh Perl,
rjvgbkznjh C/C++ bkb GCC/PGCC b rfrfz-kb,j bp enbkbn-c,jhobrjd make (bp
gjcnfdrb jlyjuj bp rkjyjd UNIX, f nfr;t Microsoft Visual C++), nmake bkb dmake.
Òfrbv j,hfpjv, ghjwtlehf ecnfyjdrb vjlektq ytcrjkmrj eckj;yztncz. Ïjxnb c
rf;lsv bp yb[ gjcnfdkztncz ljrevtynfwbz gj «c,jhrt», ,kfujlfhz rjnjhjq e dfc yt
ljk;yj djpybryenm jcj,s[ nhelyjcntq.
Âsdjl cgbcrf cnfntq
Òtgthm, rjulf e dfc tcnm hf,jnf.ofz ,fpf lfyys[ c ghtcc-htkbpfvb, vj;yj ,tp
jcj,s[ ghj,ktv gjlrk.xbnm tt r Web-cnhfybwt. Ífxytv c cjplfybz ghjcntqitq
cnhfybws, rjnjhfz jnj,hf;ftn cgbcjr dct[ bvt.ob[cz ghtcc-htkbpjd. Çfvtnmnt, xnj
gj evjkxfyb. Web-cthdth Apache «levftnm», xnj dct dfib ljrevtyns ljk;ys
yf[jlbncz d tuj lbhtrnjhbb htdocs, f bcgjkyztvst afqks — d cgi-bin.
Ñktljdfntkmyj, ytj,[jlbvj gjvtcnbnm dct afqks c hfcibhtybtv .pl d rfnfkju
cgi-bin. Â cdj. jxthtlm, cjplfdftvst afqks HTML-if,kjyjd ye;yj hfpvtcnbnm d
rfnfkjut tpl. Èthfh[bz rfnfkjujd ,eltn dsukzltnm cktle.obv j,hfpjv:
/ (rjhtym k.,juj lbcrf) /local /local/usr /local/usr/bin /local/usr/cgi-bin /local/usr/htdocs /local/usr/tpl
Äkz cbcntv DOS/Windows genm r cgi-bin vj;tn dsukzltnm nfr:
c:localusrcgi-bin
Øfu 1
Ècgjkmpez cdjq k.,bvsq ntrcnjdsq htlfrnjh, cjplfqnt afqk pr-list-tpl.htm:
15. 16. 17. 18. 19. 20. @BLOCK@ 21. 22.
Ýnjn afqk ghtlyfpyfxty lkz jnj,hf;tybz cgbcrf dct[ ljcnegys[ ghtcc-htkbpjd.
Øfu 2
Ñjplfqnt afqk pr-list-block-tpl.htm, rjnjhsq ,eltn jnj,hf;fnm rf;lsq ,kjr c
yfqltyysv ghtcc-htkbpjv d dblt nf,kbws:
23. "2" cellspacing="1"> 24. 25. 26.
Øfu 3
Ñjplfqnt afqk pr-content-tpl.htm, rjnjhsq ,eltn jnj,hf;fnm cjlth;fybt
ghtcc-htkbpf:
27. 28. 29. 30. 31. 32. @TITLE@ 33. 34. 35. 36. 37. @TITLE@ |
---|
Author: @AUTHOR@ Date: @DATE@ | @BODY@ |
38. Show the list of press-releases.. 39. 40.
Øfu 4
Ñjplfqnt Perl-crhbgn pr-list-dbi.pl, rjnjhsq ,eltn xbnfnm lfyyst bp ,fps
lfyys[ db_website b, bcgjkmpez if,kjyyst HTML-afqks, jnj,hf;fnm cgbcjr
ghtcc-htkbpjd (ntrcn 'njuj crhbgnf ds cvj;tnt yfqnb yf yfitv rjvgfrn-lbcrt).
À ntgthm ghjqltvcz gj kbcnbyue rjlf b hfccvjnhbv, rfr hf,jnftn ghjuhfvvf
dsdjlf cgbcrf ghtcc-htkbpjd.
Ñnhjrb 1-9 ghtlcnfdkz.n cj,jq rfr ,s bybwbfkbpbhe.obq ,kjr, d rjnjhjv
j,]zdkz.ncz dct ukj,fkmyst gthtvtyyst b rjycnfyns:
41. #!/local/usr/bin/perl 42. 43. use DBI; 44. $dbh = DBI->connect(‘dbi:mysql:db_website’,’root’,’’); 45. $path = "/local/usr/tpl"; 46. $TPL_LIST = "$path/pr-list-tpl.htm"; 47. $TPL_LIST_BLOCK = "$path/pr-list-block-tpl.htm"; 48. 49. print "Content-type:text/htmlnn";
Ñgthdf vs cjj,oftv Web-cthdthe Apache genm, erfpsdf.obq, ult yf[jlbncz
bynthghtnfnjh Perl, rjnjhsq pfgecrftncz ghb pfghjct crhbgnf, ghjdthztn tuj yf
jib,rb b pfntv dsgjkyztn tuj. Äfktt vs j,]zdkztv vjlekm DBI (DataBase
Interface), vtnjls rjnjhjuj ,elen bcgjkmpjdfnmcz d ghjuhfvvt lkz dpfbvjltqcndbz
c ,fpjq lfyys[ (cnhjrf 3). Çfntv vs ecnfyfdkbdftv cjtlbytybt c yfitq ,fpjq
lfyys[ db_website (4), erfpsdfz d rfxtcndt d[jlyjuj bvtyb gjkmpjdfntkz root
(flvbybcnhfnjh), f d rfxtcndt gfhjkz gecne. cnhjre (pyfxtybt, ghbyznjt gj
evjkxfyb.). Â gthtvtyyjq $path erfpsdftv genm, gj rjnjhjve yf[jlzncz afqks
HTML-if,kjyjd (5). Â gthtvtyys[ $TPL_LIST b $TPL_LIST_BLOCK cjjndtncndtyyj
erfpsdftv b[ bvtyf (6, 7). Ïjnjv, cjj,oftv Web-cthdthe, xnj dct bc[jlzobt
lfyyst ljk;ys ghtlcnfdkznmcz d MIME-ajhvfnt text/html lkz dsdjlf HTML-gjnjrf d
gjkmpjdfntkmcrbq ,hfepth (9).
Ñnhjrb 11-22 ghtlcnfdkz.n cj,jq ntkj ghjuhfvvs:
50. 51. open (L, "$TPL_LIST"); 52. while ($line1=) { 53. chomp($line1); 54. if ($line1=~/@BLOCK@/) { 55. read_db(); 56. ins_data(); 57. } else { 58. print "$line1n"; 59. } 60. } 61. close(L); 62. 63. $dbh->disconnect;
Înrhsdftv afqk-if,kjy pr-list-tpl.htm (11) b d wbrkt (12-20) ghjcvfnhbdftv
tuj, pfgbcsdfz rf;le. cxbnfyye. cnhjre d gthtvtyye. $line. Âj dhtvz rf;ljq
bnthfwbb ghjbpdjlbv ghjdthre yf yfkbxbt d 'njq cnhjrt rk.xtdjuj ckjdf @BLOCK@
(14-19), jpyfxf.otuj, xnj d lfyyjv vtcnt yflj dcnfdbnm ,kjr c ghtcc-htkbpjv.
Êfr njkmrj jyj yfqltyj, dspsdftv ghjwtlehs read_db() b ins_data().
Ñnhjrb 26-39 — ntkj ghjwtlehs read_db(), ghtlyfpyfxtyyjq lkz cxbnsdfybz
cjlth;bvjuj nf,kbws tbl_news_items, d rjnjhjq [hfyzncz yfib ghtcc-htkbps:
64. 65. 66. sub read_db { 67. $c=0; 68. my($sql) = "SELECT * FROM tbl_news_items"; 69. $rs = $dbh->prepare($sql); 70. $rs->execute; 71. while (my $ref = $rs->fetchrow_hashref()) { 72. $id[$c] = "$ref->{‘col_id’}"; 73. $title[$c] = "$ref->{‘col_title’}"; 74. $author[$c] = "$ref->{‘col_author’}"; 75. $date[$c] = "$ref->{‘col_date’}"; 76. $c++; 77. } 78. $rs->finish(); 79. }
Èybwbfkbpbhetv cxtnxbr $c=0, cjcnfdkztv pfghjc ds,jhrb dct[ lfyys[ bp
nf,kbws (28), dsgjkyztv pfghjc (29, 30) b gjkexftv lfyyst d htrjhlctn
(recordset — yf,jh pfgbctq) $rs. Çfntv d wbrkt (31-37) bpdktrftv lfyyst bp
htrjhlctnf, bcgjkmpez vtnjl fetshrow_hashref b djpdhfofz ccskre yf
fccjwbfnbdysq vfccbd %ref (31), cjlth;fobq bvtyf b pyfxtybz gjktq ntreotq
pfgbcb. Çfgbcsdftv bpdktxtyyst lfyyst (32-35) d cjjndtncnde.obt b[ nbgfv
j,sxyst vfccbds @id, @title, @author b @date. Çfrhsdftv htrjhlctn (38).
Ñnhjrb 41-53 — ntkj ghjwtlehs ins_data(), htfkbpe.otq dcnfdre bpdktxtyys[ bp
ÁÄ lfyys[ d bc[jlzobq gjnjr lfyys[; cnhjrb 55-63 — ntkj ghjwtlehs pr_block(),
dspsdftvjq d wbrkt bp ghjwtlehs ins_data():
80. 81. sub ins_data { 82. $toread = "pr-read-dbi.pl"; 83. for ($i=0; $i<$c; $i++) { 84. $line = &pr_block; 85. 86. $line =~ s/@NUMBER@/$id[$i]/; 87. $line =~ s/@TITLE@/$title[$i]/; 88. $line =~ s/@AUTHOR@/$author[$i]/; 89. $line =~ s/@DATE@/$date[$i]/; 90. $line =~ s/@READ@/$toread/; 91. print "$line"; 92. } 93. } 94. 95. sub pr_block { 96. my($block) = ‘’; 97. open (B, "$TPL_LIST_BLOCK"); 98. while ($line=) { 99. $block = $block.$line; 100. } 101. close(B); 102. return ($block); 103. }
Ènfr, gjkexbd d htpekmnfnt dsgjkytybz ghjwtlehs read_db() vfrcbvfkmyjt
pyfxtybt cxtnxbrf $c, d wbrkt (43-52) vs pfgecrftv ghjwtlehe pr_block(),
rjnjhfz xbnftn cjlth;bvjt HTML-if,kjyf pr-list-block-tpl.htm b pfgbcsdftn tuj d
gthtvtyye. $block (59), pyfxtybt rjnjhjq pfntv djpdhfoftncz (62) d gthtvtyye.
$line (44) ghjwtlehs ins_data(). Äfktt d 'njv ;t wbrkt vs pfvtyztv (46-50)
yfqltyyst d bc[jlzotv gjnjrt $line rk.xtdst ckjdf @NUMBER@, @TITLE@, @AUTHOR@,
@DATE@, @READ@ yf cjjndtncnde.obt lfyyjq bnthfwbb wbrkf ($i) pyfxtybz vfccbdjd
@id, @title, @author, @date b gthtvtyyjq $toread.
Âsdjl ntrcnf ghtcc-htkbpf
Ïjckt njuj rfr vs dsdtkb cgbcjr dct[ bvt.ob[cz d ,fpt lfyys[ ghtcc-htkbpjd
(hbc. 4), ye;yj lfnm gjkmpjdfntk. djpvj;yjcnm ghjcvjnhtnm ntrcn rfrjuj-yb,elm
bp yb[ (cjjndtncnde.obq crhbgn ds nfr;t cvj;tnt yfqnb yf yfitv rjvgfrn-lbcrt).
Ðbc. 4.
Íjdsq crhbgn pr-read-dbi.pl ,eltn ytpyfxbntkmyj jnkbxfnmcz jn e;t cjplfyyjuj
yfvb pr-list-dbi.pl.
Äfyysq kbcnbyu yf 98% gj[jlbn yf kbcnbyu 1, [jnz, bvttn ytrjnjhst
ytpyfxbntkmyst jnkbxbz:
- gjlrk.xtyf ,b,kbjntrf CGI
lkz cxbnsdfybz gfhfvtnhf id (9) bp cnhjrb pfghjcf (yfghbvth,
http://localhost/cgi-bin/pr-content-dbi.pl?id=1);
- ghbvtyztncz dctuj jlby
HTML-if,kjy (pr-content-tpl.htm);
- pfghjc r ,fpt lfyys[
ljgjkyty eckjdysv SQL-jgthfnjhjv WHERE lkz ds,jhrb dct[ lfyys[,
cjjndtncnde.ob[ jghtltktyyjve ghtcc-htkbpe gj bltynbabrfnjhe col_id;
- bp ÁÄ nfr;t cxbnsdftncz
gjkt col_body c ntrcnjv ds,hfyyjuj ghtcc-htkbpf.
Ñjplfybt yjdjuj ghtcc-htkbpf
Ðfcibhbv aeyrwbjyfkmyjcnm yfitq cbcntvs, lj,fdbd djpvj;yjcnm cjplfybz yjds[
ghtcc-htkbpjd, ,tp ytj,[jlbvjcnb ytgjchtlcndtyyjq hf,jns c ,fpjq lfyys[ lkz
gjgjkytybz nf,kbws tbl_news_items yjdjq byajhvfwbtq.
Ènfr, yjdfz Perl-ghjuhfvvf (rjnjhfz, rfr b ghtlsleobt ldt, yf[jlbncz yf
rjvgfrn-lbcrt) ,eltn jnkbxfnmcz jn ghtlsleob[ ght;lt dctuj ntv, xnj
ghtlyfpyfxtyf yt lkz jnj,hf;tybz lfyys[, f lkz b[ lj,fdktybz d ÁÄ.
Ñktljdfntkmyj, vs ljk;ys ytcrjkmrj bpvtybnm xfcnm, jndtxf.oe. pf dpfbvjltqcndbt
c ÁÄ, ghbvtybd SQL-pfghjc INSERT b cjjndtncnde.obt tve jgthfnjhs vjlekz DBI.
Ñnhjrb 12-18 — 'nj ntkj jcyjdyjq ghjuhfvvs:
12. if ($cmd ne "add") { 13. &show_form; 14. } else { 15. $dbh = DBI->connect(‘dbi:mysql:db_website’, _ ’root’,’’); 16. &add_pr; 17. dbh->disconnect; 18. }
Çltcm vs ghjdthztv, gjcnegbkf kb rjvfylf yf lj,fdktybt ghtcc-htkbpf d ,fpe
lfyys[. Êfr njkmrj jyf gjcnegbkf, ecnfyfdkbdftv cjtlbytybt c ÁÄ (15), dsgjkyztv
gjlghjuhfvve app_pr() (16) b pfdthiftv cjtlbytybt (17). Åckb ;t rjvfyls yt
,skj, nj ghjcnj jnj,hf;ftv ajhve pfgjkytybz (13) lkz lfyys[ ghtcc-htkbpf —
ghjwtlehf show_form().
Ñnhjrb 20-36 — 'nj ntkj ghjwtlehs lj,fdktybz ghtcc-htkbpf pr_add():
19. 20. sub add_pr { 21. $title = $q->param("pr_title"); 22. $author = $q->param("pr_author"); 23. $body = $q->param("pr_body"); 24. $body =~ s/rn/ /g; 25. 26. my($sql) = "INSERT INTO tbl_news_items (col_title,col_author,col_body,col_date) VALUES (’$title’,’$author’,’$body’,CURDATE())"; 27. $rs = $dbh->do($sql); 28. 29. if ($@) { 30. $rc = $dbh->rollback; 31. } else { 32. $rc = $dbh->commit; 33. } 34. 35. print "Location: /cgi-bin/pr-list-dbi.plnn"; 36. }
Ñgthdf j,hf,fnsdftv lfyyst ajhvs (22-25), cjcnfdkztv SQL-pfghjc (27) b
dsgjkyztv tuj (27) c gjvjom. DBI-vtnjlf $dbh->do(). Ïjcrjkmre pltcm
ghjbpdjlbncz ghjwtlehf dcnfdrb lfyys[ d ÁÄ, nj ye;yj gjpf,jnbnmcz j djpvj;yjcnb
jnvtys jgthfwbb d ckexft c,jtd. Äkz 'njuj vs dcnfdbkb rjl jnvtys nhfypfrwbb b
jnrfnf d ghtlsleott cjcnjzybt (30-34). Ïhb c,jt ghb dsgjkytybb $dbh->do()
jnvtyztv cltkfyyst bpvtytybz (31). Åckb ;t c,jz yt ghjbpjikj, nj gjlndth;lftv
cltkfyyst bpvtytybz (33). Äfktt gjckt dct[ ltqcndbq ghjcnj gtht[jlbv yf
cnhfybwe cj cgbcrjv dct[ ghtcc-htkbpjd (36).
Ñnhjrb 37-55 — 'nj ntkj ghjwtlehs dsdjlf ajhvs lkz ddjlf byajhvfwbb j yjdjv
ghtcc-htkbpt (bcgjkmpetncz HTML-if,kjy, bvz rjnjhjuj pflfyj d gthtvtyyjq
$TPL_INSERT, pr-add-tpl.htm):
37. 38. sub show_form { 39. print "Content-type:text/htmlnn"; 40. 41. open (L, "$TPL_INSERT"); 42. while ($line=) { 43. chomp($line); 44. if ($line=~/@/) { 45. if ($line=~/@ADD@/) { 46. $toadd = "pr-add-dbi.pl"; 47. $line =~ s/@ADD@/$toadd/; 48. } else { 49. $tolist = "pr-list-dbi.pl"; 50. $line =~ s/@LIST@/$tolist/; 51. } 52. } 53. print "$linen"; 54. } 55. close(L);
Ïthtuheprf cbcntvs
Ïjcrjkmre ds hfphf,fnsdftnt lbyfvbxtcrbq Web-cfqn, nj cjjndtncndtyyj
rjkbxtcndj byajhvfwbb yf ytv vj;tn hfcnb dtcmvf ,scnhj. Êhjvt njuj, gj vtht
hjcnf gjgekzhyjcnb dfituj htcehcf hfcntn b xbckj tuj gjctnbntktq, xnj vj;tn
ghbdtcnb r gthtuheprfv cthdthf, nj tcnm r gjyb;tyb. ghjbpdjlbntkmyjcnb cbcntvs.
Ïthtl ntv rfr yfxfnm gjbcrb gentq edtkbxtybz vjoyjcnb fggfhfnys[ chtlcnd b
gsnfnmcz yfqnb rjyabuehfwb. yjdjq cbcntvs, vj;yj gjghj,jdfnm ecnhfybnm jlye bp
djpvj;ys[ ghbxby xhtpvthyjuj gjnht,ktybz jgthfnbdyjq gfvznb. Âbyjdybrjv vj;tn
jrfpfnmcz njn ;t Perl. Ätkj d njv, xnj rf;lsq hfp ghb j,hfotybb r njve bkb
byjve Perl-crhbgne, Web-cthdth pfuhe;ftn bynthghtnfnjh d jgthfnbdye. gfvznm (jy
pfybvftn jn 500-1000 Ê,fqn yf ;tcnrjv lbcrt), f gjcktlybq hfp,bhftn ghjuhfvve
jn yfxfkf lj rjywf d gjbcrf[ cbynfrcbxtcrb[ jib,jr. Ïjckt 'njuj jy dyjdm xbnftn
tt, bybwbfkbpbhez gthtvtyyst b aeyrwbb, cxbnsdftn ddjlbvst lfyyst (gfhfvtnhs),
j,hf,fnsdftn b djpdhfoftn htpekmnfns. Ïhtlcnfdkztnt, xnj ghjbc[jlbn, tckb
jlyjdhtvtyyj ghtcc-htkbps [jnzn ghjcvjnhtnm cjnyb gjctnbntktq dfituj cfqnf?
Äkz ecrjhtybz 'njuj ghjwtccf cjplfys cgtwbfkmyst htitybz, ghtlcnfdkz.obt
cj,jq ljgjkybntkmyst vjlekb lkz Web-cthdthf Apache — mod_fastcgi b mod_perl.
Ìjlekm FastCGI (mod_fastcgi) ghtlgjkfuftn ibhjrjt ghbvtytybt chtlcnd j,vtyf
lfyysvb vt;le hf,jnf.obvb ghjwtccfvb (pflfxfvb) jgthfwbjyyjq cbcntvs. Â yfxfkt
cdjtq hf,jns Web-cthdth frnbdbhetn CGI-ghjuhfvve b jcnfdkztn 'ne ghjuhfvve b
ytcrjkmrj tt rjgbq hf,jnf.obvb d ajyjdjv ht;bvt. Ë.,st pfghjcs r ghjuhfvvt
,elen ghjcnj gthtlfys e;t frnbdysv rjgbzv, xnj bp,fdbn cthdth jn ljgjkybntkmyjq
yfuheprb, cdzpfyyjq c gjdnjhyjq frnbdfwbtq ghjwtccf.
Ìjlekm mod_perl gjpdjkztn pfuhepbnm Perl d jgthfnbdye. gfvznm d nj ;t
flhtcyjt ghjcnhfycndj, xnj b cfv Web-cthdth Apache, b jcnfdbnm Perl d gfvznb lj
pfdthitybz hf,jns gjcktlytuj, yt gjpdjkzz pfuhe;fnm jxthtlye. rjgb.
bynthghtnfnjhf ghb j,hfotybb r CGI-ghjuhfvvt. Ýnjn vjlekm ghbvtyztncz xfot, xtv
FastCGI, gjcrjkmre yt nht,etn ybrfrb[ bpvtytybq d ghjuhfvvt.
Äjgjkybntkmyfz byajhvfwb
Apache
Apache gjpbwbjybhetncz yf hsyrt rfr vjoysq b ub,rbq Web-cthdth, cjdvtcnbvsq
cj cnfylfhnjv HTTP/1.1. Ïhbvthyj 60% dct[ Web-cthdthjd d Èynthytnt
aeyrwbjybhe.n gjl eghfdktybtv Apache. Ôeyrwbjyfkmyjcnm Apache vj;yj kturj
edtkbxbnm, ecnfyjdbd cdj,jlyj hfcghjcnhfyztvst vjlekb hfcibhtybz. Èc[jlyst rjls
'njuj Web-cthdthf ljcnegys ghfrnbxtcrb lkz k.,jq gkfnajhvs. Åot jlyjq tuj
gjktpyjq jcj,tyyjcnm. zdkztncz njn afrn, xnj Apache gjpdjkztn hf,jnfnm c
vyj;tcndjv zpsrjd ghjuhfvvbhjdfybz, f nfr;t pfuhe;fnm ytrjnjhst bp yb[ d cdjt
flhtcyjt ghjcnhfycndj, edtkbxbdfz nfrbv j,hfpjv crjhjcnm dpfbvjltqcndbz
Èynthytn-gjkmpjdfntkz c cbcntvjq.
MySQL
MySQL — rhjcc-gkfnajhvtyyfz cbcntvf eghfdktybz htkzwbjyysvb ,fpfvb lfyys[
(RDBMS, Relational DataBase Management System) c bcgjkmpjdfybtv zpsrf pfghjcjd
SQL (Structured Query Language). Ñyfxfkf MySQL, rfr b Apache b lf;t Perl,
dsgecrfkfcm njkmrj d dthcbb lkz UNIX-cbcntv, gj'njve lj cb[ gjh cj[hfyztn
bynthatqc rjvfylyjq cnhjrb. Îlyfrj pf gjcktlytt dhtvz dsgeotyj juhjvyjt
rjkbxtcndj uhfabxtcrb[ vtytl;thjd, rjnjhst j,ktuxf.n pflfxb flvbybcnhbhjdfybz.
Êhjvt njuj, d gjcnfdre MySQL lkz Linux b Windows d[jlbn vtytl;th, uhfabxtcrbq
bynthatqc rjnjhjuj c[j; c ntv, xnj bcgjkmpetn jrjyysq vtytl;th KDE d j,jkjxrt X
Window ÎÑ Linux.
Perl, bkb PERL
PERL (Practical Extraction and Report Language) — zpsr, rjnjhsq ,sk
hfphf,jnfy ukfdysv j,hfpjv lkz cbynfrcbxtcrjq j,hf,jnrb ntrcnf. Îlyfrj d
gjcktlybt ytcrjkmrj ktn ,kfujlfhz yjdsv b vjlekzv hfcibhtybz, jy ghbvtyztncz yt
njkmrj rfr ntrcnjdsq j,hf,jnxbr, yj b rfr vjoysq bycnhevtyn hfphf,jnrb
Èynthytn/Èynhfytn-ghbkj;tybq b Web-hj,jnjd. Èynthghtnfnjh Perl gjcnfdkztncz,
rfr ghfdbkj, dvtcnt c bc[jlysvb rjlfvb, rjnjhst vjuen ,snm crjvgbkbhjdfys
ghfrnbxtcrb yf k.,jq gkfnajhvt — DOS, OS/2, UNIX bkb Windows.
Ïjktpyst ccskrb
Apache:
http://www.apache.ru/
http://apache.lexa.ru/
http://www.apache.org/
MySQL:
http://www.mysql.com/
http://www.mysql.ru/
Perl:
http://www.perl.org/
http://www.perl.com/
http://perl.oreilly.com/
http://www.activestate.com/
ftp://ftp.activestate.com/
http://www.cpan.org/
http://www.perl.ru/ citforum.ru/internet/articles/dyn_web.shtml Ìb[fbk Ådljrbvjd Êjvgm.nthÏhtcc
|