148 70 91MB
Hungarian Pages 811 Year 2009
Agytornáztató tanfolyam
A gy hullám:
Fedezd fel a dinamikus, adatbázis-vezérelt webhelyek mögött rejlő titkokat!
Kerüld el a kínos hibákat a webes űrlapokon!
Töltsd be a kulcsfontosságú nyelvtani szabályokat köz vetlenül az agyadba!
Kapcsold össze a PHP és MySQL ___ L___kódot!
L
Erősítsd meg parancsfájl készítési tudásodat gya korlatok tucatjaival!
O R E IL L Y
Lynn Beighley, Michael Morrison
Az Agyhullám: PHP & MySQL-ről írták „A PHP és a MySQL napjaink legnépszerűbb webfejlesztési technológiái közé tartoznak - ebből a könyv ből kiderül, hogy miért. Az, hogy nélkülük építsünk fel egy w ebhelyet, ma már ugyanannyira elképzelhe tetlen, mint a w ebtervezés a CSS nélkül. Ez a kötet nagyszerű bevezetést nyújt a tém ába, és hihetetlenül szórakoztató. Bárcsak én is ebből a könyvből tanultam volna!” - Harvey Quamen, a z angol nyelv és a hum á n inform atika adjunktusa, University ofAlberta „Ez a könyv elvet mindent, ami szárazzá és unalmassá teszi a műszaki oktatást, és szokatlanul szórakoztató módját nyújtja a tanulásnak. Teljes bizonyossággal állíthatom, hogy az Agyhullám sorozat kötetei forradal masítani fogják a szakkönyvkiadást, és a bennük követett m ódszerek válnak majd az új szabvánnyá. Lefo gadom, hogy ha ezt a könyvet egyszer végigolvasná, a m inden műszaki dologtól irtózó nagymamám is meg tudná tanulni a PHP és a MySQL használatát - és még élvezné is!” - Will Harris, adatbázis-rendszergazda, Powered by Geek „Ezt a könyvet olyan olvasni, mintha egy igazán „jó fej” tanártól tanulnánk. Az em ber alig várja az órákat!” - Stephanie Liese, webfejlesztő „A képeknek és a hum ornak köszönhetően könnyen emészthető, ugyanakkor valódi műszaki tudást nyújtó kötet.” - Jereme Allén, webfejlesztő „Miután egy ültő helyem ben végigolvastam a könyvet, és végigcsináltam az olyan bizarr feladatokat, mint „a kutyámat elrabolták az idegenek” vagy az „össze nem illő párok párkereső ügynöksége”, alig várom, hogy a PHP erejével ruházzam fel a w ebhelyeim et.” - Dávid Briggs, szoftvermérnök, szakkönyinm
Agyhullám: PHP &? MySQL Nem lenne m eseszáp, ha lenne egy könyv a P H P -ró1 ¿5 a M yS Q L-ro), amibew this p*ge. Y&- »*«
xv
a tartalom jegyzék
Személyre szabott webalkalmazások építése Senki sem szereti, ha elfelejtik - a webalkalmazások felhasználói különösen nem. Ha egy alkalmazás ismeri a „tagság” fogalmát, tehát a felhasználók személyre sza bottan használhatják az alkalmazást, akkor az alkalmazásnak emlékeznie kell a fel használókra. Szörnyű lenne, ha minden alkalommal be kellene mutatkoznunk a családunknak, amikor hazaérkezve belépünk az ajtón. Erre azért nincs szükség, mert az em bereket egy csodálatos dolog segíti: a memóriájuk. A webalkalmazások azonban nem emlékeznek automatikusan az emberre - egy ügyes webfejlesztőnek kell a rendelkezésére álló eszközökkel olyan személyre szabható wrebalkalmazást készítenie, amely képes megjegyezni a felhasználóit. Azt mondják, az ellentétek vonzzák egymást ............................ 346 A Misma teli a személyes adatokra tám aszkodik
....................... 347
A Mismatch alkalmazásban bejelentkezésre van szükség . . . . 348 A felhasználói bejelentkezés m e g te rv e z é se .................................349 Az adatbázis felkészítése a b e je le n tk e z é se k re ............................ 351 A bejelentkezési felület kialakítása ..................... ......................... 353 ' V
_____ ---------------------------------------------------------------- ------------
Mismatch - W here oppositcs attrart!
A jelszavak titkosítása az SHAO se g ítség é v el.............................. 354 A jelszavak visszafejtése ................................................................. 355 A felhasználók hitelesítése a HTTP segítségével ....................... 358 A felhasználók beléptetése a HTTP-hitelesítés segítségével . . . 361 Feliratkozási űrlap az új felhasználók számára . . ..................... 365
To r>cw thJl p»o*. you M.iíTuitb- ^
W SiVwcrd «m
Pln.woid.
to lop n »0 a r c
int ,
Adj esélyt a felhasználóknak a feliratkozásra! ............................ 370 Néha kell egy süti ............................................................................. 374
1
|
Mi van a sü tik b e n ? .......................................................... .................. 375 Sütögetés a PHP segítségével ................ ....................................... 376 A bejelentkezés m enetének újragondolása .................................379 Sütivezérelt b e je le n tk e z é s ............................................................... 380 Mozgás a Mismatch a lk a lm a z á sb a n ...............................................382
You ere
úr u r jn en b s.
A kijelentkezés a sütik törlését jelenti .......................................... 385
M ixm atch - E d it P r o fik PcrvKial In/orroitior.
Flr* oame:
K**r
Ijw x n a ia e :
GcMk r z
m*?. Btrthdate: 5®Ti.
Cky:
StM r: P ic lu rt:
MH'.rtfKh You c rt U>9# ed in ü jjn e o k l,
A m unkam enetek élete és k o r a ......................................................390
M is m a t c h - V i c * P r o f i l t
A m unkam enet-adatok nyom on k ö v e té s e ................................... 391
l Hrrnaov: Ca
A m unkam enetek nem függnek az ü g y fé ltő l.............................. 389
First niuni: Johuc
O tt»«! L« 4 nai»c: Ncaki
(ieader: Mák Birthdatt: LotAÜun:
A Mismatch alkalmazás felújítása m unkam enetekkel
.............. 392
Kijelentkezés m unkam enetek segítségével .................................393
A ócn *, GA
A m unkam enetekre való áttérés teljessé tétele ..........................398
2*0 Picttirc:
A felhasználók úgy érzik, kívül tá g a sa b b ..................................... 404 A m unkam enetek rövid életű ek .......................................................406 ...d e a sütik örökké ta rth a tn a k !......................................................407 xvi
Tartalomjegyzék
M unkam enetek + sütik = A legm aradandóbb bejelentkezési adatok ...................................................................... 409
Tartalom jegyzék
A többször szereplő kódok kiküszöbölése Nem csak esernyőn lehet osztozni. Bármely w ebalkalm azás esetében törvényszerűen találkozol majd olyan helyzet tel, ahol ugyanaz a kódrészlet több helyen is előfordul Ez pedig azon felül, hogy pocsékolás, még meg is fájdítja a programkód karbantartásával foglalatoskodó személy fejét - hiszen a kódban elkerülhetetlenül szükség lesz változtatásokra, és ezeket a változtatásokat több különböző helyen kell majd megejteni. A helyzet megoldása az, ha a kérdéses kódrészleteket megosztva egyszerűen megszünteted a kód részletek többszöri előfordulását. Más szóval, a többször előforduló kódrészt egyet len helyen hagyod meg, és erre az egyetlen másolatra hivatkozol ott, ahol szük séges. A kódrészletek többszöri előfordulásának kiküszöbölésével hatékonyabb, egyszerűbben karbantartható és szilárdabb alkalmazás születik. Darabokra szedjük a Mismateh alkalmazást .......................
421
A Mismateh alkalmazás újraépítése s a b lo n b ó l.....................
422
A Mismateh alkalmazás újraépítése s a b lo n o k k a l................
424
A Mismatch-alkalmazás ismét teljes... és a felépítése most már sokkal jo b b ...........................................................................
426
A fejléc a Mismateh alkal mazás minden oldal tetején megjelenik, és az alkalma zás nevét, valamint az adott oldal címét jeleníti meg.
J ^^startsession.php
A Mismateh alkalmazás minden, az egyes felhasználókhoz sze mélyre szabott oldalán olyan bejelentkezés-kezeló' programkód szükséges, amely nyomon követi a felhasználókat.
A lábléc a Mismatch alkalma zás minden oldalán megjeleníti a szerzői jogi információt.
header, php
^
navmenu.php
A navigációs menü közvetlenül a fejléc alá kerül, és a Mismateh alkalmazás minden oldalán egysé ges menüt jelenít meg, amellyel lehetséges a főbb oldalak bejárása.
Most, hogy oly sok egyéb parancsfájl segíti, az index.php feladata egyedül a felhasználók listájának megjelenítése maradt; csak erre kell figyelnie.
most itt vagy ► xvii
a tartalom jegyzék
Urald az adataidat, és uralni fogod a világot! Semmi sem érhet fel az adatok őszi learatásával. Bőséges információk, amelyek csak arra várnak, hogy megvizsgáld, rendezd , összehasonlítsd és kom bináld őket, illetve általában véve azt csinálj velük, amire csak a király w ebalkalm azásodnak szüksége van - jól hangzik? Persze. De a va lódi aratáshoz hasonlóan az adatok kézben tartása egy MySQL-adatbázisban kem ény m unkát és jelentős szakértelmet igényel. A w ebes felhasználók többre vágynak régi, megfáradt, unalmas, érdektelen adatoknál. Olyan adatokat akarnak, am e lyek gazdagítják és elégedetté teszik őket...olyan adatokat, amelyek jelentőség gel bírnak. Mire vársz hát? Bőgesd fel a MySQL-traktorodat, és m unkára fel! Tökéletes ellentétek
........................................................................ 428
A félrepárosítás az adatokon m ú l i k ...............................................429 Adatbázis m odellezése sé m á v a l......................................................431
Utalom okét!
Több tábla összedrótozása
c
Horrorfilmek
Az idegen kulcsok m űködés k ö z b e n ............................................ 437
0
Sidney horrorfilmek iránt érzett utálata e l lentétpárt eredményez.
.............................................................436
Soronkénti illeszkedés a tá b lá k b a n ...............................................438
Ellentétpár!
Szeretem
őket!
\
Amikor egy sorhoz több sor kapcsolódik ................................... 439 Amikor több sorhoz több sor illeszk ed ik ..................................... 440 A Mismatch-kérdőív felépítése
......................................................445
A vélem ények bevitele az adatbázisba ........................................446
Horrorfilmek
Egy űrlapot adatokkal is v ez é re lh e tü n k ........................................450 A Mismatch-kérdőívet tartalmazó űrlap létrehozása
................ 456
Csináld n o rm álisan !...........................................................................462 Normalizáláskor gondolkodj atomokban! ................................... 463 Három lépés a normalizált adatbázis felé ................................... 465 A Mismateh adatbázis m ó d o s ítá s a ................................................. 469 A Mismateh adatbázis most már tényleg normalizált? .............. 470 Lekérdezésen belüli lekérdezésen belüli lekérdezés.................. 472 Kapcsoljuk össze a táblákat! .......................................................... 473 Kösd össze a pontokat ....................................................................474 A belső összekapcsolás ennél biztosan többre is képes ......... 475 mismatch
u*er
Becenevek a táblák és oszlopok számára ................................... 477
id
M egmentőnk, az ö sszek ap cso lás................................................... 478
u sern a m e
paw word
A sikeres félrepárosítás öt lé p é s e ................................................... 485
*join_date first n am e lo s L n a m e gender
mfemahMopí« topic_id
birthdate
nam t
city
category
picture
xviii Tartalom jegyzék
Felkészülés az ellentétpárok keresésére ..................................... 486 A felhasználók „ellentétességének” v iz sg á la ta ............................ 487 Csak egy FÓR ciklusra van sz ü k s é g ...............................................488
Tartalom jegyzék
Karakterláncok kezelése és egyéni függvények A függvényekkel újabb szintre emelheted az alkalmazásaidat. A PHP beépített függvényeit a korábbiakban is használtad különféle célok elérésé re, most pedig m egism erkedhetsz egy valóban hasznos függvénycsaláddal. Ha ezen túlestél, m egtanulod, hogyan készíts egyéni függvényeket, amelyekkel át lépheted a képzeleted határait - ha nem is segítenek a lézercápák kiképzésé ben, a kódjaidat m indenképpen áttekinthetőbbé és egyes részeit újrahasznosíthatóvá teheted a segítségükkel.
9
M unkakeresés - csak merészen! ................................................... 502 A keresés, ahol nem h ib á z h a tu n k ................................................. 504
^ : .. . wskyJ9te- Se%yh
«
J j s
R l s k f
Rugalmasabb SQL-lekérdezések a LIKE seg ítség év el................ 505 Karakterláncok szétdarabolása s z a v a k k á ..................................... 510
,
Karakterláncok egyesítése az im plodeO függvénnyel ..............513
D a n g e r! Y o u r « r e a m jo b I * o u t th e re , O o y o u h a v * th e g u t * to 9 0 fin d H t
A keresőkifejezés elő feld o lg o zása................................................. 519
R isky J o b s - S earch
A nem kívánatos keresőkarakterek c s e ré je ................................... 520
Fir.d your riskyjob:
A lekérdezésben valódi keresőkifejezésekre van szükség . . . . 524
{ Submit '
A nem üres elem ek átmásolása egy új töm bbe ..........................525 Megeshet, hogy a karakterláncnak csak egy részére van s z ü k s é g .........................................................................................528 Karakterláncok elejének és végének kiolvasása ....................... 529
R is k *
Ju.b
A találatok több lekérdezéssel rendezhetők .............................. 532
I Y o u ' d / w m jo b i% o « t Oo * o * rw ve th e g u t s to g o f* \4 t%7
Újrahasznosítható kód - függvényekkel ..................................... 536
R is k y J o b s - S e a r c h R e s u lts
Lekérdezés felépítése egyéni függvénnyel
Job Tîüe
D ucnçaon
Custard W ilkct
We ceed people * i'•!;** *vc » * lk on « u n e .
SKiA ltu .e e
Ha az IF nem elég - itt a SWITCH! ...............................................542
t t f tfccoc 1«
ic
é !l a w m
«AD
Rendezés a build_query() függvényben ..................................... 545
R is k !
A keresés eredm énye oldalakra b o n th a t ó ................................... 548
V c i:i* e C taxW i
Ívmailre
.................................537
^
D tn g o f! Y our joto i s eu e ch« f t O o you fcavo th e « « 1 » Io p o iln o u t
A kívánt sorok kiolvasása a LIMIT se g ítsé g é v e l..........................549
R is k y J o b s - S e a r c h R e s u lts Job Tick
Oldalhivatkozások meghatározása a LIMIT se g ítsé g é v e l......... 550
I>CK-TipKior ** o .
Az oldalak adatainak nyomon követése ..................................... 551
Clam
R is k * TtfchUvpC Wûlltc-c I nxnei .lr
Az oldalakra bontáshoz szükséges változók meghatározása . . 552
D in g or] Your ¿ re a rc jo b à* o u f the*» Do y o u n a v e th e g u t? t o o o Hud if?
A lekérdezés m ódosítása az oldalakra bontáshoz ..................... 553
Risky Jolw • Search Results jot> iid e
Az oldalnavigációs hivatkozások előállítása
^ ***: w w M ao * itw B
e* v fee*». M l fc«J
p r v x t a i . M um rove M -
/V 1 Food TcMCf
'*> ö»4c o m t h v j o n ) n v g o o J o u r p< Now * o u « jr rx*p « à U oW joci>
adm in.php
rem ovescore.php
Újratöltve A PHP-parancsfájlok fejlécek segítségével szabá lyozhatják, hogy a kiszolgáló hogyan kézbesíti a w eb es tartalmat a böngészőnek. A PHP beépített header {) függvényével fejléce ket küldhetsz a böngészőnek, am elyekkel másik oldalra irányíthatod a felhasználót, szabályozha tod egy oldal tartalmának típusát, illetve egy ol dal hitelesítését kérheted. Amikor fejléceket küldesz a böngészőnek a header () függvénnyel, a header () hívásának bármilyen tartalom elküldése előtt kell szerepelnie.
Ha egy oldalt HTTP-hitelesítés véd, a felhasználó által beírt felhasználónevet és jelszót a $ _ s e r v e r szuperglobális töm b tárolja. A HTTP-hitelesítés „tartománya” egy olyan biz tonsági zóna, am elyhez egy adott felhasználónév és jelszó társul, és am ely lehetővé teszi, hogy több oldalt együttesen tegyél biztonságossá. A PHP beépített exit () függvénye egy PHPparancsfájlból való kilépésre szolgál, ami meg akadályozza a függvény hívást követő kód végre hajtását, illetve elküldését a böngészőnek.
m o s t i t t vagy
►
315
nem hülye kérdések a biztonsággal kapcsolatban
Nincsenek
hülye kérdések
K V
K V
K V
K V
Még mindig nem értem pontosan, hogy Ethel hogyan kerülte meg a Guitar W ars alkalmazás biztonsági rendszerét. M it csinált? Azt a gyengeséget használta ki, ami abból adódott, hogy csak egyetlen oldalt (az Admin oldalt) vcdtünk. amikor a rekordeltávolítási szolgáltatás valójában két oldalra (Admin és Remove Score) támaszkodik, hiszen az Admin oldal olyan Remove hi vatkozásokat tartalmaz, amelyek a Remove Score oldalra mutat nak. Azt. hogy melyik rekordot kell eltávolítani, az URL-ben ad juk át, és ez teszi lehetővé, hogy a Remove Score parancsfájl el érje ezeket az adatokat a $_G ET szuperglobális töm bön keresz tül. Ha képes vagy összeállítani a Remove Score oldal érvényes URL-jét. anélkül törölhetsz rekordokat, hogy meg kellene nyit nod az Admin oldalt. Ethel pontosan ezt tette.
De honnan tudta, hogyan kell felépíteni az URL-t, ami a Remove Score ol dalra mutat? Ethel elég ügyes, de ehhez nem kellett zseninek lennie. Emlé kezz vissza, hogy’ azt mondta, hogy könyvjelzőbe mentette a Remove Score oldal címét, még akkor, am ikor egyáltalán nem védtük a webhelyei. Nos, a könyvjelző csupán egy URL, ami nek a segítségével simán felépíthette azt az URL-t, amellyel köz vetlenül. az Admin oldal megnyitása nélkül elérhette a Remove Score oldalt.
Oké, de a rekordokat a korábbi támadás óta újra beírták. Ez nem azt je lenti, hogy a régi URL-ek nem működnek, mert a dátumok különböznek? Nagyon ügyes észrevétel, de ne feledd, hogy Ethel igencsak fifikás. Egyszerűen m egnézhette a Guitar Wars főoldalán az új dá tumokat. és beleilleszthette a régi URL-be, és így gond nélkül eltávolíthatta az új rekordokat. Fontos, hogy soha ne becsüld alá az eltökélt támadók képességét arra, hogy visszafejtsék a PHPparancsfájljaidat, és kiaknázzák a gyengeségeit.
Rendben, szóval az Admin és a Remove Score oldalak együttes védel me akadályozza csak meg Ethelt, de nem teszik kínszenvedéssé a rekor dok eltávolítását a rendszergazda számára is? Egyáltalán nem. A tartományok segítsége nélkül persze tényleg m acerás lenne a rekordok jogosult törlése is, mivel a felhaszná lónevet és a jelszót kiilön-külön kellene megadni az Admin és a Remove Score oldal számára, de ha em lékszel rá, olyan tarto mányt határoztunk meg. ami mindkét oldal esetében azonos, ami azt jelenti, hogy a két oldal azonos biztonsági zónába tarto zik. Ha már megadtad az azonosító adataidat egy adott tarto mányban levő oldal hitelesítési ablakában, a böngésző az egész tartományban em lékezni fog a felhasználónévre és a jelszóra. Végeredm ényben tehát a felhasználónevet és a jelszót elég egy szer sikeresen megadni, hogy mindkét oldalhoz hozzáférj.
316 6. fejezet
Soha ne becsüld alá az el tökélt támadók képességét arra, hogy visszafejtsék a PHP-parancsfájljaidat, és kiaknázzák a gyengeségeit!
Az alkalmazás biztonságossá tétele
Készítsd el az Authorize parancsfájlt, és emeld be az Admin és a Remove Score parancsfájlokba, hogy biztonságossá tedd azokat! Hozz létre egy új szövegfájlt a u t h o r i z e . php néven, írd bele az Authorize parancsfájl kód ját, majd módosítsd úgy az ad m in.php parancsfájlt, hogy a tényleges HTTP-hitelesítési kód helyett csak az Authorize parancsfájl beem elését tartalmazza. Add ugyanezt a r e q u ir e _ o n c e utasítást a re m o v e s c o re .p h p parancsfájl elejéhez is, hogy ezt a fájlt is HTTP-hitelesítés védje. Töltsd fel az összes parancsfájlt a w ebkiszolgálóra. majd próbáld megnyitni a Rem ove Score parancsfájlt közvetlenül a w ebböngésződben. Lehet, hogy törölnöd kell minden korábbi HTTP-hitelesítési m unkam enetet a böngésződben, hogy ismét m egjelenjen a hitelesítési ab lak - a legtöbb böngésző megjegyzi a hitelesítési tartományokat, hogy7 ne kelljen minden al kalommal beírnod a felhasználónevet és a jelszót. ^ a2 /^m in és a Remove Cuita» Wars - High Scores
h t t p : / /www. g u i t a r w a r s . n e t / r e r a o v e s c o r e . p h p ? id = 1 0 & n a m e = Ja c o b % 2 0 S c o r c h e r s o n & d a t e = 2 0 0 8 - 0 5 - 0 1 % 2 0 2 0 : 3 6 : 45& ^ sco re= 389740& s c r e e n s h o t = ja c o b s s c o r e . g i f
7
Password Remember this password in my keycham
Ez az URL megkerüli az Adm''« parancsfájlt, es éri el a Remove
f _Ca/Ket )
In '>
A Remove Score oldal a hozzáférés módjától fu g-getlenül védelem alatt áll. —
____ I
Guitar Wars - Remove a High Score ’ Szerinted milyen veszélyek fenyegethetik még a Guitar Wars rekordjait?
The high s « « o f 314340 fur BUT Jcclc wa* s u c c c s ^ «m oved
wí, juhi sj3j~,
•' «*»»teii i03tíJ>¿ÍHJV ..
R a jta m a z tá n nem ju tn a k k e re s z tü l a ham is d o k u m e n tu m o k ...# # , rekordok. A la p o s vagyok, ás ritk á n hibázom .
Xt3)JI m tK -------
i J**» itat „ u?0; »> ';; V4*.>3 ■
íi«w.a»aM«v)
Egy új rekord felvétele már nem jelenti azt, hogy a rekord automatikusan nyil vánossá is válik. A Guitar Wars alkalm azásnak csak előnyére válhat az em beri felügyelet. Persze így is lehetséges, hogy valaki ügyesen hamisít egy képernyőfelvé telt, és a hamis rekord elkerüli a m oderátor figyelmét, de a feladat nem könnyű, és a m oderálás kellő elrettentő erővel bír. Ne feledd, hogy egy PHP-alkalmazás biztonságossá tétele nagyrészt a m egelőzésről szól!
A Guitar Wars rettenthetetlen mo derátora, aki még soha nem talál kozott olyan rekorddal, amelyben valóban megbízott volna.
320
6. fejezet
Az alkalm azás biztonságossá té te le
f a emberi felügyelet megtervezése a Guitar Wars alkalmazásban Az em beri felügyelet lehetőségének hozzáadása a Guitar Wars alkalm azáshoz b o nyolult művelet, mert az alkalm azás több részét is érinti. Módosítani kell az adatbá zist, a jóváhagyás végrehajtásához új parancsfájlt kell írni. az Admin oldalon el kell helyezni egy Approve hivatkozást a rekordok mellett, és végül úgy kell módosítani a főoldalt, hogy csak a jóváhagyott pontszám ok jelenjenek meg rajta. Miután ilyen sok változtatásról van szó, fontos tervet készíteni, és a m ódosításokat lépésenként végrehajtani Egy approved (jóváhagyva) nevű oszlop hozzáadasa a táblához az a l t é r utasítással.
Kezdjük az adatbázissal, am elyben egy új oszlopra van szükség, am elyben rögzíthetjük, hogy az adott rekordot jóváhagyták-e vagy sem.
2008*5-01 21 14*©
Ucn. ToyW 2CC&05-02 l í 02:54
£*}.ol
irff loö.
Az Approve Score (Rekord jóváhagyása) parancsfájl lét rehozása, amely az új rekordok jóváhagyását kezeli (va gyis 1 értékre állítja az a p p r o v e d oszlopot).
Ha az adatbázis már készen áll rá, hogy rögzítse a rekordok jóváhagyott állapotát, kell egy pa rancsfájl is, ami ténylegesen végrehajtja a rekor dok jóváhagyását. Ennek az Approve Score nevű parancsfájlnak lesz a íeladata. hogy m egkeressen egy adott rekordot az adatbázisban, és módosítsa az ap p rov ed oszlop értékét a rekord sorában.
5ÖOOOO
3UU0 3227 tO
A jóváhagyásra váró rekordok mellett egy Approve hi vatkozás elhelyezése az Admin oldal módosításával.
Az Approve Score egy háttér-parancsfájl, amelyet normál esetben nem lehet közvetlenül elérni. Erre az Admin oldalon elhelyezett Approve hivatkozá sok szolgálnak, am elyek csak a még jóvá nem ha gyott rekordok mellett jelennek meg.
G u itar W a n •High S to re s AdrainUimtion
A lekérdezés módosítása, hogy a főoldal csak a jóváha gyott rekordokat mutassa.
Az utolsó lépés annak biztosítása, hogy a jóváha gyás beépüljön a főoldalon m egjelenített rekordlis tába. Az alkalmazás főoldalát tehát úgy kell m ódo sítani, hogy csak a jóváhagyott rekordokat mutassa - enélkül a jóváhagyáshoz kapcsolódó többi vál toztatás értelm etlen lenne.
n m • « nc«: ia &Lxawi« a * wm v* au G u itar W ars
High Scurcs
Top Score: 389740 JW740
X c o rc r
most it t vagy
►
321
az approved oszlop hozzáadása a g u ita rw a rs táblához
Csinálj helyet a jóváhagyásnak az ALTÉR segítségével! Az új approved oszlop hozzáadása a g u ita rw a rs táblához a korábban már használt ALTÉR TABLE SQL-utasítás egyszeri használatát igényli:
ALTER TABLE guitarwars ADD COLUMN approved TINYINT
A TINYINT helyett a MySQL B001 adattípusát is használhatod.
Az új approved oszlop típusa TINYINT, és a 0 értékkel jelzi a jóvá nem hagyott, illetve 1-gyel a jóváhagyott rekordokat. Ez azt jelenti, hogy az oszlop értéke minden új rekord esetében 0, ami azt jelzi, hogy kezdetben egyik rekord sincs jóváhagyva.
q
A
-J iíS Z
Egy approved (jóváhagyva) nevű oszlop hozzáadása a táb lához az ALTÉR utasítással.
V á rju n k c s a k egy p e rc e t! S z e rin te m az A d d Score p a ra n c s fá jl m ó d o s ítá s a nélkül nem v le h e t c s a k ú gy h o zzá a d n i egy o s z lo p o t a z a d a tb á z is h o z . Nem kene a p a ra n c s fá jln a k IN 5 E R T -te l b eszúrnia a d a to k a t a z új oszlopba?
Igazad van, az új oszlop egyben egy új értéket is jelent az Add Score parancsfájl INSERT-Iekérdezésében. Fontos, hogy ne veszítsd szem elől, hogy a PHP-al kai m azások szám os gondosan összehangolt alkatrészből állnak: egy sorokat és oszlopokat tartalmazó adatbázisból, PHP-kódból, HTML-kódból, és általában CSS-kódból. Az azonban nem mindig nyilvánvaló azonnal, hogy az egyik rész m ódosítása egy másik rész megváltoztatását is szükségessé teszi. Ahhoz, hogy az új Approve Score parancsfájl számára hozzáadd az új approved oszlopot a g u ita r w a r s táblához, m ódosítanod kell az Add Score parancsfájlban levő INSERT-Iekérdezést is:
.
I I ■ I I ■ I r- korrf
Az approved oszlop értéke minden újonnan beszúrt ,« ■ » * sorában 0, vagyis „jóvá nem hagyott" le « - ~ " V
INSERT INTŐ guitarwars ^ VALUES (0, N O W (), '$name1, '$score','$screenshot', 0)
322 6. fejezet
I
H
Amikor új rekord kerül a tálába, az approved oszlopa a 0 értéke: veszi
30
2008-05-02 14:02:54
Ethel Heckel
500000
ethelsscore.gif
31
2008-05-02 20:32:54
ßiff Jeck
314340
biffsscore.gif
32
2 0 0 8 0 5 0 2 20:36:38
Pez Law
322710
pezsscore.gif
fel, tehát a rekord kez detben nincs jóv hagyva
Az alkalmazás biztonságossá tétele
V h"
ezd ki a ceruzád!
A nem az adatbázisból származó statikus RSS-kódok, például az címke és a csatornain
© formációk létrehozása.
< rss v e r s io n - " 2 .0 ” > < ch a n n e l> < t i t l e > . .. < lin k > . . . < d e s c r ip tio n > ... < la n g u a g e > .. .
O
Ezt a kódot nem befolyásolja az adatbázis; ennek a hírfolyam nak az esetében mindig ugyanaz.
Az idegenekkel kapcsolatos adatok kiolvasása egy lekérdezéssel az aliens_abductions adatbázisból. Mielőtt előállíthatnád a hír a b d u c tio n _ id
last_nam e
£irst_nam e whe n _ i t_ h appen ed a lie n _ d e s c r ip t io n w hat_they__did
Q
Az adatok bejárása egy ciklus segítségével, és RSS-kód előállítása az egyes hírelemekhez.
< title > . . . < lin k > ... < D u b D a te > .. . < d e s c r ip t io n > . . .
< t i t i e > A l i e n s /abducted M e - N e w s f e e d < / l j . t i e >
h ttp : //a lie n sabductedme. com/
newsfee A l i e n a b d u c t i o n r e p o r t s f roir a r o u n d t h e w o r l d c o u r t e s y o f O w e n and his abducted dog Fang.
text/xml’); ?> . 0" e n c o d in g = "u tf- 8
< t i t l e > A I i e n s A bducted Me - N e w s £ e e d < /title > < lin k >
« h t t p :/ / a lie n s a b d u c t e d m e .c o m / I < /lin Jc > K • •m
c d e ^ c ^ p t i o n > A l ie n a b d u c tio n r e p o r ts from a r o u n d ^ ? ? and h i s a b d u c te d dog F a n g .< / d e s c r ip tio n >
n e w s fe e r i d c o u r te s y o f Owen
, amelyek mind különleges jelen téssel bírnak egy XML-kódon belül. Alább azt az öt előre meghatározott XMLegyedet láthatod, amelyekkel valószínűleg találkozni fogsz, ahogy mélyebben elmerülsz az XML-kódolásban:
&
most i t t vagy ► 693
a youtube xm l-válaszának szerkezete
A YouTube XML-válaszának megfejtése Ha már ismered a YouTube-válaszok szerkezetét, a keresett videóadatok kinyerése meglehetősen egyszerű. Azon kívül azonban, hogy tudnod kell, hogy mely elemek és jellemzők milyen adatokat tárolnak, azt is fontos megértened, hogy az elemek hogyan viszonyulnak egymáshoz. Ha még emlékszel rá a fejezet korábbi részéből, ahol egy RSS-folyamot elemeztünk, tudhatod, hogy az XML-dokumentumok elemek hierarchiá jaként ábrázolhatok. Ez a YouTube videóválaszaiban kapott XML-adatokra is érvényes: Ez a < t i t l e >
< e n try >
_
«
< id> h t t p :/ / g d a t a .y o u t u b e . c o m /fe e d s /a p i/v id e o s /_ 6 U ib q fQ v tA < /id > X e‘8rn ' maZ 2006-06-20T07:49:05.000-07:00 < /published> / a Videó címét.
cm edla: t i t l e ty p e = *p l a i n ’ >VF0 S ig h t in g i n Y osem ite Fark n e a r Area 5 1 < / m e d ia : t it le > *
Ebben a kódban az elem neve „title " , a névtér pedig „média'
1 went on a tr ip to Yosemite Park in 2002. Yosemite Park is very close tc the be rdei t *.ween C ali £ :-rnia sn: Nevidi, and rlose .. Area 51. . . t : cur n is - * 50' /> ‘^ = ----------------- —------—-------- A Videó hossza < jn e d ia :c a te g o r y l a b e l* 'T r a v e l Samp; E v e n ts '
< m e d ia :c o n te n t u r l = ' r t s p : / / r t s p 2 . y o u tu b e . com/ChoLENy7 3wIaEQnQvvSnbiKl _xMYESARFEgGDA=^S>0/0 / 0 / v id e o . 3 q p f t v p e = / v i ^ e o / 3 g p b ^ j e d i u n ^ v i d e o ^ x p r e s s i o n ^ f u i ^ ^ d u r a t ^ n ^ 5 0 ’y t : f o r m a t = '6' / > A videó
_ _ _ _ _ YouTubeitube . 3oro __6Uibqf0vt .jp g * h e ig h t - ’ >" ’ w ■*13 kategóriája. time-' 00: GO: 25 '/>
on levő vide Cmedia: th u m b n a il u r l - ' h t t p : / / im g . y o u tu b e . c o m /v i/_ 6 U ib q fO v tA /0. jpg\ h e i g h t * 1240' w id t h = '3 2 0 ' óra mutató t i me-'0 0 : 0 0 : 2 5 '/ >
hivatkozás. A videó miniatűr elonétete.
a : i l _;: j i:;l i:—11 ' íüíiM^' ' ttúínRa t é r s 3*T1 602' á v e r a g e * T4 . 1 7 1/ • < gd : comments>