[Powered by Google Translate] [Wythnos 8, Parhad] [David J. Malan] [Harvard University] [Mae hyn yn CS50.] [CS50.TV] Mae hyn yn CS50, felly dyma'r diwedd Wythnos 8 yma. Rydym, wrth gwrs, wedi cael tipyn o corwynt yn gynharach yr wythnos hon, felly ar hyn o bryd y mae mewn gwirionedd dim ond chi a fi yn y neuadd ddarlith, ond heddiw rydym yn parhau ein sgwrs am PHP ac am raglennu we yn fwy cyffredinol, ac rydym hefyd yn cyflwyno y syniad o gronfeydd data, yn enwedig un a elwir yn MySQL, sy'n eithaf poblogaidd y dyddiau hyn, i raddau helaeth oherwydd ei scalability, yn ogystal ag oherwydd ei fod yn ffynhonnell am ddim ac yn agored. Ond yn gyntaf, yn edrych ar ble rydym yn gadael i ffwrdd y tro diwethaf. Dwyn i gof ein bod yn edrych ar y nifer o enghreifftiau Frosh IMS, ac roedd hyn yn y ffurflen erchyll fy mod yn dod i fyny gyda rhai 15 mlynedd yn ôl + er mwyn cael myfyrwyr ar gofrestr y campws ar gyfer chwaraeon freshman rhyngfurol heb holi i orfod daith anymore ar draws yr iard i Wigglesworth llithro darn o bapur corfforol o dan ddrws rhai proctor yn. Yn hytrach, rydym yn symud popeth ar-lein, ond i wneud hynny mae angen i wneud y defnydd o dechnolegau ychydig, felly un, roedd angen HTML, hyperdestun markup iaith, sydd unwaith eto yn yr iaith hon markup yr ydych yn gwneud tudalennau gwe strwythurol. Gan ddefnyddio ychydig o CSS y dyddiau hyn, dalennau arddull rhaeadru, lle rydym yn defnyddio stylizations y dudalen we gan ddefnyddio cystrawen ychydig yn wahanol, tra oedd y HTML i gyd am y strwythur hynny. Mae angen i ni gyflwyno we iaith raglennu. Yn yr achos hwn, byddwn yn defnyddio PHP, a PHP yn mynd i ganiatáu i ni i gynnwys allbwn ddeinamig yn ogystal â gwneud pethau rhaglennol fel anfon negeseuon e-bost, fel yr oedd yr achos ar y nodyn i ni adael yr wythnos diwethaf. Dwyn i gof bod y cod ar gyfer hyn oedd mewn 2 ran. Un, cawsom froshims3.php, ac roedd hyn yn bennaf markup gyda ffurflen HTML tu mewn iddo, ychydig bach o CSS i fyny yma yn y briodweddau arddull fel y byddai y ffurflen ei hun yn canolbwyntio ar y dudalen, ond y tu hwnt i'r rydym wedi cael rhywfaint o fewnbwn ffurf cynrychioliadol, maes testun, a checkbox, rhywfaint o radio botymau, bwydlen dethol, a botwm cyflwyno. A thrwy y ffurflen hon, rydym yn cyflwyno i ffeil a alwyd golwg register3.php, sydd ei hun yn edrych yn rhywbeth bach fel hyn. Yn awr, y rhan fwyaf o'r cod yn register3.php, galw i gof, yn ymwneud â e-bost. Gwnaeth ychydig o ddilysu o'r ffurflen a gyflwynwyd i wneud yn siŵr bod y caeau yn cael eu darparu mewn gwirionedd a ddisgwylid. Yna byddem ni'n ei alw rhai swyddogaethau PHP gan ddefnyddio ychydig cystrawen newydd, hyd yn oed er 'i' fenthyg o C. Mae'r gweithredwr saeth yn ein galluogi i wneud defnydd o rywbeth a elwir yn gwrthrych-oriented rhaglennu. Ni fyddwn yn mynd i fod yn fanwl yma, ond yn gwybod ar hyn o bryd mae'n ffordd o gael swyddogaethau sy'n gysylltiedig â gwrthrychau, sef math arbennig o strwythur, fel y gwelsom yn C. Ond am nawr, dim ond yn cymryd ar ffydd mai hwn yw'r gystrawen gywir i'w defnyddio wrth ddefnyddio llyfrgell fel hyn llyfrgell PHPMailer. Ac yna erbyn diwedd y ffeil rydym wedi creu deinamig e-bost a gafodd eu hanfon at fy nghyfrif jharvard@cs50.net o fy nghyfrif jharvard@cs50.net, ac rydym yn gwybod y defnyddiwr yn unol â hynny eu bod wedi cael eu cofrestru ar gyfer y gamp hon. Dyna 'n bert lawer yr hyn y mae'r safle IMS Frosh wnaeth yr holl flynyddoedd hynny yn ôl pan fyddaf yn ei rhoi ar waith, a roddwyd, mewn iaith wahanol, ond mae'n dangos i chi efallai y pŵer sydd gennych yn awr y gallwch fynegi eich hun nid yn unig yn programmatically ar lefel isel mewn iaith fel C ond ar lefel llawer uwch gyda'r ceisiadau hyn y byd go iawn fel e-bost i mewn gwirionedd yn datrys rhai problemau byd go iawn. Yn awr, wrth gwrs, hyd yn oed er fy mod yn defnyddio'r sgript i gynhyrchu rhai negeseuon e-bost ddeinamig o jharvard@cs50.net, sydd yn wir yn cyfrif fy mod yn cael mynediad at, peidiwch â bod yn eithaf gofalus i anfon bost yn unig o gyfrifon sydd mewn gwirionedd yn eich pen eich hun, rhag pethau yn mynd â chi mewn ychydig o ddŵr poeth mewn bywyd. Gyda dweud hynny, gadewch i ni bellach yn trosglwyddo i ddatrys problem wahanol yn gyfan gwbl, bod o wladwriaethau cadw. Nawr, beth mae hyn yn ei olygu mewn gwirionedd? HTTP, y protocol hwn trosglwyddo hyperdestun, mewn gwirionedd yn brotocol heb ddinasyddiaeth, a beth mae hyn yn ei olygu yw bod pan fyddwch yn tynnu i fyny rhywbeth fel Google.com ac yna daro chofnoda fel arfer eich porwr wedi rhyw fath o eicon nyddu wedyn arwain at rai tudalen ar y we yn cael eu llwytho i lawr, ac yna y eicon bach yn stopio nyddu, a bod yn wir yn awgrymu bod HTTP wedi cwblhau rhyw fath o gysylltiad â'r gweinydd a dyna ni. HTTP yn heb ddinasyddiaeth yn yr ystyr nad yw'n cynnal cysylltiad parhaus i 'r gweinyddwr yn yr un ffordd Skype yn neu Gchat ei wneud oherwydd gyda HTTP y rhagdybiaeth yw bod unwaith y byddwch wedi lwytho tudalen ar y we dyna ni. Nawr, mewn gwirionedd y dyddiau hyn ar safleoedd fel Facebook a Google Maps a Twitter ac yn y blaen mae ddeinamig llawer mwy lle hyd yn oed ar ôl y eicon stopio troelli gallwch mewn gwirionedd gael diweddariadau mwy o gan y gweinydd, tweets mwy, mwy o statws diweddariadau ar Facebook ac yn y blaen. Ond hyd yn oed fod yn defnyddio techneg y byddwn yn siarad am mewn wythnos neu ddwy a elwir yn Ajax defnyddio iaith o'r enw JavaScript, ond ar ddiwedd y dydd, HTTP yn dal i fod heb ddinasyddiaeth. Ac eto os ydych chi am rywsut gofio pethau am ddefnyddiwr hyd yn oed ar ôl iddyn nhw datgysylltu oddi wrth eich gweinydd PHP yn fforddio i chi ffordd o wneud hyn oherwydd, fel y gwelsom tro diwethaf, PHP nifer o superglobals, a superglobal yw, unwaith eto, newidyn byd-eang arbennig sydd wedi rhoi i chi gan y gweinydd gwe a thrwy PHP ei hun. Nid oes rhaid i chi wneud unrhyw beth i roi gwerthoedd ynddo, ac ymhlith y superglobals rydym wedi gweld hyd yn hyn yn cael eu cael ac yn ôl, a dyna lle mae caeau ffurflen yn cael eu rhoi yn awtomatig ar eich cyfer chi, yn ogystal ag ychydig o rai eraill nad ydym wedi gweld eto. Y tu mewn o $ _server rhai newidynnau arbennig yn ymwneud â'r gweinydd ei hun. Beth yw'r cyfeiriad IP, beth oedd protocol, HTTP neu HTTPS ydych yn defnyddio, pa ddull cais wnaethoch chi ei ddefnyddio ac yn y blaen, felly mae rhai diddorol, manylion llawn sudd am y gweinydd, ac yn wir, y defnyddiwr i mewn 'na hefyd. Mae $ _cookie, a dyma lle y pethau hyn a elwir yn cwcis yn cael eu storio. Ni fyddwn yn treulio amser ar cwcis eu hunain heddiw, ond yn gwybod ar hyn o bryd bod cwci yn unig yw darn bach o wybodaeth y gall gweinydd gwe plannu ar borwr gwe ac yn troi ei RAM neu yrru ei cyfrifiadur caled i storio gwybodaeth am ddefnyddiwr, er enghraifft, eu henw defnyddiwr fel nad oes rhaid iddynt deipio bob tro y maent yn logio i mewn neu ryw rhif unigryw neu dynodwr ar gyfer y defnyddiwr fel nad oes rhaid i chi plagio iddynt yr un math o gwestiynau am dewisiadau yn y dyfodol, ond mae'r rhan fwyaf o ddiddordeb ar hyn o bryd yn $ _session. Mae hyn yn superglobal, sydd, fel y lleill, yn cael ei rhoi i chi yn awtomatig gan PHP pan fyddwch yn ysgrifennu PHP seiliedig Gwefannau Gall storio unrhyw beth rydych eisiau, llinynnau, cyfanrifau, bwyntiau fel y bo'r angen, gwerthoedd, araeau, gwrthrychau, mewn gwirionedd unrhyw beth yr ydych ei eisiau, ac mae'n caniatáu i chi storio yn y fath fodd hyd yn oed os yw'r defnyddiwr yn ymweld â chi yn awr ac yna yn dod yn ôl munud o hyn neu 5 munud o hyn oherwydd maent yn cymryd eu hamser cyn clicio rhyw gysylltiad arall Bydd PHP yn sicrhau bod beth bynnag yr ydych roi yn y superglobal sesiwn Bydd funudau munud neu 5 yn ôl yn dal i fod yno pan fydd y ffurflenni defnyddiwr. Ac o dan y cwfl y superglobal yn cael ei weithredu drwy gyfrwng pethau hynny a elwir yn 'cookies', ond ar hyn o bryd, dim ond yn tynnu lle mae'n fath sy'n cyfateb rhaglennol o trol siopa. Beth bynnag y byddwch, y rhaglennydd, eu rhoi yn y Bydd amrywiaeth superglobal cysylltiadol fod yno ryw nifer o funudau yn ddiweddarach nes i chi ddileu neu nes bod y defnyddiwr ymddiswyddo porwr ef neu hi yn gyfan gwbl. Gadewch i ni edrych ar enghraifft o'r ffordd y mae'r peth yn cael ei ddefnyddio mewn gwirionedd. Yn counter.php ymhlith darnau heddiw o god gennym y llinell ganlynol. Ar ddechrau'r ffeil hon mae gennym griw o sylwadau glas, sy'n cael eu anniddorol ar hyn o bryd. Ond mewn llinell 13 mae gennym linell newydd, session_start, ac sydd mewn gwirionedd yn gwneud yn union beth mae'n ei ddweud. Mae'n dechrau sesiynau. Mae'n eich galluogi i ddefnyddio'r mawr superglobal $ _session, ac mae mor syml â hynny. Nawr, os ydym yn mynd i edrych ar llinell 16, gadewch i ni geisio chyfrif i maes beth y dudalen gwefan hon yn mynd i wneud. Os (ISSET ($ _SESSION ["gwrth"]) ac yna mynd yn ei flaen a'i storio yn y newidyn cownter, cownter llythrennau bach, $ _SESSION ["Gwrth"]. Mae hyn yn ymddangos i fod yn datgan newidyn lleol o'r enw cownter y tu mewn y mae'n ei rhoi copi o beth bynnag sydd tu mewn i'r superglobal a elwir yn sesiwn yn y lleoliad "cownter." Else, mae'n debyg, mae hyn yn amrywiol cownter bach lleol, yn cael ei ymgychwyn i 0. Ond yna ychydig o linellau yn ddiweddarach mewn 26 rhybudd bod copi y sesiwn o cownter, ei allweddol, mae gan gymer gwerth newydd sy'n ei werth cyfredol, yn ogystal 1. Yn fyr, y ffeil hon yn ymddangos i fod diweddaru cownter sy'n cael ei storio tu mewn i'r superglobal sesiwn drwy incrementing erbyn 1, ond yn gyntaf yn cadw copi o werth blaenorol drwy ei storio mewn newidyn lleol o'r enw $ cownter, ac yna i lawr yma gadewch i ni weld beth sydd ar ôl. Mae'n troi allan ei 'n bert lawer yn union HTML. Ar waelod y dudalen hon rydym yn gweld yn unol 37 a wyf wedi ymweld â'r safle nifer o weithiau cownter, felly mae nodweddion cwpl diddorol yma. Un, mae hyn yn amlwg yn amrywio, ond nid yw'n ddigon i ddim ond rhoi $ Cownter yn y corff eich HTML oherwydd, wrth gwrs os mai dim ond yno ymhlith eich HTML PHP yn mynd i gymryd yn ganiataol bod dim ond HTML. Byddwch yn llythrennol am $ cownter i gael ei argraffu ar y sgrin. Ond yn hytrach na drwy alw i mewn i PHP modd gyda'r darn hwn o gystrawen gallwn ddynamig mewnosod gwerth yma debyg iawn o ran ysbryd i'r hyn a wnaethom y tro diwethaf gyda gosod gwerthoedd i mewn i llinynnau. Mewn gwirionedd, mae hyn yn unig yw nodiant llaw-fer am ddweud rhywbeth fel hyn yn llythrennol, print ($ cownter) neu hyd yn oed rhywbeth fel printf (% s, cownter), neu hyd yn oed, oherwydd efallai y byddwch wedi gweld ar-lein neu mewn gwerslyfrau, mae swyddogaeth yn PHP a elwir yn adlais sy'n gwneud yr un peth, a phob un o'r rheini'n ffyrdd yn unig bellach yn hirwyntog o ddweud