[Powered by Google Translate] [Semèn 8, Kontinye] [David J. Malan] [Inivèsite Harvard] [Sa a se CS50.] [CS50.TV] Sa a se CS50, kidonk sa a se nan fen Semèn 8 isit la. Nou nan kou te gen yon ti jan nan yon siklòn bonè nan semèn sa, Se konsa kounye a li se reyèlman jis m 'avè ou nan sa a sal konferans, men jodi a nou kontinye konvèsasyon nou an sou PHP ak sou pwogram wèb plis jeneralman, ak nou menm tou nou entwodui lide nan nan baz done, patikilyèman yon rele miskl, ki se trè popilè jou sa yo, nan gwo pati paske yo te évolutivité li yo kòm byen ke paske li yo ke yo te gratis epi yo louvri sous. Men, an premye, yon gade nan ki kote nou te kite dènye tan. Sonje byen, nou te gade nan plizyè egzanp yo IMS Frosh, ak sa a te fòm nan efreyan ke mwen te vini ak kèk 15 ane + Anons sa pibliye depi yo nan lòd yo gen elèv yo nan rejis kanpis pou elèv nevyèm ane espò nan estad fèmen san aktyèlman gen yo charyo ankò atravè lakou a Wigglesworth glise yon moso fizik nan papye anba pòt kèk Proctor an. Olye de sa nou te bwote tout bagay sou entènèt, men fè sa nou bezwen fè pou sèvi nan yon teknoloji kèk, se konsa yon sèl, nou bezwen HTML, ipèrtèks markeup lang, ki ankò se lang sa a baliz ak kote ou fè paj wèb estriktirèl. Lè l sèvi avèk yon ti jan nan CSS jou sa yo, kaskad dra style, kote nou itilize stylizations nan paj wèb la lè l sèvi avèk yon sentaks yon ti kras diferan, Lè nou konsidere ke HTML nan te sou tout estrikti a ladan l '. Nou menm tou nou bezwen entwodui yon lang programmation entènèt. Nan ka sa a, nou pral sèvi ak PHP, ak PHP ki pral pèmèt nou dynamique kontni pwodiksyon osi byen ke fè bagay sa yo pwogramatik tankou voye Imèl, tankou se te ka a sou nòt la nou te kite semèn pase a. Sonje byen, kòd la pou sa a te nan 2 pati yo. Youn nan, nou te gen froshims3.php, ak sa a te lajman baliz ak yon fòm HTML andedan nan li, yon ti jan ti la CSS moute isit la nan atribi yo style fè sa ki te fòm nan tèt li dwe santre sou paj la, men pi lwen pase sa nou te gen kèk entrain fòm reprezantan, yon jaden tèks, yon toulède kaz, kèk radyo bouton, yon meni chwazi, ak yon bouton soumèt. Ak atravè fòm sa a, nou soumèt nan yon dosye ki te aparamman te rele register3.php, ki li menm te gade yon ti kras yon bagay tankou sa a. Koulye a, pi fò nan kòd la nan register3.php, sonje, te sou tout imel. Li te fè yon ti kras nan validation nan fòm la ki te soumèt asire ou ke ki jaden yo te aktyèlman bay ki te espere. Lè sa a, nou te rele kèk fonksyon PHP lè l sèvi avèk yon ti kras nouvo sentaks, menm si li nan prete nan men C. Sa a operatè flèch pèmèt nou fè pou sèvi ak yon bagay yo rele objè-oryante pwogramasyon. Nou pa pral antre ki nan nenpòt detay isit la, men pou kounye a konnen li nan yon fason pou gen fonksyon ki asosye ak objè, ki se yon kalite espesyal nan estrikti, kòm nou te wè nan C. Men, pou kounye a, jis pran sou lafwa ke sa a se sentaks ki kòrèk la yo sèvi ak lè w ap itilize yon bibliyotèk tankou sa a bibliyotèk PHPMailer. Lè sa a, nan fen sa a ranpli nou te dynamique pwodwi yon imèl ke yo kouri voye nan kont jharvard@cs50.net mwen nan kont jharvard@cs50.net m 'yo, e nou enfòme itilizatè a kòmsadwa yo ke yo te anrejistre pou sa a espò. Sa a se bèl anpil ki sa Frosh IMS sit a te fè tout moun sa yo ane de sa lè mwen aplike li, yo akòde, nan yon lang diferan, men li montre ou petèt pouvwa a ki di ou gen kounye a ke ou ka eksprime tèt ou pa sèlman programatik nan yon nivo ki ba nan yon lang tankou C men nan yon nivo pi wo ak aplikasyon sa yo nan mond tankou imel anpil reyèl aktyèlman rezoud kèk pwoblèm mond reyèl la. Koulye a, nan kou, menm si mwen itilize sa a script jenere kèk Imèl dynamique soti nan jharvard@cs50.net, ki se tout bon yon kont ke mwen gen aksè nan, dwe byen atansyon voye voye sèlman nan men kont ke yo aktyèlman pwòp ou a, Si nou bagay sa yo fè ou jwenn nan yon ti jan nan dlo cho nan lavi a. Avèk ki t'ap di:, kite la kounye a tranzisyon nan rezoud yon pwoblèm diferan tout ansanm, sa yo ki an repwan eta yo. Koulye a, ki sa sa a aktyèlman vle di? HTTP, sa a ipèrtèks transfere pwotokòl, se aktyèlman yon pwotokòl atach avèk okenn peyi, e ki sa sa a vle di se ke lè ou rale moute yon bagay tankou Google.com ak Lè sa a, frape antre nan anjeneral navigatè ou a gen kèk kalite bondi icon ki Lè sa a, rezilta nan kèk paj wèb yo telechaje, ak Lè sa a, ki icon ti kras sispann bondi, e ke tout bon sijere ki HTTP te konplete kèk kalite koneksyon sou sèvè a ak sa a, se li. HTTP se atach avèk okenn peyi nan sans ke li pa kenbe yon koneksyon ki pèsistan nan sèvè a nan Skype nan fason menm fè sa ki oswa Gchat fè paske avèk HTTP sipozisyon a se ke yon fwa ou te pran yon paj entènèt sa a, se li. Koulye a, an reyalite jou sa yo sou sit tankou Facebook ak Google Maps ak Twitter ak renmen an gen nan dynamism yon anpil plis kote menm apre ke icon sispann bondi ou ka an reyalite jwenn plis Ki dènye soti nan sèvè a, tweets plis, pi plis nouvèl sou Facebook ak renmen an. Men, menm ke se lè l sèvi avèk yon teknik ki nou pral pale sou nan yon semèn oswa de ke yo rekonèt kòm Ajax lè l sèvi avèk yon lang yo rele JavaScript, men nan fen jounen an, HTTP se toujou atach avèk okenn peyi. Men, si ou vle yon jan kanmenm sonje bagay sa yo sou yon itilizatè menm apre yo te dekonekte soti nan sèvè ou PHP fè sa ki peye ou yon mwayen pou fè sa paske, kòm nou te wè dènye fwa, PHP gen yon kantite superglobals, ak yon supèrglobal se, ankò, yon varyab espesyal mondyal ki nan lage nan ou pa sèvè wèb la ak pa PHP tèt li. Ou pa gen bezwen fè anyen pou mete valè nan li, , ak nan mitan superglobals sa yo nou te wè konsa byen lwen yo jwenn ak afiche, ki se kote jaden fòm yo mete otomatikman pou ou, kòm byen ke yon koup nan lòt moun ke nou pa te wè ankò. Anndan de $ _server yo se kèk varyab espesyal ki gen rapò ak sèvè a tèt li. Ki sa ki nan adrès la IP, ki sa ki pwotokòl, HTTP oswa t t 'ou itilize, ki metòd demann ou te itilize ak renmen an, se konsa gen nan kèk enteresan, detay juicy sou sèvè a, ak an reyalite, itilizatè a nan gen kòm byen. Genyen nan $ _cookie, ki se kote tout bagay sa yo rele bonbon yo estoke. Nou pa pral pase tan sou bonbon tèt yo jodi a, men konnen pou kounye a ke yon bonbon se jis yon ti moso enfòmasyon ke yon sèvè wèb ka plante sou yon navigatè entènèt ak nan vire RAM li yo oswa difisil kondwi òdinatè li yo nan nan magazen enfòmasyon sou yon itilizatè, pou egzanp, non itilizatè yo yo pou ke yo pa bezwen tape li chak fwa yo ouvri sesyon an oswa kèk inik nimewo oswa idantifyan pou ki itilizatè pou ke ou pa bezwen enportune yo ak menm kalite kesyon sou preferans nan tan kap vini an, men pi fò nan enterè kounye a la se $ _session. Sa a supèrglobal, ki, tankou lòt moun yo, se remèt bay ou otomatikman nan PHP lè w ap ekri sou sit entènèt PHP ki baze sou ka magazen anyen ou vle, strings, nonm antye yo, pwen k ap flote, valè, ranje, objè, reyèlman anyen ke ou vle, epi li pèmèt ou nan magazen li nan yon fason ke menm si itilizatè a vizite ou kounye a epi Lè sa a, vini tounen yon minit soti nan kounye a oswa 5 minit nan kounye a paske yo pran tan yo anvan yo klike sou kèk lyen lòt PHP pral asire ke tou sa ou mete nan ki supèrglobal sesyon yon minit minit oswa 5 Anons sa pibliye depi ap toujou gen la lè la retounen itilizatè. Ak anba kapo a sa a se supèrglobal aplike pa fason pou bagay sa yo rele bonbon, men pou kounye a, li nan jis yon abstraction kote li nan sòt de ekivalan a pwogramatik nan yon kabwa fè acha. Kèlkeswa sa ou, pwogramè a, mete nan ki supèrglobal etalaj asosyatif pral gen kèk nimewo nan minit pita jiskaske ou efase li oswa jiskaske itilizatè a L Kite navigatè li oswa li tout ansanm. Se pou nou pran yon gade nan yon egzanp sou kouman sa a se bagay aktyèlman itilize. Nan counter.php nan mitan moso vyann bèt jodi a nan kòd nou gen liy ki anba la a. Nan kòmansman sa a ranpli nou gen yon pakèt moun sou kòmantè ble, ki fè yo entérésan pou kounye a. Men, nan liy 13 nou gen yon liy nouvo, session_start, ak ki aktyèlman fè egzakteman sa li di. Li kòmanse sesyon yo. Li pèmèt ou itilize ke gwo supèrglobal $ _session, epi li kòm senp tankou sa. Koulye a, si nou kontinye fè yon gade nan liy 16, kite la eseye konnen sa ki paj sit entènèt sa a pral fè a. Si (ise ($ _SESSION ["vann san preskripsyon"]) Lè sa a, ale pi devan ak magazen nan varyab la vann san preskripsyon, san preskripsyon miniskil, $ _SESSION ["Vann san preskripsyon"]. Sa a sanble ap deklare yon varyab lokal rele kontwa andedan nan yo ki li nan mete yon kopi nan tou sa ki andedan nan supèrglobal la rele sesyon nan kote "kontwa an." Lòt Bagay, aparamman, sa a ti kras lokal kontwa varyab, se inisyalizèd a 0. Men, Lè sa a, yon liy kèk pita nan 26 avi ke kopi sesyon an nan kontwa, kle li yo, te gen yon affecte valè nouvo ki se valè li ye kounye a plis 1. Nan ti bout tan, sa a ranpli sanble ap mete ajou yon counter ki nan estoke andedan nan supèrglobal nan sesyon pa incrementing li pa 1, men li premye konsève yon kopi valè a anvan pa estoke l 'nan yon varyab lokal rele $ san preskripsyon, ak Lè sa a, desann isit la kite a wè sa ki rete. Li vire soti li nan bèl anpil jis HTML. Nan fon an nan paj sa a nou wè nan liy 37 ke mwen te vizite sit sa a kontwa kantite fwa, se konsa gen nan yon koup karakteristik enteresan isit la. Youn nan, sa a se byen klè yon varyab, men li pa sifi jis mete $ Kontwa nan kò a nan HTML ou paske nan kou si li jis gen nan mitan PHP HTML ou a pral nan asime ke a, se jis HTML. Ou literalman vle $ kontwa yo dwe enprime sou ekran an. Men olye pa jete nan mòd PHP ak sa a moso nan sentaks nou ka dynamique insert yon valè isit la trè menm jan an nan lespri a sa nou te fè sa dènye tan ak yo mete valè yo nan strings. An reyalite, sa a se jis yon nòt steno pou li di yon bagay tankou sa a literalman, ekri ak lèt ​​detache ($ kontwa) oswa menm yon bagay tankou printf (kontwa% s,), oswa menm, jan ou ka wè sou entènèt oswa nan liv lekòl, gen nan yon fonksyon nan PHP rele eko ki fè sa ki menm bagay la, ak tout moun sa yo yo se jis ankò proliks fason nan di