[Powered by Google Translate] [Java 8, vazhdoi] [David J. Malan] [Universiteti i Harvardit] [Kjo është CS50.] [CS50.TV] Kjo është CS50, kështu që kjo është fundi i javës 8 këtu. Ne natyrisht kishte një grimë e një uragan më herët këtë javë, në mënyrë të drejtë tani ajo është me të vërtetë vetëm ju dhe mua në këtë sallë leksion, por sot ne vazhdojmë bisedën tonë në lidhje me PHP dhe rreth programimit web në përgjithësi, dhe ne gjithashtu të futur idenë e bazave të të dhënave, veçanërisht ai i quajtur MySQL, e cila është mjaft popullore këto ditë, në pjesë të madhe për shkak të scalability e saj, si dhe për shkak të saj duke qenë burimi i lirë dhe të hapur. Por së pari, një vështrim në ku ne u ndërpre për herë të fundit. Kujtojnë se ne kemi qenë në kërkim në disa shembuj Frosh IMS, dhe kjo ishte forma shëmtuar që kam ardhur me disa 15 vjet + pare në mënyrë që të kenë studentët në regjistrin kampus për sport fillestar i brendshëm të vërtetë pa pasur nevojë për të udhëtim nëpër oborr më të Wigglesworth për rrëshqitje një copë letër fizike nën derën e disa Proctor së. Në vend të kësaj kemi lëvizur çdo gjë në internet, por për ta bërë këtë ne kemi nevojë për të bërë përdorimin e një teknologjive pak, kështu që një, kishim nevojë për HTML, HyperText Markup Language, e cila përsëri është kjo gjuhë markup me të cilin ju e bëni web pages strukturore. Duke përdorur një grimë e CSS këto ditë, Cascading Style Sheets, ku ne përdorim stylizations e web faqe duke përdorur një sintaksë paksa të ndryshme, ndërsa HTML ishte e gjitha në lidhje me strukturën e saj. Ne gjithashtu duhet për të futur një gjuhë programimi web. Në këtë rast, ne do të përdorim PHP, PHP dhe do të lejojë na tek përmbajtja dinamike prodhimit si dhe të bëjë gjëra të programatike si dërguar postë elektronike, siç ishte rasti në shënimin e lamë javën e kaluar. Kujtojnë se kodi për këtë ishte në 2 pjesë. Një, kemi pasur froshims3.php, dhe kjo ishte kryesisht markup me një formë të HTML në brendësi të saj, një grimcë e CSS deri këtu në atributet stil kështu që forma e vetë do të përqëndruara në faqe, por përtej kësaj kemi pasur disa inpute përfaqësuese formë, një fushë teksti, një checkbox, disa radio butonat, zgjidhni një menu, dhe një buton submit. Dhe nëpërmjet kësaj forme, ne paraqitur një skedar që është quajtur me sa duket register3.php, e cila në vetvete dukej një diçka të vogël si kjo. Tani, shumica e kodit në register3.php, kujtohet, ishte e gjitha në lidhje me email. Ajo bëri një pak e vlefshmërisë së formën që është dorëzuar për të siguruar se fushat janë dhënë në fakt që pritej. Pastaj ne e quajti disa funksione PHP përdorur sintaksë pak më të ri, edhe pse kjo është huazuar nga C. Ky operator shigjetë na lejon për të bërë përdorimin e diçkaje që quhet object-oriented programimit. Ne nuk do të shkojë në se në çdo hollësi këtu, por e di tani për tani kjo është një mënyrë për të pasur funksione që lidhen me objekte, të cilat janë një lloj i veçantë i strukturës, siç e pamë në C. Por tani për tani, vetëm të marrë në besim se kjo është e saktë për të përdorur sintaksë kur duke përdorur një bibliotekë si kjo bibliotekë PHPMailer. Dhe pastaj deri në fund të këtij file kishim gjeneruar dinamike një email që u dërgua në llogarinë time jharvard@cs50.net nga llogaria ime jharvard@cs50.net, dhe ne informoi përdorues në përputhje me rrethanat se ata kishin qenë të regjistruar për këtë sport. Kjo është shumë e shumë atë vend IMs Frosh bëri të gjitha ato vite më parë kur kam zbatuar atë, dhënë, në një gjuhë të ndryshme, por kjo ju tregon ndoshta fuqinë që ju keni tani që ju mund të shprehin veten, jo vetëm programatikisht në një nivel të ulët në një gjuhë si C, por në një nivel shumë më të lartë me këto aplikime shumë reale botërore si email në fakt zgjidhur disa probleme të botës reale. Tani, sigurisht, edhe pse unë përdorur këtë script për të gjeneruar disa email dinamike nga jharvard@cs50.net, e cila është me të vërtetë një llogari që unë të kenë qasje në, do të jetë mjaft i kujdesshëm për të dërguar Dërgoja vetëm nga llogaritë që janë të vërtetë tuaj, mos gjëra të merrni ju në një grimë e ujit të nxehtë në jetë. Me tha se, tani le të tranzicionit për të zgjidhur një problem të ndryshme krejt, se mbajtja e shteteve. Tani, çfarë e bën këtë të vërtetë do të thotë? HTTP, ky protokoll transferimi HyperText, është në fakt një protokoll pa shtetësi, dhe çka kjo do të thotë është se kur ju tërheq lart diçka si Google.com dhe pastaj goditi të hyjë zakonisht shfletuesi juaj ka disa lloj ikonë tjerrje që pastaj rezulton në disa web faqe duke u shkarkuar, dhe pastaj se ikona pak ndalesa tjerrje, dhe se me të vërtetë sugjeron HTTP që ka përfunduar një lloj lidhje me server dhe kjo është ajo. HTTP është pa shtetësi në kuptimin që ajo nuk mban një lidhje të vazhdueshme në server në të njëjtën mënyrë e bën Skype ose Gchat bën, sepse me HTTP supozimi është se një herë ju keni sjellë një web faqe që është ajo. Tani, në realitet këto ditë në faqet si Facebook dhe Google Maps dhe Twitter dhe si ka dinamizëm shumë më tepër ku edhe pasi që ndalon ikona tjerrje ju në fakt mund të merrni përditësimet më shumë nga serveri, tweets më shumë, më shumë updates statusit në Facebook dhe si. Por edhe që është duke përdorur një teknikë që ne do të flasim në një javë ose dy njohur si Ajax duke përdorur një gjuhë të quajtur JavaScript, por në fund të ditës, HTTP është ende pa shtetësi. Dhe akoma në qoftë se ju doni të mbani mend disi gjërat në lidhje me një përdorues edhe pasi ata kanë shkyçur nga serveri juaj PHP bën të përballojë ju një mjet për të bërë këtë sepse, siç e pamë herën e fundit, PHP ka një numër të superglobals, dhe një superglobal është, përsëri, një variabël të veçantë globale që është dorëzuar për ju nga serveri web dhe nga PHP vetë. Ju nuk keni të bëni asgjë për të vënë vlerat në të, dhe në mesin e superglobals ne kemi parë deri më tani janë marrë dhe pas, i cili është ku fusha formë janë vënë automatikisht për ju, si dhe një çift të tjerëve që ne nuk kemi parë ende. Brenda $ _server janë disa variabla të veçanta që lidhen me serverin vetë. Çfarë është adresa IP, çfarë protokolli, HTTP HTTPS, ose keni përdorur, çfarë metodë Kërkesa keni përdorur dhe si, kështu që ka disa interesante, Detajet lëng rreth serverit, dhe në fakt, përdoruesit në atje si. Ka $ _cookie, i cili është ku këto gjëra quhet cookies janë ruajtur. Ne nuk do të kalojnë kohë në cookie veten sot, por e di tani për tani që një cookie është vetëm një pjesë e vogël e informacionit se një web server mund të bimëve në një shfletues web dhe nga ana e saj RAM ose hard drive e kompjuterit të saj për të ruajtur informacion në lidhje me një përdorues, për shembull, emrin e tyre të përdoruesit në mënyrë që ata nuk duhet të shkruani atë në çdo kohë që ata Identifikohu ose disa numër unik identifikues për atë apo përdoruesit kështu që ju nuk duhet të ngacmojnë ata me të njëjtat lloje të pyetjeve rreth preferencat në të ardhmen, por shumica e interesit tani është $ _session. Ky superglobal, i cili, ashtu si të tjerët, është dorëzuar për ju automatikisht nga PHP kur ju jeni shkrim PHP-bazë faqet e internetit mund të ruajë çdo gjë që ju dëshironi, vargjet, integers, pikë lundrues, vlerat, vargjeve, objekte, me të vërtetë çdo gjë që ju doni, dhe kjo ju lejon të ruani atë në një mënyrë të tillë se edhe nëse përdoruesi viziton ju tani dhe pastaj kthehet një minutë nga tani ose 5 minuta nga tani, sepse ata e marrin kohën e tyre para se ta klikoni disa lidhje tjetër PHP do të sigurojë që çdo gjë që ju vënë në këtë sesion superglobal minuta apo 5 minuta më parë do të jenë ende atje kur kthimit përdorues. Dhe nën kapuç kjo superglobal zbatohet me anë të këto gjëra quhet cookies, por tani për tani, kjo është vetëm një abstraksion ku kjo është lloj i ekuivalent programatik të një karrocë pazar. Çfarëdo që ju, programues, që vënë në array superglobal associative do të jetë atje disa minuta më vonë numri i derisa ju të fshini apo derisa përdoruesi shpërblej shfletuesin tij ose të saj krejt. Le të marrin një vështrim në një shembull se si kjo gjë është përdorur në të vërtetë. Në mesin e counter.php copa sotme të kodit ne kemi rreshtin e mëposhtëm. Në fillim të këtij file ne kemi një bandë e komenteve blu, të cilat janë jointeresant për tani. Por në linjë 13 ne kemi një linjë të re, session_start, dhe që në fakt e bën pikërisht atë që ajo thotë. Ajo fillon seanca. Kjo ju mundëson që të përdorin atë madh superglobal _session $, dhe ajo është aq e thjeshtë sa që. Tani, në qoftë se ne të vazhdojë të shikojmë në linjë 16, le të përpiqet të kuptoj se çfarë kjo web faqe do të bëjë. If (isset ($ _SESSION ["kundër"]) pastaj të shkojnë përpara dhe dyqan në variablin counter, kundër të vogla, $ _SESSION ["Kundër"]. Kjo duket të jetë deklaruar një ndryshore të quajtur lokal counter brenda e cila është e vënien e një kopje të çfarëdo është brenda i superglobal Seanca quajtur në lokalitetin "kundër". Tjetër, me sa duket, kjo pak counter lokale ndryshueshme, është nisur në 0. Por pastaj disa rreshta më vonë në 26 njoftimin se kopja seancës i banak, kryesore të saj, ka një vlerë të caktuar të re e cila është vlera e tij aktuale plus 1. Me pak fjalë, kjo fotografi duket të jetë përditësimin një kundër që është ruajtur në brendësi të seancës superglobal by bën rritjen atë me 1, por ai së pari ruan një kopje të vlerës së mëparshme me ruajtjen atë në një ndryshore të quajtur $ lokal kundër, dhe pastaj këtu poshtë le të shohim se çfarë mbetet. Ajo rezulton se është shumë e shumë të vetëm HTML. Në fund të kësaj faqeje shohim në linjë 37 që unë kam vizituar këtë faqe Numri counter herë, kështu që nuk ka karakteristika çift interesante këtu. Një, kjo është në mënyrë të qartë një ndryshore, por kjo nuk do të mjaftojë vetëm për të vënë $ Counter në trupin e HTML tuaj për shkak të kursit në qoftë se ajo është vetëm atje në mes HTML PHP tuaj do të supozojmë se është vetëm HTML. Ju fjalë për fjalë dëshironi $ në kundërshtim me të shtypen në ekran. Por në vend duke rënë në mënyrë PHP me këtë pjesë të sintaksës ne mund të futur një vlerë dinamike këtu shumë e ngjashme në frymë me atë që ne e bëmë herën e fundit me futur vlerat në vargjet. Në fakt, kjo është vetëm një simbol stenografi për të thënë diçka si kjo fjalë për fjalë, print ($ counter) ose edhe diçka si (% s, counter) printf, apo edhe, si ju mund të keni parë në internet apo në tekstet, ka një funksion të quajtur në PHP echo e cila e bën të njëjtën gjë, dhe të gjitha ato janë mënyra vetëm gjatë lodhshëm për të thënë