[Powered by Google Translate] [Wythnos 9] [David J. Malan - Harvard University] [Mae hyn yn CS50. - CS50.TV] Mae pob hawl. Croeso yn ôl. Mae hyn yn CS50, ac mae hyn yn dechrau o wythnos 9. Heddiw rydym yn canolbwyntio yn benodol ar ddylunio, bellach yng nghyd-destun C ond yng nghyd-destun PHP ac yn dipyn o SQL a rhywfaint o JavaScript, yn enwedig tuag at ddiwedd y ddau pset 7 a hefyd eich prosiect terfynol. Yn wir, os ydych yn ar yr adeg honno yn eich prosiect terfynol lle yn ôl pob tebyg fel o awr neu ddwy yn ôl i chi o leiaf yn dechrau rhoi rhywfaint o feddwl i'ch prosiect terfynol ac rydych yn meddwl y byddech yn hoffi i gydweithio gydag 1 neu 2 cyd-ddisgyblion, os ydych chi'n cael trafferth cysylltu â dywedodd cyd-ddisgyblion, mae croeso i chi lenwi'r ffurflen yn cs50.net/partners/form. 'I jyst yn gofyn i chi pwy ydych chi, pa fath o brosiect yr ydych chi'n meddwl am, lle rydych yn byw ychydig am resymau logistaidd. Ac yna os ydych chi am gadw llygad ar dros yr wythnos nesaf, neu felly mae'r URL daenlen yno, gallwch wedyn weld fersiwn darllen yn unig y doc Google lle rydym yn casglu y wybodaeth honno. Felly, os ydych am weithio gyda rhywun, ar bob cyfrif yn teimlo'n rhydd i estyn allan at bobl drwy gyfrwng y mecanwaith hwnnw. Ond mae'r rhan fwyaf o Folks yn gwneud solo gwaith. Mae hynny'n hollol iawn. Felly peidiwch teimlo fod hyn yn mewn unrhyw ffordd yn orfodol. Ar ddydd Gwener mai fi oedd ddim ac mae rhai o'r tîm yn y fan hon, theatr wag am y rhan fwyaf. Roedd 3 dwristiaid yn eistedd i fyny yno, felly, yr oedd ychydig yn lletchwith. Yr hyn yr ydym yn siarad amdano oedd cronfeydd data a buom yn siarad am pset 7 a ychydig bach. Ac os nad oeddech yn digwydd i ddal y ar fideo eto, mae hynny'n iawn. Byddaf yn ceisio diffinio unrhyw delerau y byddem fel arall yn cymryd yn ganiataol yn seiliedig ar ddydd Gwener ddarlith. Ond heddiw, rydym yn mynd i geisio cael chi i'r pwynt nid yn unig yn gallu gwneud rhywbeth fel pset 7 ond mewn gwirionedd yn deall beth sy'n mynd ymlaen o dan y cwfl, yn enwedig rhai o'r tyniadau yr ydym yn eu rhoi ar waith yn y ffeil functions.php i wneud eich bywyd ychydig yn haws, ond fel eich bod yn deall y pen draw fel bod pan fydd yr olwynion hyfforddiant yn dod oddi mewn ychydig wythnosau, gallwch dal i oroesi yn y byd go iawn a gwneud y pethau heb unrhyw fframwaith CS50 o dan chi. Mae hyn yn _SESSION $, ar gyfer y rhai ohonoch sy'n gyfarwydd neu sydd eisoes yn dal y fideo ar ddydd Gwener, beth mae SESIWN gadewch i ni wneud mewn cais ar y we PHP seiliedig? Mae hwn yn newidyn superglobal, sy'n golygu ei fod yn debyg o ran ysbryd i GET a SWYDD a rhai eraill, ond beth yw hyn yn beth defnyddiol ar gyfer? Beth yw SESIWN cael ei ddefnyddio? Yeah. [Myfyrwyr] Logio i mewn Mae'n ddrwg gennym? [Myfyrwyr] Logio i mewn Logio i mewn Yn wir. Yn pset 7, yn defnyddio hwn superglobal SESIWN i hwyluso logio i mewn A beth sy'n braf am hyn superglobal yw ei fod yn arae cysylltiadol. Mae amrywiaeth cysylltiadol, galw i gof, yn unig yw amrywiaeth ond mae eu mynegeion nid oes rhaid i fod yn rhifau fel 012. Gallant fod yn rhifau neu gallant fod hyd yn oed llinynnau. Ac felly os ydych chi wedi syrthio i mewn i pset 7 eto, efallai y byddwch yn cofio ein bod yn storio ID allweddol o'r enw mewnol y arae cysylltiadol y mae eu gwerth yn rhywbeth fel 123 - beth bynnag fo'r wedi mewngofnodi ar hyn o bryd yn ID defnyddiwr yn. Y cymhelliad ar gyfer hyn yw hyd yn oed ar ôl y defnyddiwr wedi ymweld â localhost neu fy ngwefan yn fwy cyffredinol, ac yna maen nhw wedi logio i mewn, hyd yn oed os nad ydynt yn cliciwch ar un o'r cyswllt neu ddychwelyd i fy ngwefan am 5 munud neu hyd yn oed am awr neu hyd yn oed y dydd ond maent yn gadael eu ffenestr porwr agored, Gall drwy'r superglobal yr wyf yn cofio eu bod wedi mewngofnodi Mewn geiriau eraill, mae'n caniatáu i mi storio ychydig yn hir dymor unrhyw beth a fynnaf am y defnyddiwr. A allwch chi feddwl am y peth mewn gwirionedd fel yr ymgnawdoliad o trol siopa. Mae lleoedd fel Amazon yn amlwg yn gadael i chi roi pethau mewn basged siopa, ond HTTP, y protocol sy'n yn gyrru y We, yn heb ddinasyddiaeth yn yr ystyr bod pan fyddwch yn ymweld â gwefan, ar gyfer y rhan fwyaf nad oes gennych rhywfaint o gysylltiad rhwydwaith cyson rhwng eich porwr a 'r gweinyddwr. Cyn gynted ag y byddwch wedi lawrlwytho'r HTML a JPEG a GIFs a hynny i gyd, y cysylltiad yn mynd i ffwrdd, ac os oes gen ti gopi o'r HTML a whatnot o'r gweinydd. Ond os yw'r gweinydd eisiau cofio rhywbeth amdanoch chi, y baich ar y gweinydd i mewn gwirionedd yn cofnodi'r wybodaeth honno. Ac felly i chi y rhaglennydd sydd â rheolaeth dros y gweinydd Gall rhoi unrhyw beth rydych am y rhan fwyaf o tu fewn y casgliad cysylltiadol superglobal a bydd yno y tro nesaf y defnyddiwr yn dod yn ôl, boed hynny munud neu hyd yn oed diwrnod yn ddiweddarach, oni bai eu bod yn cau eu ffenestri porwr, lle SESIWN pwynt diflannu. Felly, mae'n storio dros dro, mae'n nad ydynt yn gyson, ac mae i fod i fynd i ffwrdd cyn gynted ag y defnyddiwr yn cau eu porwr - nid yn unig y tab, yn aml y porwr cyfan, a thrwy hynny yn effeithiol logio y defnyddiwr allan. Felly, sut mae hyn yn beth gweithredu mewn gwirionedd? Gadewch i ni edrych yn sydyn ar enghraifft syml buom yn edrych ar ddydd Gwener. Ar gyfer y rhai anghyfarwydd, roedd hi mor syml â hyn. Mae hon yn dudalen ar y we y mae ei unig ddiben mewn bywyd yw i ddweud wrthyf sawl gwaith yr wyf wedi ymweld â'r dudalen hon. Dyma'r tro cyntaf yma ar ddydd Llun fy mod yn ymweld â hi, er mwyn iddo ddweud 0 gwaith. Ond os byddaf yn dechrau ail-lwytho y dudalen hon, mae'n dweud 1 amser, 2, 3, 4, 5, a bydd hyn yn y pen draw dim ond cadw ar gyfrif i fyny, i fyny, i fyny, i fyny, i fyny ar gyfer pob tro y byddaf yn cliciwch gwirionedd Reload arno. Felly, sut mae hyn yn gweithio? Gadewch i mi fynd y tu mewn o hyn ffeil o'r enw counter.php. Mae rhan uchaf ohono yn holl sylwadau las, ond y rhan ddiddorol yma. Ar llinell 13 rydym yn galw hyn session_start swyddogaeth, ac mae hynny'n llythrennol gyd angen i chi ei wneud os ydych am gael mynediad at y superglobal arbennig o'r enw $ _SESSION. Sy'n ei gwneud yn bosibl o gwbl, ac fe welwn yn y man sut mae hynny'n bosibl o gwbl. Yn llinell 16 rhybudd hyn rwy'n ei wneud. Os yw'r allwedd, a elwir yn wrth - mewn geiriau eraill, y gwerth mynegai - "cownter" y yn bodoli y tu mewn o hyn a elwir yn SESIWN amrywiaeth, yna beth ydw i'n ei wneud ag ef yn y llinell isod? Beth yw llinell 18 yn ei wneud? [Ymateb y myfyrwyr Anghlywadwy] Beth sy'n bod? [Myfyrwyr] Storio'r gwerth. Da. Mae'n storio'r gwerth sydd yn SESIWN ar hyn o bryd mewn newidyn newydd dros dro lleol, $ Cownter ym mhob llythrennau bach. Sylwch fod PHP eisoes yn cael ei ychydig yn ddiog yma. Hysbysiad nad oes gennym unrhyw sôn am int neu arnofio neu linyn neu unrhyw beth fel 'na oherwydd PHP yn cael ei deipio wan, lle nad oes rhaid i chi nodi'r math o newidyn, ac yn yr achos yma nid wyf wedi hyd yn oed yn datgan eto. Rwy'n datgan ei fod y tu mewn o'r rhain braces cyrliog ac yn wahanol i C, mae hyn yn mewn gwirionedd yn iawn. Waeth pa mor ddwfn nythu datganiad newidyn hwn ym maes PHP - tu mewn cyrliog Brace, y tu mewn o cyrliog Brace ac ati - bydd yn yn y hyn o bryd mewn amser yn bodoli ar gyfer gweddill y rhaglen, er gwell neu er gwaeth. Felly, ar unwaith yn dod yn fyd-eang cyn gynted ag y byddwch yn ei ddiffinio fel yr ydym ni'n ei wneud yma. Fel arall, os nad wyf yn gweld bod yna unrhyw beth yn y superglobal SESIWN, Rwy'n ôl pob golwg ymgychwyn y cownter amrywiol i 0, a thrwy hynny dim ond gan dybio nad yw'r defnyddiwr wedi bod yma o'r blaen. Ac yna mae hyn wrth gwrs yn incrementing y cownter sut? Rwy'n diweddaru'r gwerth y tu mewn o hyn arae cysylltiadol drwy ei gosod yn gyfartal i ba bynnag cownter ar hyn o bryd yw + 1. Os byddaf yn sgroliwch i lawr yma i'r HTML y dudalen, mae'n mewn gwirionedd yn eithaf syml. Y cyfan yr wyf wedi yng nghorff y dudalen hon yn, "Rydych wedi ymweld â'r safle amser fel-a-blaen." Ac mae hyn yn lluniad PHP. Os ydych yn ei wneud