[Powered by Google Translate] [Linggo 9] [David J. Malan - Harvard University] [Ito ay CS50. - CS50.TV] Ayos lang. Maligayang pagbabalik. Ito ay CS50, at ito ay ang simula ng linggo 9. Ngayon naming tumutok sa mga partikular na sa disenyo, hindi na sa konteksto ng C ngunit sa konteksto ng PHP at isang bit ng SQL at isang bit ng JavaScript, lalo na patungo sa isang dulo ng parehong pset 7 at din ang iyong panghuling proyekto. Sa katunayan, kung ikaw ay sa puntong iyon sa iyong huling proyekto kung saan baka bilang ng isang oras o kaya ang nakalipas sa iyo ng hindi bababa sa na nagsimula upang bigyan ng ilang-iisip sa iyong panghuling proyekto at pinag-iisipan mo na nais mong makipagtulungan sa 1 o 2 mga kaklase, kung nagkakaroon ka ng problema sa pagkonekta sa sinabi kaklase, huwag mag-atubiling upang punan ang form sa cs50.net/partners/form. Nagtatanong ka lang kung sino ka, kung anong uri ng proyekto pinag-iisipan mo tungkol sa, kung saan ka nakatira lamang para sa mga logistical dahilan. At pagkatapos ay kung nais mong panatilihin ang isang mata sa sa mga susunod na linggo o kaya spreadsheet URL doon, maaari mong makita ang isang read-only na bersyon ng Google doc kung saan kami ay mangolekta ng impormasyon na iyon. Kaya kung nais mong upang gumana sa isang tao, sa pamamagitan ng lahat ng paraan huwag mag-atubiling makipag-ugnay sa mga tao sa pamamagitan ng na mekanismo. Subalit ang karamihan sa mga tao ang trabaho solo. Na lubos fine. Kaya huwag pakiramdam na ito ay sa anumang paraan sapilitan. Sa Biyernes ito ay lamang sa akin at ng ilang ng koponan sa dito, walang laman ang teatro para sa pinaka-bahagi. Mayroong ay 3 turista sitting doon, kaya na ay isang maliit na mahirap. Ano usapan natin ang tungkol database at usapan natin ang tungkol pset 7 ng kaunti. At kung hindi mo mangyari na mahuli sa video pa, na fine. Kukunin ko na subukan upang tukuyin ang anumang mga tuntunin na namin kung hindi man mang-ahas batay sa Biyernes ng panayam. Ngunit ngayon na kami ay pagpunta sa subukan upang makakuha ka sa punto ng hindi lamang upang gawin ang isang bagay tulad ng pset 7 ngunit talagang unawa kung ano ang nangyayari sa ilalim ng hood, lalo ilan ng abstractions na ilagay namin sa lugar sa file functions.php upang gumawa ng iyong buhay ng kaunti mas madali ngunit kaya na huli mo maunawaan sa gayon ay kapag ang mga gulong ng pagsasanay dumating sa loob ng ilang linggo maaari mo pa ring nakataguyod makalipas ang sa tunay na mundo at gawin ang mga bagay na ito nang walang anumang CS50 framework sa ilalim mo. Ito $ _SESSION, para sa mga na pamilyar o na na nahuli ang video sa Biyernes, ano ang nilalaman ng session ipaalam sa gawin sa amin sa PHP-based web application? Ito ay isang superglobal variable, na nangangahulugan na katulad sa espiritu sa GET at POST at ng ilang mga iba, ngunit kung ano ang bagay na ito kapaki-pakinabang para sa? Ano ang session na ginagamit para sa? Oo. [Mag-aaral] Nagla-log in. Paumanhin? [Mag-aaral] Nagla-log in Nagla-log in. Katunayan. Sa pset 7 na aming ginagamit session na ito superglobal upang pangasiwaan ang pag-log in. At kung ano ang magaling tungkol ito superglobal na ito ang isang nag-uugnay array. Isang nag-uugnay array, manariwa sa diwa, isang array ngunit na indeks ng hindi na kailangang maging numero tulad ng 012. Maaari silang maging ang mga numero o maaari silang kahit string. At kaya kung ikaw dived sa pset 7, maaari mong isipin ang na namin ang pag-iimbak ng isang key na tinatawag na ID sa loob ng ito nag-uugnay array na ang halaga ay isang bagay tulad ng 123 - anuman ang kasalukuyang naka-log in gumagamit ID ay. Ang pagganyak para sa na kahit na matapos ang gumagamit ay binisita localhost o aking website sa mas pangkalahatang at pagkatapos nilang naka-log in, kahit na hindi sila i-click ang isang link o bumalik sa aking website para sa 5 minuto o kahit isang oras o kahit sa isang araw ngunit iwanan nila ang kanilang browser window bukas, sa pamamagitan ng ito superglobal ko matandaan na sila ay naka-log-in. Sa ibang salita, ito ay nagbibigay-daan sa akin upang mag-imbak ng bahagyang pangmatagalang anumang bagay na gusto ko tungkol sa isang user. At maaari mong tingin nito ay talagang bilang ang pagkakatawang-tao ng isang shopping cart. Lugar tulad ng Amazon malinaw naman ipaalam mo ilagay ang mga bagay sa isang shopping cart, ngunit HTTP, ang protocol na nagpapagana sa Web, ay stateless sa kamalayan na kapag bumisita ka sa isang website, para sa pinaka-bahagi hindi mo ang ilang mga pare-pareho ang koneksyon ng network sa pagitan ng iyong browser at ang server. Sa lalong madaling na-download mo ang HTML at ang mga JPEG na at ang mga GIF at ang lahat ng iyon, mawala ang koneksyon at mo lamang ng isang kopya ng HTML at watnat mula sa server. Ngunit kung ang server ang nais upang matandaan ang isang bagay tungkol sa iyo, pasanin sa server sa aktwal na-record na impormasyon. At kaya mo ang programmer na may kontrol sa server ilagay ang karamihan ng anumang nais mo sa loob ng ito superglobal nag-uugnay array at ito ay doon sa susunod na oras na ang user na ito ay bumalik, kung ito ay ang mga minuto o kahit araw, maliban kung sila isara ang kanilang mga browser window, sa puntong session mawala. Kaya ito ay panandalian imbakan, mabuway, at ito ay sinadya upang pumunta ang layo sa lalong madaling isinasara ng user ang kanilang browser - hindi lamang na tab, madalas sa buong browser, sa gayong paraan epektibong pag-log sa user. Kaya kung paano ay bagay ito aktwal na naipatupad? Natin ang isang mabilis na pagtingin sa isang simpleng halimbawa na namin ay tumingin sa sa Biyernes. Para sa mga pamilyar, ito ay kasing simple ng ito. Ito ay isang web page na ang tanging layunin sa buhay ay upang sabihin sa akin kung gaano karaming beses na binisita ko ang pahinang ito. Ito ang unang pagkakataon dito sa Lunes na binisita ko ito, kaya ito sabi ni 0 beses. Ngunit kung sisimulan ko i-reload ang pahinang ito, sinasabi nito 1 oras, 2, 3, 4, 5, at ito ay malaon lamang panatilihin sa pagbibilang up, up, up, up, up para sa bawat oras na aking aktwal na i-click ang I-reload ito. Kaya kung paano ay pagtatrabaho na ito? Hayaan akong pumunta sa loob ng ang file na ito na tinatawag na counter.php. Ang tuktok na bahagi ng lahat ng asul na mga komento, ngunit kawili-wiling bahagi ay dito. Sa linya 13 Tinatawag namin itong function na session_start, at iyon ay literal ang lahat ng kailangan mong gawin kung gusto mong magkaroon ng access ito espesyal superglobal tinatawag $ _SESSION. Na ginagawang lahat ng mga posibleng, at makikita namin makita sa isang sandali kung paano na ang lahat ng posibleng. Sa linya 16 paunawa kung ano ang ako ginagawa. Kung ang susi, na tinatawag na counter - sa ibang salita, ang halaga ng index - "counter" umiiral sa loob ng array na ito na tinatawag na session, pagkatapos ay kung ano ang ako ginagawa sa ito sa linya sa ibaba? Ano ang linya 18 ginagawa? [Hindi marinig na mag-aaral tugon] Ano iyan? [Mag-aaral] pag-iimbak ang halaga. Mabuti. Ito ay ang pag-iimbak ang halaga na sa session ngayon sa isang bagong lokal na pansamantalang variable, $ Counter sa lahat ng maliit na. Pansinin na ang PHP na ng kaunti tamad dito. Pansinin na hindi namin ang anumang pagbanggit ng int o Float o string o anumang bagay tulad na dahil PHP ay mahina-type, kung saan hindi mo upang tukuyin ang uri ng variable, at sa kasong ito dito hindi ko na kahit na ipinahayag ito. Ako deklarasyon ito sa loob ng mga kulot tirante at hindi tulad ng C, ito ay talagang okay. Hindi mahalaga kung paano malalim Nested deklarasyon ng variable sa PHP - sa loob ng kulot suhay, sa loob ng kulot suhay at ang tulad - ito sa sandaling iyon sa oras umiiral para sa natitira ng programa, para sa mas mahusay o para sa mas masahol pa. Kaya agad na magiging global sa lalong madaling mong tukuyin ang mga ito bilang ang ginagawa namin dito. Kung hindi man, kung hindi ko makita na may anumang bagay sa superglobal session, Tila ako Sinisimulan ito variable counter sa 0, sa gayong paraan lamang ipagpalagay ang user ay hindi kailanman ay dito bago. At pagkatapos na ito ng kurso ay incrementing ang counter kung paano? Ako nag-a-update ng ang halaga na ang nasa loob ng mga ito nag-uugnay array sa pamamagitan ng pagtatakda ng katumbas ng anumang counter kasalukuyang + 1. Kung mag-scroll pababa ko dito sa HTML ng pahina, ito ay aktwal na medyo simple. Ang ko sa katawan ng pahinang ito, "Ikaw binisita ang site na ito kaya-at-kaya beses." At ito ay bumuo ng PHP. Kung gagawin mo