Agyhullám: ​PHP & MySQL [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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>