[Powered by Google Translate] [Semajno 9] [Davido J. Malan - Universitato Harvard] [Jen CS50. - CS50.TV] Bone. Bonvenon dorso. Ĉi tiu estas CS50, kaj ĉi tiu estas la komenco de la semajno 9. Hodiaŭ ni enfokusigas en aparta sur dezajno, jam en la kunteksto de C sed en la kunteksto de PHP kaj iom de SQL kaj iom de JavaScript, aparte al la fino de ambaŭ pset 7 kaj ankaŭ vian fina projekto. Fakte, se vi estas en tiu punkto en via fina projekto kie supozeble ekde eble horo antaŭe vi almenaŭ komencis doni iun penson al viaj fina projekto kaj vi pensas vi ŝatus kunlabori kun 1 aŭ 2 samklasanoj, se vi havas problemojn konektante kun diris samklasanoj, bonvolu plenigi la formularon ĉe cs50.net/partners/form. Ĝi simple demandas vin, kiu vi estas, kian projekton vi pensas pri, kie vi loĝas nur por loĝistikaj kialoj. Kaj poste se vi volas ĵeti okulon super la proksima semajno aŭ do la folio URL tie, vi povas tiam vidi nurlega versio de la Google doc en kiu ni kolekti tiun informon. Do se vi volas labori kun iu, por supozita bonvolu alveni al homoj tra kiuj mekanismo. Sed la plimulto de homoj faru laboron solece. Tio estas tute bona. Do ne sentas ke ĉi tio estas en ajna maniero deviga. Vendredon estis nur mi kaj kelkaj de la teamo de ĉi tie, malplena teatro plejparte. Tie estis 3 turistoj sidas tie supre, por ke estis iom mallerta. Kion ni parolis pri estis datumbazoj kaj ni parolis pri pset 7 iomete. Kaj se vi ne okazis kapti ke en video nur ankoraŭ, estas bone. Mi provos difini ajnan terminoj kiujn ni devus alie fari por donita surbaze de la vendreda prelego. Sed hodiaŭ ni tuj provos akiri vin al la punkto de ne nur povi fari ion kiel pset 7 sed vere kompreni kio okazas sub la kapuĉo, aparte kelkaj el la abstracciones ke ni starigis en la functions.php dosieron fari vian vivon iomete pli facile sed por ke vi finfine komprenis tiel ke kiam la trejnado radoj elspezas en malmultaj semajnoj vi povos ankoraŭ postvivi en la reala mondo kaj fari ĉi aĵoj sen ajna CS50 kadro sub vi. Ĉi $ _SESSION, por tiuj el vi, kiu estas familieca aŭ kiu jam kaptis la video en vendredo, kion signifas kunsido ni faru en PHP-bazita apliko retejo? Tio ĉi estas superglobal variablo, kiu signifas ke estas similaj en spirito GET kaj POST kaj kelkaj aliaj, sed kio estas tiu afero utila por? Kio estas kunsido uzis por? Yeah. [Studento] Arbara ekspluatado in Pardonu? [Studento] Arbara ekspluatado in Arbara ekspluatado in Indeed. En pset 7 ni uzas ĉi kunsido superglobal faciligi restadas in Kaj kio estas bela pri tiu superglobal estas ke ĝi estas asocieca tabelo. Asocieca tabelo, revokon, estas nur tabelo sed kies indeksoj ne plu devas esti nombroj kiel 012. Ili eblas nombroj aŭ ili povas esti eĉ kordoj. Kaj do se vi plonĝis en pset 7 ankoraŭ, vi povas memori ke ni stokante kerna nomata ID ene de ĉi asociaj tabelo kies valoro estas io kiel 123 - kion ajn la aktuale ensalutinta uzanto ID estas. La motivado por ĉi tiu estas ke eĉ post la uzanto vizitis localhost aŭ mia retejo pli ĝenerale kaj tiam ili jam ensalutinta, eĉ se ili ne alklaku ligilon aŭ reveni al mia retejo por 5 minutoj aŭ eĉ unu horon aŭ eĉ unu tago sed ili eliras siajn retumilo fenestro malfermita, tra ĉi superglobal mi povas memori, ke ili estas ensalutinta in En aliaj vortoj, ĝi permesas al mi por gardi iomete longtempe ajn mi volas pri uzanto. Kaj vi povas pensi pri vere kiel la personigo de komerca ĉaro. Lokoj kiel Amazonoj evidente ke vi metis aĵojn en komercaj veturilon, sed HTTP, la protokolo kiu Potencoj la retejo, estas apátrida en la senco ke kiam vi vizitas TTT-ejo, plejparte oni ne havas iu konstanta retkonekto inter via legilo kaj la servilo. Tuj kiam vi elŝutis la HTML kaj la JPEG-oj kaj la gifs kaj cxio, kion, la rilato iras kaj vi nur havas kopion de la HTML kaj whatnot de la servilo. Sed se la servilo volas memori ion pri vi, la sxargxon estas ĉe la servilo al reale gravuri tiun informon. Kaj tial vi la programisto, kiu havas kontrolon sur la servilo povas meti pli ajn vi volas ene de ĉi superglobal asocieca tabelo kaj estos tie la venontan fojon la uzanto revenos, ĉu ĝi estas minutoj aŭ eĉ tagojn poste, krom se ili fermas siajn retumilo fenestro, je kiu punkto kunsido malaperas. Do ĝi estas efemera stokado, estas ne-konstanta, kaj ĝi estas intencis foriri tuj kiam la uzanto fermas siajn retumilo - ne nur ke langeto, ofte la tutan retumilon, per tio efike restadas la uzanto eksteren. Do kiel estas tiu afero fakte implementado? Ni prenu rapida rigardo al simpla ekzemplo ni rigardis la vendredo. Por kiuj ne konas, estis tiel simpla kiel tiu ĉi. Tio estas retpaĝo, kies sola celo en la vivo estas por diri al mi kiom da fojoj mi vizitis la paĝon. Ĉi tiu estas la unua fojo ĉi tie lundon, ke mi vizitis ĝin, do ĝi diras 0 fojojn. Sed se mi komencas reloading ĉi paĝo, ĝi diras 1 fojo, 2, 3, 4, 5, kaj ĉi eventuale nur daŭre rakonti supren, supren, supren, supren, supren por ĉiu tempo mi fakte alklakos Reload sur ĝi. Do kiel estas ĉi laboristino? Lasu min iri ene de ĉi tiu dosiero nomata counter.php. La supra parto de ĉio estas blua komentoj, sed la interesa parto estas tie. On line 13 ni nomas tiun funkcion session_start, kaj tio estas laŭvorte ĉiuj vi bezonas fari, se vi volas havi aliron al tiu speciala superglobal nomita $ _SESSION. Kiu faras ĉion eblan, kaj ni vidos en momento kiel tiu estas ĉio ebla. En linio 16 avizo kion mi faras. Se la ŝlosilon, nomita nombrilo - alivorte, la indekso valoro - "nombrilo" Ekzistas ene de ĉi tabelo nomita kunsido, tiam kion mi faras per ĝi en la linio sub? Kio estas linio 18 faras? [Inaudible studento respondon] Kio estas tio? [Studento] stokante la valoro. Bona. Ĝi estas stoki la valoro kiu estas en kunsido nun en nova loka temporal variablo, $ Nombrilo en ĉiuj minuskla. Rimarku ke PHP jam estante iom mallaborema tie. Rimarku ni ne havas ajnan mencion de int aŭ kaleŝego aŭ ŝnuro aŭ io simila ĉar PHP estas malforte tajpita, per kiu vi ne devas precizigi la tipon de variablo, kaj en tiu kazo tie mi eĉ ne deklaris ĝin ankoraŭ. Mi deklarante ĝin ene de tiuj buklaj streĉaj kaj kontraste C, tiu estas efektive bone. Kiel ajn profunde anidado variablo deklaro estas en PHP - ene de frizita streĉa, ene de frizita streĉa kaj similaj - ĝi tiumomente ĝustatempe ekzistas por la resto de la programo, por pli bona aŭ por malbona. Do tuj fariĝas tutmonda kiam vi difinas ĝin kiel ni faras tie ĉi. Alie, se mi ne trovos ke estas io en la kunsido superglobal, Mi ŝajne inicializar ĉi variablo nombrilo al 0, per tio nur supozi la uzanto neniam estis tie antaŭe. Kaj tiam ĉi kompreneble estas pliigante la vendotablo kiel? Mi ĝisdatigas la valoro kiu estas interne de ĉi asociaj tabelo per opcio ĝi egalas al kiom nombrilo aktuale estas + 1. Se mi rulumu malsupren tie al la HTML de la paĝo, ĝi estas vere bela simpla. Ĉiuj mi havas en la korpo de ĉi paĝo estas: "Vi vizitis ĉi tiun retejon tiom-kaj-tiel-foje." Kaj ĉi tiu estas PHP konstruo. Se vi faras