[Powered by Google Translate] [Ġimgħa 8, Ikompli] [David J. Malan] [Università ta 'Harvard] [Dan huwa CS50.] [CS50.TV] Dan huwa CS50, għalhekk dan huwa l-aħħar ta 'Ġimgħa 8 hawn. Aħna ta 'kors kellhom daqsxejn ta' uragan aktar kmieni din il-ġimgħa, hekk dritt issa huwa verament biss int u lili f'din sala lecture, iżda llum aħna nkomplu konverżazzjoni tagħna dwar PHP u dwar l-ipprogrammar tal-web aktar ġenerali, u aħna wkoll jintroduċu l-idea ta 'databases, partikolarment wieħed imsejjaħ MySQL, li huwa pjuttost popolari dawn il-jiem, fil-parti kbira minħabba l-modularità tagħha kif ukoll minħabba tagħha huwa liberu u open source. Iżda l-ewwel, ħarsa lejn fejn aħna jitħalla 'off-aħħar darba. Ifakkar li konna tħares lejn l-eżempji diversi IMs Frosh, u dan kien il-forma hideous li I ħarāet bil + snin madwar 15 ilu sabiex ikollhom l-istudenti fuq il-kampus reġistru għall-isports Freshman intramurali mingħajr ma attwalment jkollhom trek aktar madwar l-tarzna biex Wigglesworth li tiżżerżaq biċċa fiżiku ta 'karti minn taħt bieb xi Procter s. Minflok aħna mċaqalqa online kollox, iżda biex tagħmel dan aħna meħtieġa biex jagħmlu użu ta 'ftit teknoloġiji, għalhekk wieħed, għandna bżonn HTML, lingwa markup Portugues, li għal darb'oħra huwa dan tal-lingwa markup li magħhom inti tagħmel paġni web strutturalment. Bl-użu daqsxejn ta 'CSS dawn il-ġranet, cascading folji stil, fejn nużaw stylizations tal-paġna web bl-użu ta sintassi kemmxejn differenti, billi l-HTML kienet kollha dwar l-istruttura tiegħu. Għandna bżonn ukoll li jintroduċu lingwa ta 'programmar web. F'dan il-każ, aħna ser tuża PHP, PHP u se jħallina naħsdu Kontenut output dinamikament kif ukoll tagħmel affarijiet programmatiċi simili jibgħat emails, kif kien il-każ fuq in-nota aħna xellug ġimgħa li għaddiet. Ifakkar li l-kodiċi għal dan kienet fi 2 partijiet. Wieħed, kellna froshims3.php, u dan kien ġeneralment markup ma 'forma HTML ġewwa ta' dan, ftit żgħira ta 'CSS up hawn fl-attributi istil sabiex il-formola innifsu tkun iċċentrata fuq il-paġna, iżda lil hinn minn dik kellna xi inputs forma rappreżentattivi, qasam test, a Checkbox, xi radju buttuni, menu tagħżel, u buttuna issottometti. U permezz ta 'din il-formola, aħna sottomessi għal fajl li kien apparentament imsejħa register3.php, li fih innifsu ħares ftit xi ħaġa bħal din. Issa, ħafna mill-kodiċi fl-register3.php, lura, kienet kollha dwar email. Hija għamlet xi ftit ta 'validazzjoni tal-formola li ġiet sottomessa biex tiżgura li l-oqsma kienu attwalment sakemm kienu mistennija. Imbagħad aħna msejħa xi funzjonijiet PHP jużaw ftit sintassi ġdida, anki jekk huwa mislufa mill C. Dan operatur vleġġa jippermetti li jagħmlu użu ta 'xi ħaġa imsejħa oġġett orjentati lejn programmazzjoni. Aħna mhux se tidħol fis li fi kwalunkwe dettall hawnhekk, imma jafu għal issa huwa mod ta 'li jkollhom funzjonijiet assoċjati ma' oġġetti, li huma tip speċjali ta 'struttura, kif rajna fil C. Iżda għal issa, ħu fuq fidi li dan huwa l-sintassi korretta għall-użu meta jintuża librerija bħal din il-librerija PHPMailer. U allura l-aħħar ta 'dan il-fajl kellna dinamikament iġġenerat email li ltqajna mibgħuta lill-kont jharvard@cs50.net tiegħi mill-kont jharvard@cs50.net tiegħi, u aħna infurmat lill-utent b'dan li kienu ġew reġistrati għal dan l-isport. Dan huwa pretty ħafna dak is-sit IMs Frosh ma dawk kollha snin ilu meta I implimentata din, mogħtija, b'lingwa differenti, iżda turi li inti forsi l-qawwa li għandek Issa li inti tista 'tesprimi lilek innifsek mhux biss programmatically f'livell baxx b'lingwa bħal C iżda fuq livell ħafna ogħla ma 'dawn l-applikazzjonijiet fid-dinja reali ħafna bħall-email li attwalment isolvu xi problemi fid-dinja reali. Issa, naturalment, anki jekk I jużaw din l-iskrittura biex jiġġeneraw xi emails dinamiku minn jharvard@cs50.net, li huwa tabilħaqq kont li jien jkollhom aċċess għal, do jkun pjuttost attenta li tibgħat mail biss mill-kontijiet li huma attwalment tiegħek, lest affarijiet nikseb inti fil-daqsxejn ta 'ilma sħun fil-ħajja. Ma 'dak imsemmi, ejja issa tranżizzjoni isolvi problema differenti għal kollox, dak ta 'stati jżommu. Issa, dak ma dan fil-fatt jfisser? HTTP, dan il-protokoll ta 'trasferiment Portugues, huwa attwalment protokoll mingħajr stat, u dak li dan ifisser huwa li meta inti pull up xi ħaġa simili Google.com u mbagħad hit jidħol normalment browser tiegħek għandu xi tip ta 'ikona għażil li mbagħad jwassal għal xi paġna tal-web qed jitniżżel, u mbagħad li icon żgħir jieqaf għażil, u li fil-fatt tissuġġerixxi li HTTP lestiet xi tip ta 'konnessjoni għall-server u li hu. HTTP hija mingħajr Stat fis-sens li hija ma ssostnix konnessjoni persistenti lis-server fil-Skype istess mod ma jew Gchat ma għaliex ma HTTP is-suppożizzjoni hi li ladarba inti ħadthom fetched web page thats it. Issa, fir-realtà dawn il-jiem fuq siti bħal Facebook u Google Maps u Twitter u simili hemm dinamiżmu ħafna aktar fejn anki wara li icon jieqaf għażil inti tista 'fil-fatt tikseb aktar aġġornamenti mis-server, tweets aktar, aktar aġġornamenti istatus fuq Facebook u simili. Iżda anke li qed permezz ta 'teknika li aħna ser nitkellmu dwar fil-ġimgħa jew tnejn magħrufa bħala Ajax jużaw lingwa imsejjaħ JavaScript, iżda fl-aħħar tal-ġurnata, HTTP għadu mingħajr stat. And yet, jekk inti tixtieq li b'xi mod tiftakar affarijiet dwar l-utent anki wara li ħadthom skonnettjat minn server tiegħek PHP ma jaffordjaw inti mezz ta 'kif isir dan għaliex, kif rajna aħħar darba, PHP għandha numru ta 'superglobals, u superglobal hija, għal darb'oħra, varjabbli globali speċjali li l-mogħtija lilek mill-web server u mill PHP innifsu. Inti ma għandekx tagħmel xejn biex tqiegħed il-valuri fiha, u fost l-superglobals aħna stajt tidher s'issa huma jiksbu u post, li huwa fejn oqsma forma jitqiegħdu awtomatikament għalik, kif ukoll bħala koppja ta 'oħrajn li aħna ma bbenefikawx s'issa. Ġewwa ta '$ _SERVER huma xi fatturi varjabbli speċjali relatati mal-server innifsu. X'hemm l-indirizz IP, liema protokoll, HTTP HTTPS jew ma tuża, liema metodu talba ma tuża u simili, sabiex hemm xi interessanti, dettalji mmerraq dwar il-server, u fil-fatt, l-utent fil hemm ukoll. Hemm $ _cookie, li huwa fejn dawn l-affarijiet imsejħa cookies huma maħżuna. Aħna mhux se jqattgħu ħin fuq cookies infushom llum, iżda jaf għal issa li cookie hija biss biċċa żgħira ta 'informazzjoni li web server tista 'pjanti fuq web browser u min-naħa RAM tagħha jew hard drive tal-kompjuter tagħha ta biex jaħżnu informazzjoni dwar l-utent, per eżempju, isem l-utent tagħhom sabiex dawn ma jkollhom tip li kull darba li login jew xi numru uniku jew identifikatur għall-utent sabiex inti ma għandekx jiffittaw bis bl-istess tipi ta 'mistoqsijiet dwar preferenzi fil-futur, iżda ħafna ta 'interess dritt issa huwa $ _session. Dan superglobal, li, bħall-oħrajn, hija mogħtija lilek awtomatikament mill PHP meta int bil-miktub PHP bbażati fuq websajts jista 'jaħżen xi ħaġa li trid, kordi, interi, punti f'wiċċ l-ilma, valuri, arrays, oġġetti, verament xi ħaġa li trid, u li jippermettilek li jaħżnu b'mod li anki jekk l-utent żjarat inti issa u mbagħad taqa 'lura minuta minn issa jew 5 minuti minn issa għaliex huma jieħdu l-ħin tagħhom qabel ma tikklikkja xi rabta oħra PHP se tiżgura li tkun xi tkun inti tpoġġi fil dak superglobal sessjoni minuti minuta jew 5 ilu xorta se jkun hemm meta l-prospetti utent. U taħt il-barnuża dan superglobal tiġi implimentata permezz ta ' dawk l-affarijiet imsejħa cookies, iżda għal issa, huwa biss astrazzjoni fejn huwa tip ta 'l-ekwivalenti programmatiku ta' shopping cart. Tkun xi tkun inti, il-programmer, jistabbilixxu li l- firxa assoċjattiva superglobal se jkun hemm xi numru ta 'minuti wara sakemm inti iħassarha jew sakemm l-utent quits browser tiegħu jew tagħha għal kollox. Ejja tagħti ħarsa lejn eżempju ta 'kif dan il-ħaġa hija attwalment użati. Fil counter.php fost biċċiet tal-lum ta 'kodiċi aħna għandna l-linja li ġejja. Fil-bidu ta 'dan il-fajl għandna mazz ta' kummenti blu, li huma uninteresting għal issa. Iżda fil-linja 13 għandna linja ġdida, session_start, u li attwalment ma eżattament dak li jgħid. Huwa jibda sessjonijiet. Dan jippermetti li inti tuża dik kbar superglobal $ _session, u huwa sempliċi bħal dik. Issa, jekk aħna tipproċedi biex tħares lejn linja 16, ejja jippruvaw ċifra barra dak din il-paġna web huwa se jagħmlu. Jekk (isset ($ _SESSION ["counter"]) imbagħad imorru quddiem u jaħżen fil-varjabbli counter, kontro zghar, $ _SESSION ["Counter"]. Dan jidher li tiddikjara varjabbli lokali imsejjaħ counter minn ġewwa illi huwa tqegħid kopja ta 'dak kollu li huwa ġewwa tal-superglobal imsejjaħ sessjoni fil-post "counter". Inkella, apparentement, din il-kontro ftit varjabbli lokali, huwa initialized għal 0. Imma mbagħad ftit linji aktar tard fil 26 notifika dik il-kopja s-sessjoni ta 'kontro- ewlenin tagħha, għandha assenjata valur il-ġdid li huwa valur attwali tagħha flimkien ma '1. Fil-qosor, dan il-fajl jidher li l-aġġornament kontro li l-maħżuna ġewwa tal-superglobal sessjoni billi inkrementazzjoni sa l-1, iżda l-ewwel żżomm kopja tal-valur ta 'qabel billi maħżuna fil-varjabbli lokali imsejjaħ $ counter, u mbagħad stabbiliti hawn ejja ara dak li jibqa. Jirriżulta huwa pjuttost ħafna biss HTML. Fil-qiegħ ta 'din il-paġna naraw fil-linja 37 li Żort dan is-sit Numru counter ta 'drabi, b'hekk m'hemm l-koppja ta' karatteristiċi interessanti hawnhekk. Wieħed, dan huwa manifestament varjabbli, imma mhuwiex biżżejjed li biss jitqiegħed $ Kontro fil-korp ta 'HTML tiegħek minħabba l-kors jekk huwa biss hemm fost PHP HTML tiegħek se tassumi li jinsab biss HTML. Inti litteralment tixtieq $ counter li għandhom jiġu stampati fuq l-iskrin. Iżda minflok billi twaqqa fil-modalità PHP ma 'din il-biċċa ta' sintassi nistgħu dinamikament daħħal valur hawn simili ħafna fl-ispirtu għal dak li għamilna aħħar darba ma ddaħħal valuri fil-kordi. Fil-fatt, din hija biss notazzjoni shorthand biex tgħid xi ħaġa bħal din litteralment, print ($ counter) jew saħansitra xi ħaġa simili printf (% s, kontro), jew saħansitra, kif inti tista raw online jew fil-kotba, hemm funzjoni fil-PHP eku imsejħa li ma l-istess ħaġa, u kollha ta 'dawn huma modi biss itwal xejn b'xejn ta 'tgħid