1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Wythnos 8, Parhad] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Mae hyn yn CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Mae hyn yn CS50, felly dyma'r diwedd Wythnos 8 yma. 5 00:00:13,000 --> 00:00:16,000 Rydym, wrth gwrs, wedi cael tipyn o corwynt yn gynharach yr wythnos hon, 6 00:00:16,000 --> 00:00:19,000 felly ar hyn o bryd y mae mewn gwirionedd dim ond chi a fi yn y neuadd ddarlith, 7 00:00:19,000 --> 00:00:22,000 ond heddiw rydym yn parhau ein sgwrs am PHP 8 00:00:22,000 --> 00:00:25,000 ac am raglennu we yn fwy cyffredinol, ac rydym hefyd yn cyflwyno y syniad 9 00:00:25,000 --> 00:00:29,000 o gronfeydd data, yn enwedig un a elwir yn MySQL, sy'n eithaf poblogaidd y dyddiau hyn, 10 00:00:29,000 --> 00:00:34,000 i raddau helaeth oherwydd ei scalability, yn ogystal ag oherwydd ei fod yn ffynhonnell am ddim ac yn agored. 11 00:00:34,000 --> 00:00:37,000 >> Ond yn gyntaf, yn edrych ar ble rydym yn gadael i ffwrdd y tro diwethaf. 12 00:00:37,000 --> 00:00:40,000 Dwyn i gof ein bod yn edrych ar y nifer o enghreifftiau Frosh IMS, 13 00:00:40,000 --> 00:00:44,000 ac roedd hyn yn y ffurflen erchyll fy mod yn dod i fyny gyda rhai 15 mlynedd yn ôl + 14 00:00:44,000 --> 00:00:49,000 er mwyn cael myfyrwyr ar gofrestr y campws ar gyfer chwaraeon freshman rhyngfurol 15 00:00:49,000 --> 00:00:52,000 heb holi i orfod daith anymore ar draws yr iard i Wigglesworth 16 00:00:52,000 --> 00:00:56,000 llithro darn o bapur corfforol o dan ddrws rhai proctor yn. 17 00:00:56,000 --> 00:00:59,000 Yn hytrach, rydym yn symud popeth ar-lein, ond i wneud hynny mae angen i wneud y defnydd 18 00:00:59,000 --> 00:01:03,000 o dechnolegau ychydig, felly un, roedd angen HTML, hyperdestun markup iaith, 19 00:01:03,000 --> 00:01:07,000 sydd unwaith eto yn yr iaith hon markup yr ydych yn gwneud tudalennau gwe strwythurol. 20 00:01:07,000 --> 00:01:10,000 >> Gan ddefnyddio ychydig o CSS y dyddiau hyn, dalennau arddull rhaeadru, 21 00:01:10,000 --> 00:01:16,000 lle rydym yn defnyddio stylizations y dudalen we gan ddefnyddio cystrawen ychydig yn wahanol, 22 00:01:16,000 --> 00:01:19,000 tra oedd y HTML i gyd am y strwythur hynny. 23 00:01:19,000 --> 00:01:21,000 Mae angen i ni gyflwyno we iaith raglennu. 24 00:01:21,000 --> 00:01:25,000 Yn yr achos hwn, byddwn yn defnyddio PHP, a PHP yn mynd i ganiatáu i ni 25 00:01:25,000 --> 00:01:28,000 i gynnwys allbwn ddeinamig yn ogystal â gwneud pethau rhaglennol fel 26 00:01:28,000 --> 00:01:33,000 anfon negeseuon e-bost, fel yr oedd yr achos ar y nodyn i ni adael yr wythnos diwethaf. 27 00:01:33,000 --> 00:01:35,000 >> Dwyn i gof bod y cod ar gyfer hyn oedd mewn 2 ran. 28 00:01:35,000 --> 00:01:38,000 Un, cawsom froshims3.php, 29 00:01:38,000 --> 00:01:42,000 ac roedd hyn yn bennaf markup gyda ffurflen HTML tu mewn iddo, 30 00:01:42,000 --> 00:01:45,000 ychydig bach o CSS i fyny yma yn y briodweddau arddull 31 00:01:45,000 --> 00:01:48,000 fel y byddai y ffurflen ei hun yn canolbwyntio ar y dudalen, ond y tu hwnt i'r 32 00:01:48,000 --> 00:01:51,000 rydym wedi cael rhywfaint o fewnbwn ffurf cynrychioliadol, maes testun, a checkbox, 33 00:01:51,000 --> 00:01:55,000 rhywfaint o radio botymau, bwydlen dethol, a botwm cyflwyno. 34 00:01:55,000 --> 00:02:01,000 A thrwy y ffurflen hon, rydym yn cyflwyno i ffeil a alwyd golwg register3.php, 35 00:02:01,000 --> 00:02:04,000 sydd ei hun yn edrych yn rhywbeth bach fel hyn. 36 00:02:04,000 --> 00:02:08,000 Yn awr, y rhan fwyaf o'r cod yn register3.php, galw i gof, yn ymwneud â e-bost. 37 00:02:08,000 --> 00:02:11,000 Gwnaeth ychydig o ddilysu o'r ffurflen a gyflwynwyd i wneud yn siŵr 38 00:02:11,000 --> 00:02:14,000 bod y caeau yn cael eu darparu mewn gwirionedd a ddisgwylid. 39 00:02:14,000 --> 00:02:18,000 Yna byddem ni'n ei alw rhai swyddogaethau PHP gan ddefnyddio ychydig cystrawen newydd, 40 00:02:18,000 --> 00:02:20,000 hyd yn oed er 'i' fenthyg o C. 41 00:02:20,000 --> 00:02:24,000 >> Mae'r gweithredwr saeth yn ein galluogi i wneud defnydd o rywbeth a elwir yn gwrthrych-oriented rhaglennu. 42 00:02:24,000 --> 00:02:27,000 Ni fyddwn yn mynd i fod yn fanwl yma, ond yn gwybod ar hyn o bryd 43 00:02:27,000 --> 00:02:31,000 mae'n ffordd o gael swyddogaethau sy'n gysylltiedig â gwrthrychau, 44 00:02:31,000 --> 00:02:34,000 sef math arbennig o strwythur, fel y gwelsom yn C. 45 00:02:34,000 --> 00:02:37,000 Ond am nawr, dim ond yn cymryd ar ffydd mai hwn yw'r gystrawen gywir i'w defnyddio 46 00:02:37,000 --> 00:02:41,000 wrth ddefnyddio llyfrgell fel hyn llyfrgell PHPMailer. 47 00:02:41,000 --> 00:02:44,000 Ac yna erbyn diwedd y ffeil rydym wedi creu deinamig e-bost 48 00:02:44,000 --> 00:02:47,000 a gafodd eu hanfon at fy nghyfrif jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 o fy nghyfrif jharvard@cs50.net, 50 00:02:50,000 --> 00:02:54,000 ac rydym yn gwybod y defnyddiwr yn unol â hynny eu bod wedi cael eu cofrestru ar gyfer y gamp hon. 51 00:02:54,000 --> 00:02:57,000 Dyna 'n bert lawer yr hyn y mae'r safle IMS Frosh wnaeth yr holl flynyddoedd hynny yn ôl 52 00:02:57,000 --> 00:03:00,000 pan fyddaf yn ei rhoi ar waith, a roddwyd, mewn iaith wahanol, 53 00:03:00,000 --> 00:03:02,000 ond mae'n dangos i chi efallai y pŵer sydd gennych 54 00:03:02,000 --> 00:03:05,000 yn awr y gallwch fynegi eich hun nid yn unig yn programmatically 55 00:03:05,000 --> 00:03:08,000 ar lefel isel mewn iaith fel C ond ar lefel llawer uwch 56 00:03:08,000 --> 00:03:11,000 gyda'r ceisiadau hyn y byd go iawn fel e-bost i mewn gwirionedd yn datrys 57 00:03:11,000 --> 00:03:13,000 rhai problemau byd go iawn. 58 00:03:13,000 --> 00:03:16,000 >> Yn awr, wrth gwrs, hyd yn oed er fy mod yn defnyddio'r sgript i gynhyrchu rhai 59 00:03:16,000 --> 00:03:20,000 negeseuon e-bost ddeinamig o jharvard@cs50.net, sydd yn wir yn cyfrif 60 00:03:20,000 --> 00:03:23,000 fy mod yn cael mynediad at, peidiwch â bod yn eithaf gofalus i anfon 61 00:03:23,000 --> 00:03:26,000 bost yn unig o gyfrifon sydd mewn gwirionedd yn eich pen eich hun, 62 00:03:26,000 --> 00:03:30,000 rhag pethau yn mynd â chi mewn ychydig o ddŵr poeth mewn bywyd. 63 00:03:30,000 --> 00:03:35,000 Gyda dweud hynny, gadewch i ni bellach yn trosglwyddo i ddatrys problem wahanol yn gyfan gwbl, 64 00:03:35,000 --> 00:03:37,000 bod o wladwriaethau cadw. 65 00:03:37,000 --> 00:03:39,000 Nawr, beth mae hyn yn ei olygu mewn gwirionedd? 66 00:03:39,000 --> 00:03:42,000 HTTP, y protocol hwn trosglwyddo hyperdestun, 67 00:03:42,000 --> 00:03:45,000 mewn gwirionedd yn brotocol heb ddinasyddiaeth, a beth mae hyn yn ei olygu yw bod 68 00:03:45,000 --> 00:03:48,000 pan fyddwch yn tynnu i fyny rhywbeth fel Google.com ac yna daro chofnoda 69 00:03:48,000 --> 00:03:51,000 fel arfer eich porwr wedi rhyw fath o eicon nyddu wedyn 70 00:03:51,000 --> 00:03:54,000 arwain at rai tudalen ar y we yn cael eu llwytho i lawr, 71 00:03:54,000 --> 00:03:57,000 ac yna y eicon bach yn stopio nyddu, a bod yn wir yn awgrymu 72 00:03:57,000 --> 00:04:02,000 bod HTTP wedi cwblhau rhyw fath o gysylltiad â'r gweinydd a dyna ni. 73 00:04:02,000 --> 00:04:05,000 HTTP yn heb ddinasyddiaeth yn yr ystyr nad yw'n cynnal 74 00:04:05,000 --> 00:04:08,000 cysylltiad parhaus i 'r gweinyddwr yn yr un ffordd Skype yn 75 00:04:08,000 --> 00:04:11,000 neu Gchat ei wneud oherwydd gyda HTTP 76 00:04:11,000 --> 00:04:15,000 y rhagdybiaeth yw bod unwaith y byddwch wedi lwytho tudalen ar y we dyna ni. 77 00:04:15,000 --> 00:04:18,000 >> Nawr, mewn gwirionedd y dyddiau hyn ar safleoedd fel Facebook a Google Maps 78 00:04:18,000 --> 00:04:21,000 a Twitter ac yn y blaen mae ddeinamig llawer mwy lle 79 00:04:21,000 --> 00:04:25,000 hyd yn oed ar ôl y eicon stopio troelli gallwch mewn gwirionedd gael diweddariadau mwy o 80 00:04:25,000 --> 00:04:29,000 gan y gweinydd, tweets mwy, mwy o statws diweddariadau ar Facebook ac yn y blaen. 81 00:04:29,000 --> 00:04:33,000 Ond hyd yn oed fod yn defnyddio techneg y byddwn yn siarad am mewn wythnos neu ddwy 82 00:04:33,000 --> 00:04:36,000 a elwir yn Ajax defnyddio iaith o'r enw JavaScript, 83 00:04:36,000 --> 00:04:38,000 ond ar ddiwedd y dydd, HTTP yn dal i fod heb ddinasyddiaeth. 84 00:04:38,000 --> 00:04:42,000 Ac eto os ydych chi am rywsut gofio pethau am ddefnyddiwr 85 00:04:42,000 --> 00:04:44,000 hyd yn oed ar ôl iddyn nhw datgysylltu oddi wrth eich gweinydd 86 00:04:44,000 --> 00:04:47,000 PHP yn fforddio i chi ffordd o wneud hyn 87 00:04:47,000 --> 00:04:52,000 oherwydd, fel y gwelsom tro diwethaf, PHP nifer o superglobals, 88 00:04:52,000 --> 00:04:55,000 a superglobal yw, unwaith eto, newidyn byd-eang arbennig 89 00:04:55,000 --> 00:04:59,000 sydd wedi rhoi i chi gan y gweinydd gwe a thrwy PHP ei hun. 90 00:04:59,000 --> 00:05:02,000 >> Nid oes rhaid i chi wneud unrhyw beth i roi gwerthoedd ynddo, 91 00:05:02,000 --> 00:05:05,000 ac ymhlith y superglobals rydym wedi gweld hyd yn hyn yn cael eu cael ac yn ôl, 92 00:05:05,000 --> 00:05:08,000 a dyna lle mae caeau ffurflen yn cael eu rhoi yn awtomatig ar eich cyfer chi, 93 00:05:08,000 --> 00:05:11,000 yn ogystal ag ychydig o rai eraill nad ydym wedi gweld eto. 94 00:05:11,000 --> 00:05:17,000 Y tu mewn o $ _server rhai newidynnau arbennig yn ymwneud â'r gweinydd ei hun. 95 00:05:17,000 --> 00:05:22,000 Beth yw'r cyfeiriad IP, beth oedd protocol, HTTP neu HTTPS ydych yn defnyddio, 96 00:05:22,000 --> 00:05:25,000 pa ddull cais wnaethoch chi ei ddefnyddio ac yn y blaen, felly mae rhai diddorol, 97 00:05:25,000 --> 00:05:29,000 manylion llawn sudd am y gweinydd, ac yn wir, y defnyddiwr i mewn 'na hefyd. 98 00:05:29,000 --> 00:05:33,000 Mae $ _cookie, a dyma lle y pethau hyn a elwir yn cwcis yn cael eu storio. 99 00:05:33,000 --> 00:05:36,000 Ni fyddwn yn treulio amser ar cwcis eu hunain heddiw, 100 00:05:36,000 --> 00:05:40,000 ond yn gwybod ar hyn o bryd bod cwci yn unig yw darn bach o wybodaeth 101 00:05:40,000 --> 00:05:43,000 y gall gweinydd gwe plannu ar borwr gwe 102 00:05:43,000 --> 00:05:46,000 ac yn troi ei RAM neu yrru ei cyfrifiadur caled 103 00:05:46,000 --> 00:05:49,000 i storio gwybodaeth am ddefnyddiwr, er enghraifft, eu henw defnyddiwr 104 00:05:49,000 --> 00:05:52,000 fel nad oes rhaid iddynt deipio bob tro y maent yn logio i mewn neu ryw 105 00:05:52,000 --> 00:05:55,000 rhif unigryw neu dynodwr ar gyfer y defnyddiwr 106 00:05:55,000 --> 00:05:58,000 fel nad oes rhaid i chi plagio iddynt yr un math o gwestiynau am 107 00:05:58,000 --> 00:06:00,000 dewisiadau yn y dyfodol, ond mae'r rhan fwyaf o ddiddordeb 108 00:06:00,000 --> 00:06:02,000 ar hyn o bryd yn $ _session. 109 00:06:02,000 --> 00:06:07,000 >> Mae hyn yn superglobal, sydd, fel y lleill, yn cael ei rhoi i chi yn awtomatig gan PHP 110 00:06:07,000 --> 00:06:10,000 pan fyddwch yn ysgrifennu PHP seiliedig Gwefannau 111 00:06:10,000 --> 00:06:13,000 Gall storio unrhyw beth rydych eisiau, llinynnau, cyfanrifau, 112 00:06:13,000 --> 00:06:16,000 bwyntiau fel y bo'r angen, gwerthoedd, araeau, gwrthrychau, 113 00:06:16,000 --> 00:06:20,000 mewn gwirionedd unrhyw beth yr ydych ei eisiau, ac mae'n caniatáu i chi storio yn y fath fodd 114 00:06:20,000 --> 00:06:23,000 hyd yn oed os yw'r defnyddiwr yn ymweld â chi yn awr ac yna 115 00:06:23,000 --> 00:06:26,000 yn dod yn ôl munud o hyn neu 5 munud o hyn oherwydd 116 00:06:26,000 --> 00:06:28,000 maent yn cymryd eu hamser cyn clicio rhyw gysylltiad arall 117 00:06:28,000 --> 00:06:32,000 Bydd PHP yn sicrhau bod beth bynnag yr ydych roi yn y superglobal sesiwn 118 00:06:32,000 --> 00:06:37,000 Bydd funudau munud neu 5 yn ôl yn dal i fod yno pan fydd y ffurflenni defnyddiwr. 119 00:06:37,000 --> 00:06:40,000 Ac o dan y cwfl y superglobal yn cael ei weithredu drwy gyfrwng 120 00:06:40,000 --> 00:06:44,000 pethau hynny a elwir yn 'cookies', ond ar hyn o bryd, dim ond yn tynnu 121 00:06:44,000 --> 00:06:47,000 lle mae'n fath sy'n cyfateb rhaglennol o trol siopa. 122 00:06:47,000 --> 00:06:50,000 Beth bynnag y byddwch, y rhaglennydd, eu rhoi yn y 123 00:06:50,000 --> 00:06:53,000 Bydd amrywiaeth superglobal cysylltiadol fod yno ryw nifer o funudau yn ddiweddarach 124 00:06:53,000 --> 00:06:59,000 nes i chi ddileu neu nes bod y defnyddiwr ymddiswyddo porwr ef neu hi yn gyfan gwbl. 125 00:06:59,000 --> 00:07:02,000 >> Gadewch i ni edrych ar enghraifft o'r ffordd y mae'r peth yn cael ei ddefnyddio mewn gwirionedd. 126 00:07:02,000 --> 00:07:07,000 Yn counter.php ymhlith darnau heddiw o god 127 00:07:07,000 --> 00:07:09,000 gennym y llinell ganlynol. 128 00:07:09,000 --> 00:07:13,000 Ar ddechrau'r ffeil hon mae gennym griw o sylwadau glas, sy'n cael eu anniddorol ar hyn o bryd. 129 00:07:13,000 --> 00:07:15,000 Ond mewn llinell 13 mae gennym linell newydd, 130 00:07:15,000 --> 00:07:18,000 session_start, ac sydd mewn gwirionedd yn gwneud yn union beth mae'n ei ddweud. 131 00:07:18,000 --> 00:07:20,000 Mae'n dechrau sesiynau. 132 00:07:20,000 --> 00:07:25,000 Mae'n eich galluogi i ddefnyddio'r mawr superglobal $ _session, ac mae mor syml â hynny. 133 00:07:25,000 --> 00:07:30,000 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. 134 00:07:30,000 --> 00:07:35,000 Os (ISSET ($ _SESSION ["gwrth"]) ac yna mynd yn ei flaen 135 00:07:35,000 --> 00:07:39,000 a'i storio yn y newidyn cownter, cownter llythrennau bach, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Gwrth"]. 137 00:07:42,000 --> 00:07:45,000 Mae hyn yn ymddangos i fod yn datgan newidyn lleol o'r enw cownter 138 00:07:45,000 --> 00:07:48,000 y tu mewn y mae'n ei rhoi copi o beth bynnag sydd tu mewn i'r superglobal 139 00:07:48,000 --> 00:07:52,000 a elwir yn sesiwn yn y lleoliad "cownter." 140 00:07:52,000 --> 00:07:56,000 Else, mae'n debyg, mae hyn yn amrywiol cownter bach lleol, yn cael ei ymgychwyn i 0. 141 00:07:56,000 --> 00:08:01,000 >> Ond yna ychydig o linellau yn ddiweddarach mewn 26 rhybudd bod copi y sesiwn o cownter, 142 00:08:01,000 --> 00:08:06,000 ei allweddol, mae gan gymer gwerth newydd sy'n ei werth cyfredol, yn ogystal 1. 143 00:08:06,000 --> 00:08:09,000 Yn fyr, y ffeil hon yn ymddangos i fod diweddaru 144 00:08:09,000 --> 00:08:13,000 cownter sy'n cael ei storio tu mewn i'r superglobal sesiwn 145 00:08:13,000 --> 00:08:16,000 drwy incrementing erbyn 1, ond yn gyntaf yn cadw copi o werth blaenorol 146 00:08:16,000 --> 00:08:20,000 drwy ei storio mewn newidyn lleol o'r enw $ cownter, 147 00:08:20,000 --> 00:08:22,000 ac yna i lawr yma gadewch i ni weld beth sydd ar ôl. 148 00:08:22,000 --> 00:08:24,000 Mae'n troi allan ei 'n bert lawer yn union HTML. 149 00:08:24,000 --> 00:08:29,000 Ar waelod y dudalen hon rydym yn gweld yn unol 37 a wyf wedi ymweld â'r safle 150 00:08:29,000 --> 00:08:33,000 nifer o weithiau cownter, felly mae nodweddion cwpl diddorol yma. 151 00:08:33,000 --> 00:08:36,000 Un, mae hyn yn amlwg yn amrywio, ond nid yw'n ddigon i ddim ond rhoi 152 00:08:36,000 --> 00:08:39,000 $ Cownter yn y corff eich HTML oherwydd, wrth gwrs 153 00:08:39,000 --> 00:08:43,000 os mai dim ond yno ymhlith eich HTML PHP yn mynd i gymryd yn ganiataol bod dim ond HTML. 154 00:08:43,000 --> 00:08:48,000 Byddwch yn llythrennol am $ cownter i gael ei argraffu ar y sgrin. 155 00:08:48,000 --> 00:08:51,000 >> Ond yn hytrach na drwy alw i mewn i PHP modd 156 00:08:51,000 --> 00:08:55,000 gyda'r darn hwn o gystrawen gallwn ddynamig mewnosod gwerth yma 157 00:08:55,000 --> 00:08:58,000 debyg iawn o ran ysbryd i'r hyn a wnaethom y tro diwethaf gyda 158 00:08:58,000 --> 00:09:00,000 gosod gwerthoedd i mewn i llinynnau. 159 00:09:00,000 --> 00:09:04,000 Mewn gwirionedd, mae hyn yn unig yw nodiant llaw-fer am ddweud rhywbeth fel hyn yn llythrennol, 160 00:09:04,000 --> 00:09:12,000 print ($ cownter) neu hyd yn oed rhywbeth fel printf (% s, cownter), 161 00:09:12,000 --> 00:09:14,000 neu hyd yn oed, oherwydd efallai y byddwch wedi gweld ar-lein neu mewn gwerslyfrau, 162 00:09:14,000 --> 00:09:17,000 mae swyddogaeth yn PHP a elwir yn adlais 163 00:09:17,000 --> 00:09:20,000 sy'n gwneud yr un peth, a phob un o'r rheini'n ffyrdd yn unig bellach yn hirwyntog 164 00:09:20,000 --> 00:09:25,000 o ddweud 00:09:28,000 Yn yr achos hwn un nad oes angen i chi roi 166 00:09:28,000 --> 00:09:30,000 y PHP gair ar ôl y marc cwestiwn. 167 00:09:30,000 --> 00:09:34,000 Mae hyn yn nodiant llaw-fer ar gyfer, unwaith eto, yr hyn rydym yn unig yn gweld hyn o bryd yn ôl 168 00:09:34,000 --> 00:09:37,000 sy'n cael ei adleisio rhywfaint o werth. 169 00:09:37,000 --> 00:09:39,000 >> Gadewch i ni weld beth oedd y canlyniad diwedd y gwirionedd. 170 00:09:39,000 --> 00:09:43,000 Gadewch i mi fynd dros i'n counter.php ffeil, 171 00:09:43,000 --> 00:09:47,000 a byddwn yn gweld bod David dim ond gwneud camgymeriad trwy chwarae gyda'r cod yno. 172 00:09:47,000 --> 00:09:50,000 Gadewch i ni fynd ateb beth bynnag y gwyneb i fyny, 173 00:09:50,000 --> 00:09:54,000 ac y gwall yn ymddangos i fod yno, wedi mynd, ar-lein 37. 174 00:09:54,000 --> 00:09:59,000 Yn ôl i ben y dudalen hon rwyf wedi ymweld â'r safle 0 gwaith. 175 00:09:59,000 --> 00:10:02,000 Wel, gadewch i ni fynd yn ei flaen yn awr, ac ar ben y porwr, cliciwch ar y 176 00:10:02,000 --> 00:10:05,000 ail-lwytho eicon, a chliciwch mi ail-lwytho, 177 00:10:05,000 --> 00:10:12,000 ac yn awr yr wyf wedi ymweld 1 safle amser, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Ac yn wir, os ydym yn edrych ar y ffynhonnell y dudalen hon mae'r cod ffynhonnell wirioneddol yn newid, 179 00:10:16,000 --> 00:10:19,000 ac yn sylwi ar absenoldeb llwyr unrhyw PHP, ac mae hynny oherwydd 180 00:10:19,000 --> 00:10:23,000 PHP cod yn cael ei werthuso neu ddehongli ochr y gweinydd, 181 00:10:23,000 --> 00:10:27,000 ac felly mae hynny'n golygu bod allbwn y sgript PHP sydd ei anfon yn y pen draw at y porwr, 182 00:10:27,000 --> 00:10:31,000 sydd yn yr achos hwn rhywfaint o HTML amrwd a rhai destun amrwd. 183 00:10:31,000 --> 00:10:33,000 Beth sy'n mynd ymlaen yma? 184 00:10:33,000 --> 00:10:37,000 >> Wel, gyda llinellau cymharol ychydig o god yr wyf yn gallu storio 185 00:10:37,000 --> 00:10:40,000 gyson dros gyfnod o sawl eiliad, neu os ydym yn aros yn ddigon hir, 186 00:10:40,000 --> 00:10:44,000 munud, hyd yn oed awr, rhywfaint o werth mewn ffordd sy'n gwneud HTTP 187 00:10:44,000 --> 00:10:47,000 ymddangos fel pe stateful rydym wedi cadw 188 00:10:47,000 --> 00:10:51,000 cyswllt hwn at 'r gweinyddwr, ac' i 'jyst cofio hyn yr wyf yn dweud y tro diwethaf, 189 00:10:51,000 --> 00:10:55,000 ond mewn gwirionedd mae criw cyfan o gymhlethdod mynd ymlaen o dan y cwfl 190 00:10:55,000 --> 00:10:59,000 gynnwys cwcis sy'n ei galluogi PHP i roi fy hyn yn rhith 191 00:10:59,000 --> 00:11:02,000 y siopa cart-fel nodwedd. 192 00:11:02,000 --> 00:11:05,000 Am y tro, yn enghraifft ddibwys lle'r ydym yn dim ond ei storio yn gyfanrif, 193 00:11:05,000 --> 00:11:08,000 ond bydd y nodwedd honno yn dod yn ôl i fod o werth mawr 194 00:11:08,000 --> 00:11:10,000 wrth inni ddechrau sôn am brosiectau mwy cymhleth, 195 00:11:10,000 --> 00:11:12,000 yn eu plith problem gosod 7. 196 00:11:12,000 --> 00:11:16,000 Dyma eich problem olaf a osodwyd yn CS50. 197 00:11:16,000 --> 00:11:19,000 Rwy'n gwybod, mae mor drist, ond yr hyn y byddwch yn dod o hyd i yw ein bod ni'n mynd i ddod i'r casgliad 198 00:11:19,000 --> 00:11:22,000 y rhan hon o'r semester gan gwirionedd trawsnewid 199 00:11:22,000 --> 00:11:25,000 o'r cyd-destun o C yn sicr i gyd-destun PHP 200 00:11:25,000 --> 00:11:27,000 ond tra'n defnyddio rhai o'r hanfodion un iawn 201 00:11:27,000 --> 00:11:29,000 rydym wedi trafod ers peth amser. 202 00:11:29,000 --> 00:11:33,000 >> Yr amcan gyda pset 7 yn gweithredu CS50 Cyllid, 203 00:11:33,000 --> 00:11:37,000 sydd yn eich fersiwn eich hun o Yahoo Cyllid neu Google Cyllid 204 00:11:37,000 --> 00:11:40,000 neu hyd yn oed Etrade.com lle mae gennych y gallu i 205 00:11:40,000 --> 00:11:43,000 edrych i fyny prisiau stoc ar gyfer symbolau a roddir, ond hyd yn oed mwy na hynny 206 00:11:43,000 --> 00:11:48,000 gennych y gallu i "brynu" a "gwerthu" stociau 207 00:11:48,000 --> 00:11:51,000 sy'n cael eu masnachu ar gyfnewidfeydd stoc gwahanol oherwydd fod hyn yn dudalen hafan 208 00:11:51,000 --> 00:11:55,000 yma yn awgrymu, sydd mewn gwirionedd i ba raddau yr ydym wedi dechrau 209 00:11:55,000 --> 00:11:59,000 y set broblem i chi, mae gennych ffurflen mewngofnodi sydd wedi gofyn am enw defnyddiwr a chyfrinair. 210 00:11:59,000 --> 00:12:03,000 Mae ganddo botwm cyflwyno, ond ar ôl hynny, gan y byddwn yn y pen draw yn gweld, 211 00:12:03,000 --> 00:12:06,000 nid oes dim mewn gwirionedd yn mynd ymlaen o dan y cwfl eto oherwydd ei fod yn 212 00:12:06,000 --> 00:12:09,000 yn parhau i chi i weithredu'r gallu i gofrestru defnyddwyr newydd, 213 00:12:09,000 --> 00:12:12,000 y gallu i brynu stociau, i werthu stociau, 214 00:12:12,000 --> 00:12:14,000 i mewn gwirionedd yn edrych i fyny prisiau stoc bresennol. 215 00:12:14,000 --> 00:12:17,000 >> Ac yn wir, bydd hyn fod mor byd go iawn ag y bo modd oherwydd ein bod yn gwneud 216 00:12:17,000 --> 00:12:20,000 yn cynnwys ychydig o god a fydd yn caniatáu i chi gyda swyddogaeth unigol 217 00:12:20,000 --> 00:12:25,000 i holi Yahoo Cyllid, sy'n rhyfeddol o wneud data ar gael am ddim 218 00:12:25,000 --> 00:12:31,000 am edrych i fyny prisiau stoc yn seiliedig ar y symbol stoc neu Ticker symbol, 219 00:12:31,000 --> 00:12:34,000 ac rydych yn mynd yn ôl y pris stoc bresennol y dydd. 220 00:12:34,000 --> 00:12:37,000 Bydd y data rydych chi mewn gwirionedd weld yn y pset penodol fod yn 221 00:12:37,000 --> 00:12:40,000 am y byd go iawn fel ag y gall wneud fel eich bod chi mewn gwirionedd yn rhyngwynebu 222 00:12:40,000 --> 00:12:43,000 â stociau byd go iawn, prisiau byd go iawn, 223 00:12:43,000 --> 00:12:47,000 a byddwn yn gweld faint o arian y gallwch ei wneud efallai 224 00:12:47,000 --> 00:12:51,000 dros y dyddiau nesaf nifer o chwarae gyda eich set problem eich hun. 225 00:12:51,000 --> 00:12:55,000 >> Ond gadewch i ni yn gyntaf yn gosod y llwyfan ar gyfer sut i ddylunio rhywbeth sy'n sicr yn fwy cymhleth 226 00:12:55,000 --> 00:12:59,000 na counter.php, sy'n fwy cymhleth nag unrhyw un o'r enghreifftiau Frosh IMS hyd yn hyn, 227 00:12:59,000 --> 00:13:02,000 a gadewch i ni geisio cyflwyno patrymau ychydig yma yn ein galluogi 228 00:13:02,000 --> 00:13:06,000 ar gyfer pset 7 ac efallai ar gyfer eich prosiect terfynol, os ydych yn gwneud rhywbeth yn seiliedig ar y we 229 00:13:06,000 --> 00:13:11,000 i gadw eich cod drefnu yn dda, i gadw eich hun gall, 230 00:13:11,000 --> 00:13:15,000 ac i gymryd cam tuag at gydweithio, boed yn CS50 brosiect terfynol 231 00:13:15,000 --> 00:13:18,000 neu wedi hynny os ydych yn parhau i raglennu rhywbeth yn y dyfodol. 232 00:13:18,000 --> 00:13:21,000 Mae hwn yn batrwm dylunio cyffredinol 233 00:13:21,000 --> 00:13:24,000 mewn gwyddoniaeth cyfrifiadurol ac mewn datblygu meddalwedd yn fwy cyffredinol 234 00:13:24,000 --> 00:13:27,000 a elwir yn MVC, model barn rheolwr, 235 00:13:27,000 --> 00:13:30,000 ac mae hyn yn acronym gwirion sy'n disgrifio syniad neis iawn, 236 00:13:30,000 --> 00:13:34,000 sef y gwahanu o wahanol agweddau ar raglen, 237 00:13:34,000 --> 00:13:39,000 yn benodol cadw ar wahân y rhesymeg neu rhesymeg busnes o wefan 238 00:13:39,000 --> 00:13:42,000 fel bod unrhyw beth sy'n cynnwys pethau fel 239 00:13:42,000 --> 00:13:45,000 galw swyddogaethau a ymholi cronfeydd data ac yn y blaen 240 00:13:45,000 --> 00:13:48,000 digwydd ni ymysg eich HTML 241 00:13:48,000 --> 00:13:51,000 ond yn hytrach mewn ffeiliau ar wahân, ac yn wir, mae hyn yn ffeilio un 242 00:13:51,000 --> 00:13:54,000 fel arfer eich bod wedi galw y rheolwr 243 00:13:54,000 --> 00:13:56,000 hynny'n wir yn y ymennydd y tu ôl y llawdriniaeth, a byddwn yn gweld enghraifft 244 00:13:56,000 --> 00:13:58,000 o hyn mewn dim ond hyn o bryd. 245 00:13:58,000 --> 00:14:01,000 >> Mae model sy'n cael ei rhaglennu cod 246 00:14:01,000 --> 00:14:05,000 sy'n gwneud y siarad â'ch cronfeydd data, sy'n siarad â Yahoo Cyllid ac yn y blaen, 247 00:14:05,000 --> 00:14:08,000 ac yna mae y V yn MVC, barn, 248 00:14:08,000 --> 00:14:11,000 yr holl bethau sydd wedi ymwneud â estheteg, y ffeiliau sydd mewn gwirionedd yn cynnwys 249 00:14:11,000 --> 00:14:14,000 eich HTML, efallai eich CSS ac yn y blaen. 250 00:14:14,000 --> 00:14:17,000 Y syniad yma, gan fod y darlun hwn yn awgrymu, yw bod y rheolwr 251 00:14:17,000 --> 00:14:21,000 yn y ffeil, gan y byddwn cyn hir yn gweld ac fel y byddwch yn gweld yn arbennig o pset 7, 252 00:14:21,000 --> 00:14:24,000 bod y byd yn siarad â drwy eu porwyr gwe. 253 00:14:24,000 --> 00:14:27,000 Dyna y ffeil sy'n cael ei ymweld ar y rhyngrwyd gyhoeddus, 254 00:14:27,000 --> 00:14:30,000 ond y rheolwr siarad â potensial i fod yn model, 255 00:14:30,000 --> 00:14:34,000 sy'n un neu fwy o ffeiliau eraill sy'n cynnwys cod yn ymwneud â data, 256 00:14:34,000 --> 00:14:37,000 cod yn ymwneud â chronfeydd data ac yn y blaen, ac yna y mae'n siarad â 257 00:14:37,000 --> 00:14:40,000 y rheolwr un neu fwy o ffeiliau eraill a elwir yn barn, 258 00:14:40,000 --> 00:14:43,000 sef y estheteg dudalen ar y we, templedi o ryw fath, 259 00:14:43,000 --> 00:14:47,000 allai gymryd rhywfaint o ddata fel mewnbwn, ond ar ddiwedd y dydd 260 00:14:47,000 --> 00:14:50,000 dylai'r rhesymeg yn unig y tu mewn o olygfa fydd y rendro o'r data hwnnw, 261 00:14:50,000 --> 00:14:53,000 ailadrodd dros dolen ac mewn gwirionedd yn poeri allan rhai 262 00:14:53,000 --> 00:14:56,000 HTML-seiliedig rendition ohono neu hyd yn oed rhywbeth fel PDF. 263 00:14:56,000 --> 00:14:59,000 >> Beth braf am MVC yw y gallwch gael barn wahanol 264 00:14:59,000 --> 00:15:02,000 seiliedig ar y math o ddyfais, yn seiliedig ar y math o fformat ffeil yr ydych yn ei 265 00:15:02,000 --> 00:15:04,000 yn awyddus i ddangos i'r defnyddiwr. 266 00:15:04,000 --> 00:15:10,000 Gadewch i ni edrych ar ychydig o enghreifftiau yn gynyddol fwy cymhleth ac wedi'i gynllunio'n dda 267 00:15:10,000 --> 00:15:13,000 drwy ddechrau cyntaf gyda fersiwn 0 yma. 268 00:15:13,000 --> 00:15:16,000 Gadewch i mi fynd yn ei flaen ac yn agor i fyny yn ein cyfeiriadur MVC heddiw 269 00:15:16,000 --> 00:15:21,000 ffeil o'r enw index.php yn y cyfeiriadur 0. 270 00:15:21,000 --> 00:15:26,000 Sylwi ar hyn yn wefan super syml ac yn anfoddhaol 271 00:15:26,000 --> 00:15:29,000 sy'n fath o fersiwn 0 o hafan gyfer CS50, 272 00:15:29,000 --> 00:15:32,000 a sylwi sut y mae gennym gyswllt i Darlithoedd, mae gennym gyswllt â Maes Llafur, 273 00:15:32,000 --> 00:15:35,000 ac os wyf yn dilyn y ddolen i Darlithoedd rhybudd bod y URL 274 00:15:35,000 --> 00:15:39,000 i fyny top yn mynd i newid i lectures.php. 275 00:15:39,000 --> 00:15:44,000 Os byddaf yna dilynwch y ddolen i Wythnos 1 hysbysiad bod y newidiadau URL i week1.php. 276 00:15:44,000 --> 00:15:46,000 Mae'n ymddangos i fod yn strwythur hierarchaidd eithaf syml yma. 277 00:15:46,000 --> 00:15:49,000 >> Gadewch i ni edrych gyflym o dan y cwfl ar sut y caiff hyn ei osod allan, 278 00:15:49,000 --> 00:15:53,000 ac yn wir, os wyf yn edrych ar index.php ei fod yn eithaf syml. 279 00:15:53,000 --> 00:15:57,000 Yn wir, hyd yn oed er fy mod yn galw hyn yn ffeil PHP does dim cod rhaglennu gwirioneddol. 280 00:15:57,000 --> 00:16:01,000 Mae yna sylw i mi ysgrifennu yma yn PHP yn unig fel nad yw'r defnyddiwr yn y pen draw ei weld. 281 00:16:01,000 --> 00:16:05,000 Wrth gwrs, fel o'r blaen, unrhyw beth sy'n rhwng y tagiau PHP 282 00:16:05,000 --> 00:16:08,000 yn cael ei dehongli, hyd yn oed os yw'n sylwadau, ac i ddehongli sylw 283 00:16:08,000 --> 00:16:11,000 yn golygu dim ond i daflu i ffwrdd ar ddiwedd y dydd ac nid mewn gwirionedd 284 00:16:11,000 --> 00:16:15,000 ei anfon at y porwr, felly mae popeth yma yn unig estheteg. 285 00:16:15,000 --> 00:16:20,000 Os byddaf yn agor yn yr un modd lectures.php hyn hefyd yn unig yw ffeil godio caled. 286 00:16:20,000 --> 00:16:23,000 Mae'n digwydd i gael ei alw rhywbeth. Php, 287 00:16:23,000 --> 00:16:27,000 ond y mae mewn gwirionedd yn unig. html, a week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 yn yr un modd yn unig markup, felly mae 'na griw o ddiffygion y cynllun. 289 00:16:31,000 --> 00:16:33,000 Un, mae'n llawer iawn o gopi / past. 290 00:16:33,000 --> 00:16:37,000 Er bod yr unig beth sydd wedi newid ymhlith y ffeiliau hyn yn y rhestr di-drefn, 291 00:16:37,000 --> 00:16:41,000 y tagiau li, yr wyf serch hynny wedi doc fath, HTML, y pennaeth, 292 00:16:41,000 --> 00:16:44,000 teitl, corfforol agos, yn agos HTML a mwy 293 00:16:44,000 --> 00:16:47,000 ym mhob ffeil sengl, sy'n golygu os wyf erioed wedi eisiau ad-drefnu 294 00:16:47,000 --> 00:16:50,000 y dudalen gwefan hon neu ei restylize rhaid i mi fynd i mewn a newid 295 00:16:50,000 --> 00:16:54,000 yr holl ffeiliau hyn â llaw neu gyda rhyw enfawr darganfod ac ailosod. 296 00:16:54,000 --> 00:17:01,000 >> Gadewch i ni gymryd cam tuag at ddyluniad gallach, yn hirach meddwl mewn fersiwn 1 yma 297 00:17:01,000 --> 00:17:04,000 lle yn unol â'r ddarllen i mi ein bod wedi cynnwys fel y gallwch chi chwarae ynghyd â 298 00:17:04,000 --> 00:17:07,000 rhain yn fwy hamddenol ar fyr rybudd gartref sydd gennym yma 299 00:17:07,000 --> 00:17:10,000 crynodeb o'r ffeil mewn fersiwn 1 o'r safle hwn, 300 00:17:10,000 --> 00:17:13,000 ac mae'n ymddangos fy mod i wedi cymryd ei fod ar fy hun i ffactor allan 301 00:17:13,000 --> 00:17:17,000 rhai cod cyffredin, header.php a footer.php. 302 00:17:17,000 --> 00:17:20,000 Wel, gadewch i ni edrych ar yr hyn sydd y tu mewn y cyntaf o'r rheiny. 303 00:17:20,000 --> 00:17:23,000 Header.php yn edrych yn gyfarwydd, 304 00:17:23,000 --> 00:17:26,000 ond sylwi ble mae'n cael eu torri i ffwrdd? 305 00:17:26,000 --> 00:17:30,000 Dde ar ôl llinell 19, felly dyna popeth a oedd yn gyffredin 306 00:17:30,000 --> 00:17:33,000 oddi wrth y ffeiliau index.php lectures.php, 307 00:17:33,000 --> 00:17:36,000 wythnos1 a week2.php gan yr enghraifft flaenorol. 308 00:17:36,000 --> 00:17:40,000 Beth wnes i oedd copi a phopeth torri a oedd yn gyffredin i'r holl ffeiliau, 309 00:17:40,000 --> 00:17:44,000 ei roi mewn ffeil pennawd ar wahân, ac yn yr un modd yn footer.php 310 00:17:44,000 --> 00:17:48,000 wnes i gymhwyso'r un egwyddor lle mae'r llinellau yn unig yn ddiddorol 311 00:17:48,000 --> 00:17:52,000 yn footer.php yw'r ddwy, corff agos a HTML yn agos. 312 00:17:52,000 --> 00:17:55,000 >> Ond beth mae hyn yn golygu yn awr yw bod yn y fersiwn newydd 313 00:17:55,000 --> 00:17:59,000 o rybudd index.php faint symlach gall eu cael. 314 00:17:59,000 --> 00:18:02,000 Roddwyd, ychydig yn fwy cryptic edrych, ychydig yn llai 'n athrylithgar 315 00:18:02,000 --> 00:18:06,000 i ddilyn top i'r gwaelod, ond mae fy Nuw, hynny i gyd diswyddo yn mynd yn awr. 316 00:18:06,000 --> 00:18:10,000 Rydym yn gofyn am ddefnyddio swyddogaeth PHP a elwir yn llythrennol ei gwneud yn ofynnol i fyny top, 317 00:18:10,000 --> 00:18:15,000 sydd yn iawn atgoffa rhywun, galw i gof, o C # yn cynnwys mecanwaith. 318 00:18:15,000 --> 00:18:17,000 Rydym yn gofyn header.php ar y brig. 319 00:18:17,000 --> 00:18:20,000 Rydym yn gofyn footer.php ar y gwaelod, a'r unig beth sy'n wahanol 320 00:18:20,000 --> 00:18:25,000 neu arbennig am y ffeil yn cynnwys sydd wedi golygu i fod yn unigryw iddo. 321 00:18:25,000 --> 00:18:29,000 Os wyf yn wedyn yn mynd i mewn, dyweder, lectures.php, yr un egwyddor yn berthnasol. 322 00:18:29,000 --> 00:18:32,000 Unwaith eto, mae rhai sylwadau i fyny top, ond yna yr wyf yn gofyn pennawd, ei gwneud yn ofynnol troedyn, 323 00:18:32,000 --> 00:18:35,000 a rhwng ei fod dim ond y cynnwys sydd wedi newid mewn gwirionedd. 324 00:18:35,000 --> 00:18:38,000 Ac os ydym yn edrych i mewn Wythnos 1 Wythnos 2 a byddem yn gweld 325 00:18:38,000 --> 00:18:42,000 fod yr un egwyddor wedi cael eu defnyddio yno. 326 00:18:42,000 --> 00:18:44,000 Wel, nid ydym yn gwneud yn eithaf yno. 327 00:18:44,000 --> 00:18:48,000 >> Gadewch i ni edrych ar fersiwn 2, sydd â strwythur tebyg, 328 00:18:48,000 --> 00:18:50,000 ond sylwi yn awr yr wyf wedi cyflwyno rhywbeth arall. 329 00:18:50,000 --> 00:18:53,000 Yn llinell 10 Rwyf wedi cyflwyno helpers.php, 330 00:18:53,000 --> 00:18:55,000 yn ôl pob golwg yn cynnwys swyddogaethau cynorthwyol. 331 00:18:55,000 --> 00:18:58,000 Mae swyddogaeth cynorthwy-ydd yn gyffredinol yn swyddogaeth cymharol fyr 332 00:18:58,000 --> 00:19:01,000 eich bod yn ysgrifennu i helpu chi allan mewn gwahanol leoedd, 333 00:19:01,000 --> 00:19:04,000 a gadewch i ni weld beth sydd y tu mewn o helpers.php. 334 00:19:04,000 --> 00:19:07,000 Yn yr achos hwn, mae'n edrych fel ei fod wedi 2 swyddogaethau. 335 00:19:07,000 --> 00:19:10,000 Dwyn i gof y diwrnod o'r blaen gyda ein henghraifft ciwb 336 00:19:10,000 --> 00:19:13,000 gallwch chi ddiffinio eich swyddogaethau eu hunain yn PHP, a beth yr wyf wedi ei wneud nawr yw fy mod i wedi 337 00:19:13,000 --> 00:19:17,000 swyddogaethau diffiniedig a elwir yn golygu troedyn a rendr pennawd, 338 00:19:17,000 --> 00:19:21,000 y cyntaf sy'n cymryd paramedr o'r enw data, 339 00:19:21,000 --> 00:19:25,000 y mae eu gwerth yn ddiofyn arae wag, fel yr awgrymwyd yno, 340 00:19:25,000 --> 00:19:29,000 a gallwn mewn gwirionedd yn ysgrifennu hwn hyd yn oed yn fwy cryno yn y fersiwn ddiweddaraf o PHP 341 00:19:29,000 --> 00:19:32,000 trwy ddweud braced agored sgwâr, ar gau sgwâr braced. 342 00:19:32,000 --> 00:19:35,000 Mae hynny'n golygu amrywiaeth gwag o faint 0 ond serch hynny arae. 343 00:19:35,000 --> 00:19:38,000 >> Mae'r swyddogaeth hon yn dyfyniad ychydig yn arbennig yn y 344 00:19:38,000 --> 00:19:41,000 beth mae'n ei wneud yw cymryd fel ei ddadl arae cysylltiadol 345 00:19:41,000 --> 00:19:45,000 sydd â 0 neu fwy o barau gwerth allweddol, ac os oes gennych allweddol o foo 346 00:19:45,000 --> 00:19:48,000 a gwerth bar swyddogaeth dyfyniad 347 00:19:48,000 --> 00:19:51,000 yn creu sefyllfa lle yn awr, fel y llinell 11, 348 00:19:51,000 --> 00:19:57,000 gennych newidyn lleol o'r enw $ foo y mae eu gwerth yn bar. 349 00:19:57,000 --> 00:19:59,000 Ac os oedd gennych fwy o allweddi a gwerthoedd yn yr amrywiaeth data, 350 00:19:59,000 --> 00:20:03,000 Byddai yr un modd yn cael eu tynnu i mewn i'r cwmpas leol 351 00:20:03,000 --> 00:20:06,000 gofod enw neu fel y footer.php a 352 00:20:06,000 --> 00:20:09,000 yr un syniad i lawr yma fel y header.php 353 00:20:09,000 --> 00:20:12,000 cael mynediad at y newidynnau hynny. 354 00:20:12,000 --> 00:20:15,000 Yn wir, gadewch i mi agor unwaith eto header.php 355 00:20:15,000 --> 00:20:18,000 a thynnu sylw at yn awr yr hyn y mae'n edrych fel yn y fersiwn hwn. 356 00:20:18,000 --> 00:20:22,000 >> Yn hytrach na caled codio CS50 fel y teitl ar gyfer pob un dudalen 357 00:20:22,000 --> 00:20:24,000 sylwi ar y deinameg hynny'n bosibl yn awr. 358 00:20:24,000 --> 00:20:29,000 Yn llinell 5 Rwy'n adleisio newidyn teitl, 359 00:20:29,000 --> 00:20:34,000 ond yn gyntaf dwi'n pasio y newidyn teitl i swyddogaeth a elwir yn htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Mae enw gwirion ar gyfer swyddogaeth, cyhyd ag y mae, ond mae'n wir yn gwneud yr hyn mae'n ei ddweud. 361 00:20:38,000 --> 00:20:41,000 Mae'n sicrhau bod unrhyw gymeriadau arbennig 362 00:20:41,000 --> 00:20:46,000 yn y llinyn sydd wedi cael ei phasio yn gywir a ddihangodd HTML. 363 00:20:46,000 --> 00:20:49,000 Mae hyn mewn gwirionedd yn ffordd o osgoi rhywbeth a elwir yn ymosodiad sgriptio safle croes 364 00:20:49,000 --> 00:20:52,000 lle gall rhywun maleisus neu ddamweiniol 365 00:20:52,000 --> 00:20:55,000 chwistrellu eu hunain i mewn i HTML eich gwefan 366 00:20:55,000 --> 00:20:59,000 drwy pastio i mewn i ryw fath, er enghraifft, 367 00:20:59,000 --> 00:21:02,000 rhywbeth nad ydych yn eithaf disgwyl, yn enwedig JavaScript cod, 368 00:21:02,000 --> 00:21:05,000 fel y byddwn yn siarad am mewn wythnos neu ddwy yn amser. 369 00:21:05,000 --> 00:21:08,000 >> Mae hyn yn header.php yn awr, mae'n farn 370 00:21:08,000 --> 00:21:12,000 yn yr ystyr ei fod yn caniatáu i chi weld esthetaidd cynnwys rhai set ddata. 371 00:21:12,000 --> 00:21:14,000 Ond yn fwy penodol, mae'n templed. 372 00:21:14,000 --> 00:21:19,000 Mae hwn yn fath o lasbrint nawr o'r hyn yr ydym am i'r pennawd pob tudalen i edrych fel, 373 00:21:19,000 --> 00:21:23,000 ond mae rhywfaint o egni sef ein bod am y teitl i'w fewnosod deinamig 374 00:21:23,000 --> 00:21:26,000 yn seiliedig ar y newidyn teitl 375 00:21:26,000 --> 00:21:30,000 a dynnwyd pan fyddwn yn galw, unwaith eto, 376 00:21:30,000 --> 00:21:33,000 y rendr swyddogaeth header. 377 00:21:33,000 --> 00:21:36,000 Nawr, os ydym yn edrych ar troedyn rendro, mae mewn gwirionedd nid llawer o ddefnydd o'r hawl honno bellach 378 00:21:36,000 --> 00:21:40,000 oherwydd mewn footer.php does dim egni o gwbl. 379 00:21:40,000 --> 00:21:43,000 Gallai fod, ond ar hyn o bryd mae'n rhestr codau caled o 2 tags, 380 00:21:43,000 --> 00:21:46,000 ond yr un syniad yn gymwys, fel sydd mewn gwirionedd yn awgrymu pam 381 00:21:46,000 --> 00:21:49,000 oeddem yn gwastraffu amser yn cael pennawd rendr a swyddogaeth rendr troedyn? 382 00:21:49,000 --> 00:21:52,000 Gadewch i mi fynd yn lle awr i mewn i fersiwn 3, 383 00:21:52,000 --> 00:21:56,000 ac mewn fersiwn 3 mewn cynorthwywyr penderfynais ei symleiddio hyd yn oed yn fwy. 384 00:21:56,000 --> 00:21:58,000 >> Gadewch i mi gael un swyddogaeth rendr. 385 00:21:58,000 --> 00:22:02,000 Gadewch i mi gael ei gymryd ddadl arall, y tro hwn a elwir yn templed, 386 00:22:02,000 --> 00:22:05,000 sy'n cael ei olygu i fod yn enw'r templed, 387 00:22:05,000 --> 00:22:11,000 ac yna byddaf yn concatenate rhyfygus. php i werth y newidyn, yn 388 00:22:11,000 --> 00:22:17,000 ac yna os yw'n bodoli foo.php, bar.php neu header.php a footer.php, 389 00:22:17,000 --> 00:22:20,000 yna yr wyf i'n mynd i fynd yn ei flaen a dynnu 'r data amrywiol 390 00:22:20,000 --> 00:22:23,000 ac yna gwneud yn ofynnol bod llwybr. 391 00:22:23,000 --> 00:22:29,000 Mewn geiriau eraill, i ddefnyddio hyn yn awr, os wyf yn agor index.php 392 00:22:29,000 --> 00:22:32,000 sylwi nad wyf yn galw pennawd render anymore. 393 00:22:32,000 --> 00:22:36,000 Fi jyst galw rendr, ond yr wyf pasio mewn gwerth a ddyfynnwyd o pennawd 394 00:22:36,000 --> 00:22:39,000 i'w gwneud yn glir pa templed Fi 'n weithredol am barhau i lwytho. 395 00:22:39,000 --> 00:22:41,000 >> Yna, dros yma sylwi ar yr hyn rwy'n ei wneud. 396 00:22:41,000 --> 00:22:44,000 Rwy'n pasio mewn ddynamig yn allweddol o deitl, 397 00:22:44,000 --> 00:22:47,000 gwerth o CS50, ac mae hyn hefyd, fel y gwelsom o'r blaen, 398 00:22:47,000 --> 00:22:51,000 gellid gwneud mwy cryno yn y fersiwn ddiweddaraf o PHP 399 00:22:51,000 --> 00:22:54,000 lle y gallaf gymryd lle'r swyddogaeth amrywiaeth gyda bracedi sgwâr, 400 00:22:54,000 --> 00:22:57,000 yr wyf yn cynnig hyd yn oed yn fwy darllenadwy ac yn sicr 401 00:22:57,000 --> 00:22:59,000 ychydig yn haws i deipio. 402 00:22:59,000 --> 00:23:02,000 Ac wrth gwrs, gyda'r alwad render troedyn ar y gwaelod, 403 00:23:02,000 --> 00:23:05,000 nid ydym yn trafferthu mynd heibio mewn ail ddadl o gwbl, dim amrywiaeth cysylltiadol, 404 00:23:05,000 --> 00:23:07,000 oherwydd mae y tu mewn dim byd deinamig y troedyn. 405 00:23:07,000 --> 00:23:10,000 Dim ond rhai tagiau HTML yn agos i. 406 00:23:10,000 --> 00:23:14,000 Da, rydym yn cymryd camau tuag at 'n sylweddol glanhau pethau i fyny yma, 407 00:23:14,000 --> 00:23:17,000 ond gadewch i mi agor 2 enghraifft terfynol. 408 00:23:17,000 --> 00:23:21,000 Mae hyn yn un, rhif 4, hysbysu fy mod wedi gwneud penderfyniad ymwybodol bellach 409 00:23:21,000 --> 00:23:26,000 i wella ar yr enghraifft flaenorol o'r diwedd gan ddefnyddio peth hierarchaeth i fy ffeiliau. 410 00:23:26,000 --> 00:23:29,000 >> Sylwch fod yn y crynodeb hwn, yn y darllen mi, yr wyf wedi cyflwyno 411 00:23:29,000 --> 00:23:32,000 yn cynnwys cyfeiriadur a chyfeiriadur templedi 412 00:23:32,000 --> 00:23:35,000 eu cynnwys yn mynd i fod y pethau rwyf am i gynnwys 413 00:23:35,000 --> 00:23:38,000 a'r templedi yr wyf am ei wneud, yn y drefn honno. 414 00:23:38,000 --> 00:23:42,000 Mae hyn yn wir i mi fod yn rhefrol ac yn ceisio cadw pethau'n daclus, 415 00:23:42,000 --> 00:23:45,000 cadw ffeiliau cysylltiedig gyda'i gilydd, ond mae'r canlyniad 416 00:23:45,000 --> 00:23:48,000 yw bod gennym bellach ychydig yn daclusach setup, ond rhaid inni gofio nawr 417 00:23:48,000 --> 00:23:51,000 mewn, er enghraifft, index.php 418 00:23:51,000 --> 00:23:55,000 pan fyddwn yn ei gwneud yn ofynnol y helpers.php ffeil 419 00:23:55,000 --> 00:24:01,000 mae'n rhaid i ni bellach yn ei gwneud yn ofynnol iddo trwy gynnwys / helpers.php 420 00:24:01,000 --> 00:24:06,000 yn hytrach na dim ond dweud helpers.php oherwydd yn awr ei fod mewn gwirionedd mewn cyfeiriadur is. 421 00:24:06,000 --> 00:24:09,000 Yn awr, wrth fynd heibio, byddwch yn gweld yn yr enghreifftiau hyn a rhai eraill 422 00:24:09,000 --> 00:24:11,000 swyddogaethau fel ei gwneud yn ofynnol, yn gofyn unwaith. 423 00:24:11,000 --> 00:24:15,000 Mae mewn gwirionedd yn swyddogaeth ei hun o'r enw yn cynnwys, ac maent i gyd ag ymddygiad ychydig yn wahanol. 424 00:24:15,000 --> 00:24:18,000 Yma, yr wyf yn dweud ei gwneud yn ofynnol unwaith i wneud super glir fy mod dim ond am y rhai 425 00:24:18,000 --> 00:24:20,000 cynorthwywyr a gynhwysir yn fy mhrosiect unwaith. 426 00:24:20,000 --> 00:24:24,000 Ond os ydw i'n ofalus, ac os wyf mewn gwirionedd yn meddwl trwy fy rhesymeg yn briodol 427 00:24:24,000 --> 00:24:27,000 dylai fod yn ddigon yn rhy dim ond i ddweud ei gwneud yn ofynnol i fyny top 428 00:24:27,000 --> 00:24:31,000 cyn belled gan fy mod nid fy hun yn ddamweiniol ei gwneud yn ofynnol bod un ffeil mewn mannau eraill. 429 00:24:31,000 --> 00:24:34,000 Mewn gwirionedd, mae hyn yn ffordd ychydig yn fwy effeithlon o wneud pethau yna defnyddio 430 00:24:34,000 --> 00:24:38,000 ei gwneud yn ofynnol unwaith, felly byddaf yn ymyl i lawr i ychydig angen. 431 00:24:38,000 --> 00:24:40,000 >> Gadewch i ni gymryd un cam ymhellach. 432 00:24:40,000 --> 00:24:46,000 Mae'r enghraifft olaf yn awr, fersiwn 5, mae ganddo hierarchaeth folder hyd yn oed yn lanach. 433 00:24:46,000 --> 00:24:50,000 Hysbysiad hyn yr wyf wedi ei wneud yma unol â'r ddarllen i mi yn y fersiwn derfynol 434 00:24:50,000 --> 00:24:54,000 yn awr yr wyf wedi fy cyfeiriadur HTML, yr wyf wedi cael yr holl amser hwn, 435 00:24:54,000 --> 00:24:58,000 ond y tu mewn o yno yn awr yn unig index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php a week2.php. 437 00:25:01,000 --> 00:25:05,000 Mae'r cynnwys cyfeiriadur nawr yn byw ochr yn ochr y cyfeiriadur HTML, 438 00:25:05,000 --> 00:25:08,000 hynny ar yr un lefel â brawd neu chwaer, felly, i siarad. 439 00:25:08,000 --> 00:25:10,000 Felly, mae'r ffolder templedi. 440 00:25:10,000 --> 00:25:14,000 Y prydau parod allweddol yma yw fy mod wedi cyflwyno strwythur ychydig yn fwy, 441 00:25:14,000 --> 00:25:17,000 ond y nodwedd allweddol yn awr yw mai dim ond y ffeiliau 442 00:25:17,000 --> 00:25:21,000 y mae angen ar y we yn hygyrch, yn gyhoeddus gyfeiriedig 443 00:25:21,000 --> 00:25:25,000 gan URL ar y rhyngrwyd gyhoeddus yn fy cyfeiriadur HTML. 444 00:25:25,000 --> 00:25:28,000 >> Ffeiliau Yn y cyfamser, eraill, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, sy'n dadlau efallai yn fwy sensitif, 446 00:25:32,000 --> 00:25:35,000 efallai cynorthwywyr mewn gwirionedd mae rhai enwau defnyddwyr a chyfrineiriau neu ryw deallusol 447 00:25:35,000 --> 00:25:39,000 eiddo i mi, swyddogaethau i ddim wir yn eisiau i'r byd i weld, hyd yn oed os ddamweiniol. 448 00:25:39,000 --> 00:25:45,000 Mae'n arfer da i gadw allan o'r cyfeirlyfr HTML cyhoeddus 449 00:25:45,000 --> 00:25:48,000 unrhyw ffeiliau nad oes angen eu hunain i fod yn gyhoeddus. 450 00:25:48,000 --> 00:25:51,000 Y cyfan sydd raid ei wneud yn yr achos hwn wrth edrych ar, er enghraifft, 451 00:25:51,000 --> 00:25:55,000 ffeil y cyfeiriadur HTML yn index.php, 452 00:25:55,000 --> 00:25:58,000 sylwi rydym yn unig rhaid i ni fod ychydig yn fwy gofalus wrth ofyn 453 00:25:58,000 --> 00:26:00,000 neu os oes angen unwaith y bydd y ffeil hon. 454 00:26:00,000 --> 00:26:03,000 Angen i mi cyntaf sydd .. i fynd i'r cyfeiriadur rhiant, 455 00:26:03,000 --> 00:26:06,000 yna peidiwch / cynnwys / helpers.php 456 00:26:06,000 --> 00:26:12,000 i ddeifio yn ôl i lawr i mewn i gael y ffeil yr wyf yn poeni am. 457 00:26:12,000 --> 00:26:16,000 >> Unrhyw gwestiynau yna ar MVC 458 00:26:16,000 --> 00:26:20,000 neu mae hyn ymgnawdoliad cymharol syml ohono? 459 00:26:20,000 --> 00:26:23,000 A gadewch i mi ei gwneud yn glir ein bod yn canolbwyntio cryn dipyn ar y 460 00:26:23,000 --> 00:26:27,000 V yma, barn a ffactoreiddio allan o'r templedi. 461 00:26:27,000 --> 00:26:30,000 Nid ydym wedi gwahaniaethu iawn o M C eto. 462 00:26:30,000 --> 00:26:33,000 Yn wir, does dim M yma, a hyd yn oed ein C, 463 00:26:33,000 --> 00:26:36,000 Nid yw rheolwr, yn cael ei wneud mewn gwirionedd i gyd bod llawer, ond byddwch yn cael llawer mwy 464 00:26:36,000 --> 00:26:39,000 gyfarwydd gyda'r ddau o'r rhai 2 lythyr gan MVC, 465 00:26:39,000 --> 00:26:43,000 neu yn hytrach, byddwch yn cael llawer mwy cyfarwydd â'r C 466 00:26:43,000 --> 00:26:49,000 yn MVC am 7, set problem felly mae mwy o hynny ar y gorwel. 467 00:26:49,000 --> 00:26:51,000 Cwestiynau? 468 00:26:51,000 --> 00:26:53,000 Nid mewn gwirionedd oes neb yma. 469 00:26:53,000 --> 00:26:57,000 >> Iawn, gadewch i ni nawr symud ymlaen i'r ail bwnc a'r olaf ar gyfer heddiw. 470 00:26:57,000 --> 00:27:00,000 Dyna yw cyflwyno cronfa ddata. 471 00:27:00,000 --> 00:27:03,000 Hyd at y pwynt hwn rydym wedi cael ychydig ffyrdd o storio data. 472 00:27:03,000 --> 00:27:05,000 Rydym wedi defnyddio newidynnau. 473 00:27:05,000 --> 00:27:08,000 Yn ôl yn ein C ffeil, I / O trafodaeth rydym yn dechrau defnyddio ffeiliau testun 474 00:27:08,000 --> 00:27:11,000 a defnyddio ffeiliau o'r math fprintf, ac yna rydym hyd yn oed dechrau 475 00:27:11,000 --> 00:27:14,000 siarad am CSV ffeilio ychydig, gwerthoedd gwahanu coma, 476 00:27:14,000 --> 00:27:17,000 felly pob un o'r rhain yn caniatáu i ni gael data a storiwyd 477 00:27:17,000 --> 00:27:19,000 naill ai nad ydynt yn gyson neu'n gyson. 478 00:27:19,000 --> 00:27:23,000 Ond nid yw hyd yn oed CSVs yn wir yn ffafriol i chwilio 479 00:27:23,000 --> 00:27:25,000 a mewnosod a dileu. 480 00:27:25,000 --> 00:27:28,000 Mae'n mewn gwirionedd dim ond ffeil testun dwp gwahanu gan atalnodau 481 00:27:28,000 --> 00:27:30,000 olynol gan olynol gan olynol gan rhes, felly os ydych am 482 00:27:30,000 --> 00:27:32,000 chwilio bod ffeil y gorau y gallwch ei wneud mewn gwirionedd chwiliad llinol. 483 00:27:32,000 --> 00:27:34,000 Mae'n rhaid i chi ddechrau ar y brig y ffeil, darllen yr holl beth i mewn, 484 00:27:34,000 --> 00:27:36,000 ac edrych am ryw werth o ddiddordeb. 485 00:27:36,000 --> 00:27:39,000 Os ydych am i fewnosod i mewn iddo yn rhaid i chi wneud yr un peth, 486 00:27:39,000 --> 00:27:41,000 ailadrodd drosto ac fewnosod yn lle arbennig, 487 00:27:41,000 --> 00:27:45,000 ac yn wir, rhaid i chi wneud yr holl rhesymeg chwilio eich hun. 488 00:27:45,000 --> 00:27:49,000 >> Ni allwch wneud patrwm clyfar cyfateb ar ffeil CSV oni bai eich bod chi eich hun ysgrifennu'r cod. 489 00:27:49,000 --> 00:27:51,000 Ni allwch wneud hidlo o ffeil CSV 490 00:27:51,000 --> 00:27:53,000 oni bai eich bod chi eich hun ysgrifennu'r cod. 491 00:27:53,000 --> 00:27:56,000 Oni fyddai'n braf pe bai rhywun arall yn rhoi ei holl ymdrech 492 00:27:56,000 --> 00:27:59,000 i mewn gwirionedd yn gwneud chwilio yn hawdd a gosod hawdd 493 00:27:59,000 --> 00:28:01,000 a dileu a diweddaru ac yn y blaen? 494 00:28:01,000 --> 00:28:04,000 Dyna'n union beth cronfa ddata yn. 495 00:28:04,000 --> 00:28:07,000 SQL, iaith ymholiad strwythuredig, eto iaith arall 496 00:28:07,000 --> 00:28:10,000 ein bod yn cyflwyno yma heddiw, ond mae hyn hefyd yn weddol hygyrch, 497 00:28:10,000 --> 00:28:13,000 a beth rydyn ni'n wir yn mynd i wneud yn unig yw tyn allan ohono rhai o'r amlycaf 498 00:28:13,000 --> 00:28:16,000 nodweddion fel bod ar gyfer pset 7, ac os ydych yn gwneud rhywbeth yn seiliedig ar y we, 499 00:28:16,000 --> 00:28:19,000 eich prosiect terfynol, mae gennych y gallu i fynegi eich hun 500 00:28:19,000 --> 00:28:22,000 o ran ymholiadau data. 501 00:28:22,000 --> 00:28:25,000 Mae gennych y gallu i storio ychydig neu lawer o ddata 502 00:28:25,000 --> 00:28:28,000 mewn ffordd llawer mwy strwythuredig a fydd ar ddiwedd y dydd 503 00:28:28,000 --> 00:28:32,000 gwneud eich bywyd yn haws oherwydd gyda SQL gallwch fynegi eich hun 504 00:28:32,000 --> 00:28:35,000 llawer mwy manwl, yn llawer mwy drefnus er mwyn 505 00:28:35,000 --> 00:28:40,000 fynd yn ôl rhywfaint o is-set o ddata o corpws mwy o ddata. 506 00:28:40,000 --> 00:28:45,000 >> Gallwch feddwl am gronfa ddata, yn yr achos hwn, cronfa ddata SQL, mewn gwirionedd fel Excel 507 00:28:45,000 --> 00:28:48,000 neu Rhifau lle mae'n taenlen, 508 00:28:48,000 --> 00:28:50,000 neu efallai taenlenni lluosog, a thaenlen, wrth gwrs, 509 00:28:50,000 --> 00:28:53,000 Mae rhesi a cholofnau, a hynny oherwydd 510 00:28:53,000 --> 00:28:56,000 Cronfeydd data SQL yn perthynol, perthynol yn yr ystyr 511 00:28:56,000 --> 00:28:59,000 eu bod yn storio data o ran y tablau hyn, 512 00:28:59,000 --> 00:29:01,000 rhesi a cholofnau. 513 00:29:01,000 --> 00:29:03,000 Maent yn uwch perfformio na rhywbeth fel taenlen, 514 00:29:03,000 --> 00:29:05,000 a thaenlen i fod i gael ei ddefnyddio gan bobl. 515 00:29:05,000 --> 00:29:08,000 Mae cronfa ddata i fod i gael ei ddefnyddio gan rhaglennydd 516 00:29:08,000 --> 00:29:12,000 ysgrifennu cod yn ei erbyn, felly mae'r ymgnawdoliad cronfa ddata 517 00:29:12,000 --> 00:29:14,000 yn mynd i fod naill ai llinell orchymyn. 518 00:29:14,000 --> 00:29:18,000 >> Un o'r cronfeydd data mwyaf poblogaidd perthynol i maes 'na, unwaith eto, MySQL, 519 00:29:18,000 --> 00:29:22,000 sydd yn rhyfeddol o rhad ac am ddim, sy'n perfformio'n uchel iawn, ac mae hyn yn beth 520 00:29:22,000 --> 00:29:24,000 Facebook defnyddio yn gynnar iawn ac i ryw raddau hyd heddiw 521 00:29:24,000 --> 00:29:27,000 i storio llawer o'i data, ac fe welwn yn y man 522 00:29:27,000 --> 00:29:30,000 bod defnyddio gorchmynion cymharol syml 523 00:29:30,000 --> 00:29:33,000 gallwn ddewis data, data mewnosoder, diweddaru data, 524 00:29:33,000 --> 00:29:37,000 dileu data ac yn y blaen, ond diolch byth, mae yna fwy defnyddiwr-gyfeillgar rhyngwyneb 525 00:29:37,000 --> 00:29:39,000 na dim ond teipio mewn brydlon du a gwyn yma. 526 00:29:39,000 --> 00:29:43,000 Byddwn yn defnyddio ar gyfer pset 7 a thu hwnt yn offeryn rhad ac am ddim o'r enw phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Mae'r enw yn cyd-ddigwyddiad. 528 00:29:45,000 --> 00:29:47,000 Mae'r offeryn yn digwydd i'w gweithredu yn PHP, 529 00:29:47,000 --> 00:29:49,000 ond mae hynny'n sylfaenol amherthnasol. 530 00:29:49,000 --> 00:29:53,000 Beth ddefnyddiol am phpMyAdmin yw ei fod yn cyfleustodau ar y we. 531 00:29:53,000 --> 00:29:55,000 Rydym wedi rhag-ei osod yn y peiriant i chi, 532 00:29:55,000 --> 00:29:58,000 a gydag ef, gallwch greu tablau mewn cronfa ddata, 533 00:29:58,000 --> 00:30:01,000 gallwch osod data, dileu data, ac yn gyffredinol yn gweld 534 00:30:01,000 --> 00:30:04,000 eich data mewn weddol hawdd i'w ddefnyddio amgylchedd. 535 00:30:04,000 --> 00:30:07,000 Nid yw eich defnyddwyr yn mynd i ddefnyddio phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Mae hyn yn wir yn unig yn offeryn gweinyddol neu datblygwr 537 00:30:09,000 --> 00:30:12,000 â hwy i weld a chwilota o amgylch eich data a chyfrif i maes sut i'w strwythuro, 538 00:30:12,000 --> 00:30:15,000 lawer fel chi eich hun a allai ddefnyddio Excel neu Rhifau, 539 00:30:15,000 --> 00:30:19,000 ond mae'n mynd i fod yn ffordd wych o ddelweddu beth sy'n mynd ymlaen o dan y cwfl 540 00:30:19,000 --> 00:30:22,000 er mwyn i chi ganolbwyntio ar y broblem ddiddorol problemau ac nid yn gymaint 541 00:30:22,000 --> 00:30:25,000 ar y gorchmynion dirgel. 542 00:30:25,000 --> 00:30:28,000 Gadewch i ni edrych ar enghraifft o ddata a allai gael eu storio tabularly 543 00:30:28,000 --> 00:30:30,000 mewn cronfa ddata berthynol. 544 00:30:30,000 --> 00:30:32,000 Dyma un enghraifft o'r fath. 545 00:30:32,000 --> 00:30:35,000 Yn awr, yn anffodus, phpMyAdmin erred ar ochr ffordd taflu gormod llawer o eiriau 546 00:30:35,000 --> 00:30:38,000 a graffeg ar chi, ond os ydych yn hogi yn unig ar y 547 00:30:38,000 --> 00:30:42,000 , Colofn ID y defnyddiwr golofn enw, a'r golofn hash, 548 00:30:42,000 --> 00:30:45,000 mae hyn yn effeithiol taenlen, ond mae'n digwydd i fod yn snippet 549 00:30:45,000 --> 00:30:49,000 o y tu mewn tabl o offer 550 00:30:49,000 --> 00:30:53,000 ddefnyddio ffeil ein bod yn rhoi i chi mewn 7 set problem. 551 00:30:53,000 --> 00:30:57,000 >> Yn benodol, rydym yn rhoi i chi ffeil sy'n cynrychioli 552 00:30:57,000 --> 00:31:01,000 tabl defnyddiwr, felly daenlen sy'n cynnwys defnyddwyr gyda 3 colofn, 553 00:31:01,000 --> 00:31:05,000 un ohonynt yn ID unigryw sy'n dechrau ar 1 ac yn cael ei fyny ar ôl hynny. 554 00:31:05,000 --> 00:31:08,000 Mae'r ail golofn yn enw defnyddiwr, a'r rhai ohonoch a wnaeth Hacker, 555 00:31:08,000 --> 00:31:12,000 rhifyn Hacker gyfer pset 2 a allai, yn adnabod rhai o'r enwau defnyddwyr o leiaf. 556 00:31:12,000 --> 00:31:16,000 Ar yr ochr dde yw'r cyfrineiriau, ond nid ydynt yn cyfrineiriau llythrennol. 557 00:31:16,000 --> 00:31:19,000 Maent yn hashes ohono, felly mae'n troi allan 558 00:31:19,000 --> 00:31:22,000 bod storio cyfrineiriau mewn cronfa ddata yn syniad gwael iawn. 559 00:31:22,000 --> 00:31:25,000 Rydych i gyd wedi darllen yn ôl pob tebyg ar ryw adeg o rai wefan 560 00:31:25,000 --> 00:31:28,000 neu gronfa ddata rhai cwmni yn cael ei gyfaddawdu, ac yna rhaid i chi 561 00:31:28,000 --> 00:31:31,000 newid eich cyfrinair, bydd angen i chi gael ad-daliad ar bethau 562 00:31:31,000 --> 00:31:34,000 oherwydd bod rhai guy gwael mewn gwirionedd yn torri i mewn i'ch cyfrif o ganlyniad. 563 00:31:34,000 --> 00:31:38,000 >> Storio cyfrineiriau mewn testun clir, heb ei amgryptio mewn cronfa ddata 564 00:31:38,000 --> 00:31:41,000 yn gwbl asyn, ac eto mae'n fawr ddoniol 565 00:31:41,000 --> 00:31:44,000 wedyn i ddarllen am rai cwmnïau adnabyddus iawn 566 00:31:44,000 --> 00:31:47,000 weithiau yn y wasg y mae eu cronfeydd data yn cael eu cyfaddawdu, 567 00:31:47,000 --> 00:31:50,000 ac nad yw rhan yn ddoniol, ond y ffaith bod y cronfeydd data yn cynnwys heb ei amgryptio 568 00:31:50,000 --> 00:31:53,000 cyfrineiriau yn chwerthinllyd oherwydd llythrennol gydag un llinell o god 569 00:31:53,000 --> 00:31:57,000 gallwch ddiogelu yn erbyn y bygythiad penodol, a dyna beth rydym wedi ei wneud yma. 570 00:31:57,000 --> 00:32:00,000 Hyd yn oed ar gyfer ein fersiwn ffug Cyllid ychydig CS50 571 00:32:00,000 --> 00:32:03,000 rydym yn amgryptio cyfrineiriau yn unig ar gyfer mesur da, a'r ffaith bod 572 00:32:03,000 --> 00:32:07,000 pob un o'r rhain cyfrineiriau yn dechrau gyda $ 1 $ yn unig yw confensiwn. 573 00:32:07,000 --> 00:32:10,000 Mai dim ond yn golygu eu bod yn amgryptio neu stwnsio mewn gwirionedd, 574 00:32:10,000 --> 00:32:13,000 sydd yn debyg i swyddogaeth amgryptio un-ffordd 575 00:32:13,000 --> 00:32:17,000 lle nad ydych yn gallu newid ei effeithiau gyda rhywbeth a elwir yn MD5. 576 00:32:17,000 --> 00:32:21,000 >> Mae'r ffaith bod 50 yn ôl hynny yn golygu bod gwerth halen 577 00:32:21,000 --> 00:32:24,000 o 50 ei ddefnyddio ar gyfer stwnsio pob un o'r cyfrineiriau heblaw am un. 578 00:32:24,000 --> 00:32:27,000 Mine, wrth gwrs, fel y gallwch weld yno, HA, 579 00:32:27,000 --> 00:32:30,000 oedd defnyddio halen gwahanol, fel y rhai ohonoch a gafodd baglu ychydig yn uwch 580 00:32:30,000 --> 00:32:33,000 efallai yn Hacker 2, a allai fod wedi digwydd o ganlyniad ein bod wedi defnyddio 581 00:32:33,000 --> 00:32:36,000 a hash wahanol na'r lleill oherwydd fy nghyfrinair mewn gwirionedd yr un fath 582 00:32:36,000 --> 00:32:38,000 gan fod rhai defnyddwyr eraill i fyny yno. 583 00:32:38,000 --> 00:32:41,000 Yn wir, os ydych chi wedi bod yn aros hyn i gyd wythnosau i gael gwybod 584 00:32:41,000 --> 00:32:44,000 beth yw'r cyfrineiriau yn cael eu yma yn y cyfrineiriau yr ydych yn eu herio 585 00:32:44,000 --> 00:32:48,000 i fynd i'r afael yn rhifyn Hacker o 2, set problem felly dim yn rhy anodd. 586 00:32:48,000 --> 00:32:50,000 Yn wir, Malan oedd yr un fath ag jharvard, 587 00:32:50,000 --> 00:32:54,000 ond os ydym yn mynd yn ôl iddynt edrych yn wahanol. 588 00:32:54,000 --> 00:32:58,000 >> Canolbwyntio ar jharvard mewn ysgarlad oherwydd eu bod yn halen yn wahanol. 589 00:32:58,000 --> 00:33:01,000 Mae'r algorithm yn bryderus wrth glywed mewn ffordd y mae'r 590 00:33:01,000 --> 00:33:05,000 hash gwerth, y gwerth amgryptio yn edrych ychydig yn wahanol 591 00:33:05,000 --> 00:33:08,000 oherwydd bod y mewnbynnau yn ychydig yn wahanol, ond y cyfrinair o dan y cwfl 592 00:33:08,000 --> 00:33:10,000 yn dal i fod yn y pen draw rhuddgoch. 593 00:33:10,000 --> 00:33:12,000 Yn awr, sy'n gofalu am hyn? 594 00:33:12,000 --> 00:33:15,000 Wel, rydym yn darparu chi â'r defnyddwyr sampl, sampl enwau defnyddiwr 595 00:33:15,000 --> 00:33:18,000 a hashes eu cyfrineiriau er mwyn i chi mewn gwirionedd yn cael rhywfaint o 596 00:33:18,000 --> 00:33:23,000 gwsmeriaid am CS50 Cyllid pan fyddwch yn gyntaf yn cael oddi ar y ddaear gyda eich cod. 597 00:33:23,000 --> 00:33:27,000 Bydd rhaid i chi weithredu tablau mwy tu mewn MySQL, tu mewn i'r gronfa ddata. 598 00:33:27,000 --> 00:33:30,000 Bydd yn rhaid i greu taenlenni yn fwy, yn effeithiol, ond rydym yn penderfynu rhoi i chi yr un yma 599 00:33:30,000 --> 00:33:33,000 mwyn ichi ddechrau arni, a byddwch yn gweld bod y broblem manyleb set 600 00:33:33,000 --> 00:33:37,000 teithiau cerdded eich tywys trwy'r broses o fewnforio tabl hwn 601 00:33:37,000 --> 00:33:39,000 a hefyd yn egluro ystyr rhai o'r nodweddion yn, 602 00:33:39,000 --> 00:33:41,000 a byddwch hefyd yn gweld ein bod yn darparu chi â'r cod 603 00:33:41,000 --> 00:33:44,000 i drin y stwnsio neu amgryptio cyfrineiriau hyn, 604 00:33:44,000 --> 00:33:49,000 felly nid oes angen i chi boeni gormod am yr hyn MD5 neu debyg mewn gwirionedd popeth am. 605 00:33:49,000 --> 00:33:53,000 >> Felly, SQL, iaith ymholiad strwythuredig. 606 00:33:53,000 --> 00:33:56,000 Mae hyn, yn syml iawn, yr iaith a chi ar fin dechrau ei ddefnyddio yn pset 7 607 00:33:56,000 --> 00:34:01,000 ac efallai y tu hwnt i ofyn am ddata gan rai gronfa ddata. 608 00:34:01,000 --> 00:34:06,000 Mae'r data yn cael, unwaith eto, ei storio tabularly yn y tablau perthynol, colofnau, a rhesi, 609 00:34:06,000 --> 00:34:09,000 ond gan ddefnyddio rhywfaint o gystrawen cymharol syml fel dileu, 610 00:34:09,000 --> 00:34:12,000 Gall mewnosod, diweddaru a dewis rydym yn ei wneud yn union hynny. 611 00:34:12,000 --> 00:34:15,000 Gallwn ddileu o'r gronfa ddata, mewnosod, 612 00:34:15,000 --> 00:34:19,000 diweddaru data, yn ogystal â dewis, hynny yw, adalw data o'r gronfa ddata. 613 00:34:19,000 --> 00:34:21,000 Sut ydym yn mynd ati i wneud hyn? 614 00:34:21,000 --> 00:34:23,000 Gadewch i mi fynd yn ei flaen i mewn i'r ddyfais. 615 00:34:23,000 --> 00:34:28,000 Gadewch i mi dynnu i fyny http://localhost, 616 00:34:28,000 --> 00:34:30,000 sydd, unwaith eto, yn yr offer leol ei hun. 617 00:34:30,000 --> 00:34:32,000 Dyna ei llysenw diofyn. 618 00:34:32,000 --> 00:34:35,000 A gadewch i mi fynd i / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 Mae hyn yn digwydd i fod yn URL arbennig bod y peiriant yn ragosodedig i ddeall 620 00:34:39,000 --> 00:34:42,000 sy'n dod yn union awgrymiadau i mi am enw defnyddiwr a chyfrinair. 621 00:34:42,000 --> 00:34:46,000 >> Fel arfer, dw i'n mynd i deipio jharvard ac ysgarlad, 622 00:34:46,000 --> 00:34:48,000 ond yn sylweddoli bod yn y cyfrif gweinyddwr ar y cyfrifiadur. 623 00:34:48,000 --> 00:34:53,000 Mae'n dim ond cyd-ddigwyddiad bod hefyd yn jharvard gofrestru ar gyfer CS50 Cyllid. 624 00:34:53,000 --> 00:34:56,000 Jharvard, rhuddgoch, rhowch rhoi i mi y rhyngwyneb defnyddiwr a welsom 625 00:34:56,000 --> 00:34:59,000 cipolwg ar hyn o bryd yn ôl, ac mae ychydig yn llethol ar y dechrau, 626 00:34:59,000 --> 00:35:02,000 ond gallaf eich sicrhau, nad ydych yn mynd i gael i chi glicio y rhan fwyaf o'r cysylltiadau yn yr adnodd hwn. 627 00:35:02,000 --> 00:35:05,000 Byddwch yn y pen draw gan ddefnyddio is-set fach sy'n super defnyddiol, 628 00:35:05,000 --> 00:35:08,000 y cyntaf o'r rhain yw cronfeydd data i fyny yma. 629 00:35:08,000 --> 00:35:11,000 Os byddaf yn mynd i fyny i gronfeydd data, yn sylwi fy mod yn annog i greu cronfa ddata. 630 00:35:11,000 --> 00:35:14,000 Mae hyn yn debyg creu ffeil Excel newydd, yn effeithiol. 631 00:35:14,000 --> 00:35:18,000 Rydw i'n mynd i fynd yn ei flaen ac yn galw y ddarlith hon, a Im 'jyst yn mynd i anwybyddu'r maes yno, casglu. 632 00:35:18,000 --> 00:35:20,000 Mae'n rhaid iddo wneud â chynrychiolaeth o ddata ynddo, 633 00:35:20,000 --> 00:35:24,000 ac rydw i'n mynd i glicio creu, ac yn awr gan fy mod yn sylwi gadael i fynd o greu 634 00:35:24,000 --> 00:35:27,000 ar yr ochr chwith lle mae'n dweud dim cronfeydd data 635 00:35:27,000 --> 00:35:30,000 Dylwn fuan yn gweld y gronfa ddata ddarlith. 636 00:35:30,000 --> 00:35:32,000 >> Os wyf yn awr yn clicio ar yr ochr chwith, y gronfa ddata ddarlith, 637 00:35:32,000 --> 00:35:34,000 sylwi ar fy tabs yn newid ychydig. 638 00:35:34,000 --> 00:35:38,000 Mae gen i strwythur, SQL, allforio, mewnforio a rhai pethau eraill. 639 00:35:38,000 --> 00:35:40,000 Strwythur 'n bert lawer yn wag. 640 00:35:40,000 --> 00:35:43,000 Dim tablau gael yn y gronfa ddata, gan ei fod yn dweud yma, 641 00:35:43,000 --> 00:35:47,000 felly gadewch i greu tabl, a gadewch i ni fynd ati i greu tabl 642 00:35:47,000 --> 00:35:53,000 yn hoffi myfyrwyr, a faint o colofnau ydym ei angen? 643 00:35:53,000 --> 00:35:55,000 Gadewch i ni gadw hon 'n annichellgar, a gadewch i ni cofnod ar gyfer pob myfyriwr 644 00:35:55,000 --> 00:35:58,000 yn, rhif ID enw, a chyfeiriad e-bost. 645 00:35:58,000 --> 00:36:02,000 >> Byddwn yn cadw'r cyfan yn syml fel 'na, felly 3 colofn, ewch. 646 00:36:02,000 --> 00:36:05,000 Mae'r ffurflen a welwch yma yn awr ychydig yn flêr ac yn llethol, 647 00:36:05,000 --> 00:36:08,000 ond rydym yn unig rhaid i ni fynd drwyddo olynol gan rhes, fel yn gyflym iawn gadewch i ni roi 648 00:36:08,000 --> 00:36:14,000 y golofn gyntaf yn y gronfa ddata enw o adnabod ar gyfer y dynodwr unigryw. 649 00:36:14,000 --> 00:36:17,000 Bydd yn fod yn gyfanrif. Gall Fi 'n weithredol anwybyddu hyd a gwerthoedd. 650 00:36:17,000 --> 00:36:21,000 Mae int yn mynd i fod yn 32 catiau ni waeth beth ydych deipio i mewn 'na, felly gadewch i ni ei adael yn wag. 651 00:36:21,000 --> 00:36:24,000 Gwerth diofyn, gallwn wneud yn null, fel y'i diffinnir. 652 00:36:24,000 --> 00:36:27,000 Rydw i'n mynd i adael hynny yn unig. Gadewch i ni â phoeni am werthoedd diofyn. 653 00:36:27,000 --> 00:36:29,000 Gadewch i sgrolio dros yma i'r dde, priodoleddau. 654 00:36:29,000 --> 00:36:31,000 Mae hyn yn ddiddorol. 655 00:36:31,000 --> 00:36:33,000 Gadewch i ni fynd yn ei flaen a braidd yn fympwyol yn dweud bod yn rhaid i IDs fod heb eu harwyddo. 656 00:36:33,000 --> 00:36:35,000 Gadewch i ni beidio gwastraffu unrhyw rifau negyddol. 657 00:36:35,000 --> 00:36:37,000 >> Gadewch i ni fynd 0-4000000000, rhoi neu gymryd, 658 00:36:37,000 --> 00:36:40,000 ac yna gadewch i ni chyffwrdd ag unrhyw un o'r meysydd hyn dim ond eto dros yno, 659 00:36:40,000 --> 00:36:43,000 ond yna gadewch i mi deipio i mewn enw i lawr yma, 660 00:36:43,000 --> 00:36:46,000 ac yna y llall yn e-bost, felly mae'r dal yw e-bost 661 00:36:46,000 --> 00:36:50,000 ac enw, yn amlwg nid cyfanrifau, felly gadewch i ni newid y rhain i faes gwahanol. 662 00:36:50,000 --> 00:36:53,000 Mae'n troi allan varchar, hyd newidiol torgoch, 663 00:36:53,000 --> 00:36:56,000 yn debyg i llinyn mewn cronfa ddata SQL 664 00:36:56,000 --> 00:36:59,000 ond hyd newidiol, ac rydych mewn gwirionedd yn rhaid i chi ddweud o flaen llaw y 665 00:36:59,000 --> 00:37:02,000 uchafswm hyd y llinyn, felly dwi'n mynd i braidd yn fympwyol 666 00:37:02,000 --> 00:37:05,000 gan gonfensiwn o'r math 255 characters. 667 00:37:05,000 --> 00:37:08,000 Gallai wyf yn llwyr ddweud 32. Gallwn ddweud 1,000. 668 00:37:08,000 --> 00:37:11,000 Byddwch yn fath o angen i benderfynu drosoch eich hun yn seiliedig ar eich ddemograffeg yr hyn sy'n 669 00:37:11,000 --> 00:37:14,000 enw'r myfyriwr hiraf ac yn mynd â'r rhif hwnnw, neu ychydig yn fwy, 670 00:37:14,000 --> 00:37:17,000 ond yr hyn sy'n braf am varchar yw nid yw'n mynd i wastraff 671 00:37:17,000 --> 00:37:19,000 255 bytes ar enw pob myfyriwr. 672 00:37:19,000 --> 00:37:23,000 Os yw'n DAVID nid yw'n mynd i ddefnyddio 255 bytes gyfan, 673 00:37:23,000 --> 00:37:26,000 ond mae hynny'n rhwymo uchaf, felly byddaf yn mynd gyda 255 yn unig gan gonfensiwn, 674 00:37:26,000 --> 00:37:30,000 ond gallem drafod hynny i fod rhywfaint o werth is, ac ar gyfer cyfeiriad e-bost 675 00:37:30,000 --> 00:37:34,000 dim ond i fod yn gyson 255, ond eto, gallem gael yr un ddadl. 676 00:37:34,000 --> 00:37:36,000 Ond dw i'n mynd i wneud un peth arall dros yma ar yr ochr dde. 677 00:37:36,000 --> 00:37:40,000 >> Beth bwerus am gronfa ddata yw y gall wneud llawer o godi pwysau trwm 678 00:37:40,000 --> 00:37:42,000 neu waith cymhleth i chi. 679 00:37:42,000 --> 00:37:46,000 Yn benodol, i ddim wir yn poeni beth rhifau ID fy myfyrwyr yn cael eu. 680 00:37:46,000 --> 00:37:49,000 Mae wedi golygu dim ond i fod yn dynodwr unigryw mewn cronfa ddata 681 00:37:49,000 --> 00:37:52,000 felly mae gen i gynrychiolaeth cryno 32-bit y myfyriwr hwnnw 682 00:37:52,000 --> 00:37:55,000 fel bod gennyf rywfaint o ffordd o rifau unigryw yn nodi'r eu 683 00:37:55,000 --> 00:37:58,000 rhag yna 2 Tyddewi, er enghraifft, mewn dosbarth. 684 00:37:58,000 --> 00:38:01,000 Yn wir, rwy'n mynd i wirio hyn, blwch AI cynyddiad auto, 685 00:38:01,000 --> 00:38:04,000 fel bod y gronfa ddata, MySQL, ffigurau allan 686 00:38:04,000 --> 00:38:08,000 pa ID pob myfyriwr mewnosod newydd yn cael ei mynd i fod. 687 00:38:08,000 --> 00:38:11,000 Dydw i ddim hyd yn oed yn gorfod gofalu am hynny yn fy cod, 688 00:38:11,000 --> 00:38:13,000 , a dwi hefyd yn mynd i ddewis rhywbeth o dan y ddewislen mynegai. 689 00:38:13,000 --> 00:38:17,000 Mae'r mynegai gollwng i lawr yma wedi cynradd, yn unigryw, 690 00:38:17,000 --> 00:38:19,000 mynegai a thestun llawn. 691 00:38:19,000 --> 00:38:21,000 Gallwch ddyfalu beth efallai un neu ddau o'r pethau hyn yn, 692 00:38:21,000 --> 00:38:24,000 ond mae'n troi allan mewn cronfeydd data perthynol 693 00:38:24,000 --> 00:38:28,000 chi rhaglennydd neu'r gweinyddwr cronfa ddata ddod i preemptively 694 00:38:28,000 --> 00:38:32,000 yn rhoi awgrymiadau at y gronfa ddata ynghylch pa feysydd 695 00:38:32,000 --> 00:38:34,000 mewn tabl yn arbennig bach. 696 00:38:34,000 --> 00:38:37,000 >> Er enghraifft, yn yr achos hwn rwyf i'n mynd i ddweud bod ID 697 00:38:37,000 --> 00:38:42,000 yn mynd i fod yn fynegai sylfaenol, a elwir fel arall fel allwedd gynradd. 698 00:38:42,000 --> 00:38:44,000 Beth mae hyn yn ei olygu wrth ddiffiniad yw bod ID o hyn ymlaen 699 00:38:44,000 --> 00:38:48,000 Bydd adnabod unigryw i fyfyrwyr yn y tabl hwn. 700 00:38:48,000 --> 00:38:53,000 Ni fydd unrhyw fyfyriwr yn cael yr un ID gan fy mod yn gosod cyfyngiad hwn, neu y mynegai hwn. 701 00:38:53,000 --> 00:38:55,000 Ar ben hynny, beth mae hyn yn mynd i wneud i mi yw ei fod yn mynd i ddweud 702 00:38:55,000 --> 00:38:58,000 MySQL bod ID yn arbennig. 703 00:38:58,000 --> 00:39:03,000 Rwy'n gofalu yn arbennig am ID, felly fynd yn ei flaen a gwneud hud eich strwythur data ffansi, yn 704 00:39:03,000 --> 00:39:05,000 adeiladu rhyw fath o goeden. 705 00:39:05,000 --> 00:39:08,000 Fel arfer mae'n rhywbeth a elwir yn y B-coed, a doedden ni ddim yn edrych ar wythnosau yn ôl, 706 00:39:08,000 --> 00:39:11,000 ond mae'n strwythur arall data o'r fath yn debyg o ran ysbryd i'r coed deuaidd 707 00:39:11,000 --> 00:39:15,000 ac yn ceisio ein bod yn edrych ar, ond mae'n mynd i ddweud 708 00:39:15,000 --> 00:39:18,000 i'r gronfa ddata y maes hwn mor bwysig fy mod yn ôl pob tebyg 709 00:39:18,000 --> 00:39:22,000 am fod yn gallu chwilio arno, fynd yn ei flaen ac adeiladu rhai ffansi 710 00:39:22,000 --> 00:39:25,000 strwythur data mewn cof i gyflymu chwiliadau fel bod yn ddelfrydol 711 00:39:25,000 --> 00:39:28,000 eu bod yn cysonyn amser neu o leiaf mor agos i'r hyn a ag y bo modd 712 00:39:28,000 --> 00:39:32,000 fel nad yw'n datganoli i chwiliad llinol, nad yw'n mynd i fod yn 713 00:39:32,000 --> 00:39:34,000 y mwyaf yn perfformio'n uchel dull. 714 00:39:34,000 --> 00:39:37,000 Ar y llaw arall, gallai cyfeiriad e-bost wedi bod yn allweddol cynradd. 715 00:39:37,000 --> 00:39:41,000 >> Mewn theori, cyfeiriad e-bost pawb yn unigryw, oni bai eich bod yn rhannu peth ystyriaeth, 716 00:39:41,000 --> 00:39:45,000 ond nid yw'n dda ar y cyfan i ddefnyddio rhywbeth fel llinyn 717 00:39:45,000 --> 00:39:49,000 fel allwedd gynradd oherwydd os ei bwrpas mewn bywyd yw i adnabod unigryw 718 00:39:49,000 --> 00:39:55,000 rhesi yn eich tabl does dim rheswm i ddefnyddio 255 bytes maximally 719 00:39:55,000 --> 00:39:58,000 i adnabod unigryw rywun os gallwch chi fynd i ffwrdd gyda dim ond 4 bytes 720 00:39:58,000 --> 00:40:00,000 neu int 32-bit. 721 00:40:00,000 --> 00:40:03,000 Yn gyffredinol, dylai allweddol cynradd fod yn fyr ac yn gryno 722 00:40:03,000 --> 00:40:07,000 ac yn ddelfrydol rhywbeth fel cyfanrif neu int mawr, sy'n digwydd bod yn 64 did. 723 00:40:07,000 --> 00:40:11,000 Ond dylai'r cyfeiriad e-bost fod yn unigryw, ac yn un o nodweddion cronfa ddata yn rhy 724 00:40:11,000 --> 00:40:14,000 yw gorfodi unigryw i mi. 725 00:40:14,000 --> 00:40:18,000 Drwy ddewis unigryw yma nesaf i e-bost, er bod e-bost ei hun 726 00:40:18,000 --> 00:40:21,000 yn cael ei sgrolio bant o'r sgrin, rwy'n dweud wrth y gronfa ddata 727 00:40:21,000 --> 00:40:23,000 nid ydynt yn ymddiried ynof. 728 00:40:23,000 --> 00:40:26,000 Peidiwch â gadael i mi mewnosod i mewn i'r gronfa ddata 729 00:40:26,000 --> 00:40:29,000 cyfeiriad e-bost un ddwywaith, hyd yn oed os ydw i'n idiot ac nid wyf 730 00:40:29,000 --> 00:40:32,000 dda iawn gyda fy os ac petai arall a chod PHP gwirioneddol 731 00:40:32,000 --> 00:40:37,000 ac yr wyf yn ddamweiniol gadael i'r defnyddiwr gofrestru gyda chyfeiriad e-bost sy'n bodoli eisoes 732 00:40:37,000 --> 00:40:40,000 y gronfa ddata arall eto lefel o amddiffyniad ar gyfer cywirdeb 733 00:40:40,000 --> 00:40:44,000 er mwyn sicrhau nad yw'r cyfeiriad e-bost dyblyg yn dod i ben i fyny yn y tabl. 734 00:40:44,000 --> 00:40:49,000 >> Yn awr, mewn cyferbyniad, am enw mae'n debyg nad ydych eisiau gwneud hynny'n unigryw 735 00:40:49,000 --> 00:40:51,000 oherwydd wedyn ni fyddai yna 2 Davids neu 2 Smiths Mike, er enghraifft, 736 00:40:51,000 --> 00:40:55,000 yn eich cronfa ddata, fel bod un byddwn yn unig yn gadael ei ben ei hun. 737 00:40:55,000 --> 00:40:58,000 Rydw i'n mynd i fynd yn ei flaen a chliciwch achub ar y dde gwaelod, 738 00:40:58,000 --> 00:41:02,000 a phopeth yn edrych yn dda, ond sylwi yma 739 00:41:02,000 --> 00:41:04,000 mae hyn yn rhan y ar hyn o bryd ni fyddwn yn treulio gormod o amser ar 740 00:41:04,000 --> 00:41:07,000 oherwydd bod y gystrawen yn braidd yn gymhleth, ac nid oes gennym i greu tablau 741 00:41:07,000 --> 00:41:10,000 aml â hynny, ond SQL ei hun yn iaith, 742 00:41:10,000 --> 00:41:13,000 y gystrawen y iawn yma fy mod i wedi tynnu sylw atynt. 743 00:41:13,000 --> 00:41:18,000 Pa phpMyAdmin mewn gwirionedd yn ei wneud yw ei fod yn creu GUI we i chi 744 00:41:18,000 --> 00:41:23,000 gyda y gallwch arbed amser ac nid rhaid i manually deipio 745 00:41:23,000 --> 00:41:26,000 ymholiad cymharol hir SQL fel 'na. 746 00:41:26,000 --> 00:41:29,000 >> Mewn geiriau eraill, os ydych am â llaw yn creu y tabl hwn, 747 00:41:29,000 --> 00:41:32,000 naill ai ar y phpMyAdmin du a gwyn yn brydlon, neu hyd yn oed mewn 748 00:41:32,000 --> 00:41:35,000 drwy ddefnyddio'r tab arall, mae'r tab SQL lle gallwch deipio unrhyw ymholiadau SQL 749 00:41:35,000 --> 00:41:38,000 rydych eisiau, a dweud y gwir, byddai hyn wedi cymryd munud imi 750 00:41:38,000 --> 00:41:41,000 i mewn gwirionedd yn cofio'r cystrawen gyfan, a hyd yn oed wedyn mi fyddai'n fwy na thebyg wedi 751 00:41:41,000 --> 00:41:45,000 gwneud rhai camgymeriadau teipio, felly yr offeryn hwn yn ddefnyddiol ar gyfer pethau fel hynny, ac mae hefyd yn addysgiadol. 752 00:41:45,000 --> 00:41:49,000 Gallwch ddechrau benderfynu beth yw'r gystrawen yn 753 00:41:49,000 --> 00:41:52,000 yn unig gan y lliw 'n glws codio bod phpMyAdmin yn ychwanegu 754 00:41:52,000 --> 00:41:54,000 ar gyfer ein cyfleustra gweledol. 755 00:41:54,000 --> 00:41:56,000 Ond yn awr, gadewch i ni wneud hyn yn lle hynny. 756 00:41:56,000 --> 00:42:00,000 Gadewch i mi fynd at y tab mewnosoder ar y brig, a gadewch i mi fynd yn ei flaen ac yn mewnosod, am enghraifft 757 00:42:00,000 --> 00:42:04,000 ID o gadewch i ni ddweud-mewn gwirionedd nid wyf yn poeni. 758 00:42:04,000 --> 00:42:07,000 Mae'n mynd i cynyddiad auto. Rydw i'n mynd i adael i'r gronfa ddata ddelio â hyn. 759 00:42:07,000 --> 00:42:11,000 Ond byddaf yn David, a dylai fy e-bost fod yn malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Gadewch i ni fynd yn ei flaen yma a'i roi yn Mike Smith fel un arall. 761 00:42:16,000 --> 00:42:18,000 Byddaf yn rhoi fy hun yn enw diwethaf yn ogystal, 762 00:42:18,000 --> 00:42:22,000 a byddwn wedi iddo fod yn smith@example.com, 763 00:42:22,000 --> 00:42:24,000 ac yna ble ydw i'n mynd nesaf? 764 00:42:24,000 --> 00:42:27,000 Wel, mae'n edrych fel mynd yw'r botwm i glicio, a voila. 765 00:42:27,000 --> 00:42:30,000 Hysbysiad ar y 2 res uchaf fewnosod. 766 00:42:30,000 --> 00:42:32,000 Mae hyn yn yr ymholiad SQL go iawn. 767 00:42:32,000 --> 00:42:36,000 Dyna yr offeryn phpMyAdmin gweithredu i mi, 768 00:42:36,000 --> 00:42:40,000 ond y canlyniad terfynol, hysbysiad, os wyf yn awr yn mynd i'r tab browse, 769 00:42:40,000 --> 00:42:43,000 yw gweld 2 res yn y tabl hwn, yn atgoffa rhywun esthetaidd 770 00:42:43,000 --> 00:42:46,000 y tabl a welsom yn gynharach ar gyfer ein defnyddwyr o pset 7, 771 00:42:46,000 --> 00:42:51,000 un ohonynt yw David Malan, un ohonynt yn awr yw Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Ond dim ond i fod yn glir, nid oes angen i mi ddefnyddio phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 ac yn wir, rydych chi'n mynd i cyn bo hir yn ysgrifennu cod ar gyfer pset 7 774 00:42:56,000 --> 00:43:01,000 sy'n awtomeiddio'r broses o ychwanegu rhesi, dileu rhesi, diweddaru rhesi ac ati, 775 00:43:01,000 --> 00:43:04,000 felly gadewch i mi yn hytrach na mynd i'r tab SQL yma 776 00:43:04,000 --> 00:43:14,000 a theipiwch * dethol gan fyfyrwyr lle 777 00:43:14,000 --> 00:43:18,000 e-bost = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Mewn geiriau eraill mae'n debyg yn awr gennych 779 00:43:21,000 --> 00:43:26,000 rhyw fath HTML, a'r mathau defnyddwyr yn eu cyfeiriad e-bost, ymysg meysydd eraill, 780 00:43:26,000 --> 00:43:29,000 a'r nod yn awr yw yn PHP ar y cod pen-ôl 781 00:43:29,000 --> 00:43:31,000 i mewn gwirionedd yn edrych i fyny manylion y defnyddiwr eraill. 782 00:43:31,000 --> 00:43:34,000 Beth yw eich enw llawn? Beth yw eich rhif ID? 783 00:43:34,000 --> 00:43:37,000 Gallech ysgrifennu ymholiad SQL fel hyn, dewiswch * gan fyfyrwyr 784 00:43:37,000 --> 00:43:40,000 lle e-bost = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Ac os wyf cliciwch wedyn yn mynd, sylwch y dylwn, ac yn wir yr wyf yn ei wneud, fynd yn ôl dim ond un rhes. 786 00:43:46,000 --> 00:43:50,000 Mae Mike yn hepgor o'r set hon ganlyniad, gan fod y casgliad o resi 787 00:43:50,000 --> 00:43:53,000 elwir yn gyffredinol, am nad yw'n cael yr un cyfeiriad e-bost â mi. 788 00:43:53,000 --> 00:43:57,000 >> Nawr, unwaith eto, yma i pset 7 byddwch yn defnyddio phpMyAdmin fel offeryn gweinyddol 789 00:43:57,000 --> 00:44:00,000 ac yn offeryn addysgol i ddysgu eich ffordd 790 00:44:00,000 --> 00:44:03,000 o amgylch y byd SQL, ond ar ddiwedd y dydd 791 00:44:03,000 --> 00:44:08,000 rydych yn mynd i gael ei ysgrifennu ymholiadau hyn tu mewn gwirioneddol PHP cod, 792 00:44:08,000 --> 00:44:11,000 ac felly yn aros tiwnio yn Zamyla yn walkthrough yn arbennig 793 00:44:11,000 --> 00:44:14,000 lle byddwch yn cael taith o amgylch y cod dosbarthu ar gyfer y set hon problem 794 00:44:14,000 --> 00:44:18,000 lle'r ydym wedi ei roi i chi nid yn unig y estheteg ar gyfer y dudalen mewngofnodi 795 00:44:18,000 --> 00:44:21,000 ac mae'r logo sexy 'n glws sy'n dweud CS50 Cyllid, ond rydym hefyd wedi rhoi i chi 796 00:44:21,000 --> 00:44:24,000 criw o swyddogaethau a fydd yn gwneud eich bywyd ychydig yn haws. 797 00:44:24,000 --> 00:44:27,000 Rydyn ni wedi ysgrifennu hefyd yn rhan o'r pset i chi, 798 00:44:27,000 --> 00:44:32,000 y rhan mewngofnodi ohono yn benodol, er mwyn rhoi syniad i chi o ddyluniad cynrychioliadol 799 00:44:32,000 --> 00:44:36,000 sydd mewn gwirionedd yn defnyddio rheolwr, ar gyfer, index.php enghraifft, 800 00:44:36,000 --> 00:44:40,000 login.php ac yn y blaen, ac yna byddwch yn gweld y pset hefyd gyfeiriadur patrymluniau 801 00:44:40,000 --> 00:44:43,000 sydd wedi eich holl sylwadau, yr holl estheteg. 802 00:44:43,000 --> 00:44:46,000 Ac felly y llif gwaith cyffredinol mewn pset 7 yn mynd i fod yn y 803 00:44:46,000 --> 00:44:49,000 eich defnyddwyr yn ymweld â rheolwr drwy URL mewn porwr. 804 00:44:49,000 --> 00:44:53,000 Bod rheolwr yn cynnwys cod PHP eich bod wedi ysgrifennu, ac y tu mewn eich cod PHP 805 00:44:53,000 --> 00:44:57,000 gallai fod rhai llinellau o SQL nythu rhwng dyfynodau dwbl 806 00:44:57,000 --> 00:45:00,000 a'i drosglwyddo i'r swyddogaeth wnaethom ysgrifennu ymholiad a elwir yn 807 00:45:00,000 --> 00:45:03,000 a fydd yn eich helpu i siarad â'r gronfa ddata heb ddefnyddio rhywbeth fel 808 00:45:03,000 --> 00:45:05,000 offeryn gweinyddol fel phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Byddwch yn gallu ysgrifennu datganiadau SQL yn PHP cod 810 00:45:08,000 --> 00:45:11,000 a mynd yn ôl amrywiaeth PHP o'r set canlyniad, 811 00:45:11,000 --> 00:45:14,000 o'r rhesi sydd mewn gwirionedd yn cyfateb i'r ymholiad. 812 00:45:14,000 --> 00:45:18,000 A bydd yn yr un modd byddwch yn gallu gwneud mewnosod neu dileu 813 00:45:18,000 --> 00:45:22,000 neu ddiweddariadau neu yn y blaen, y gystrawen y yn eithaf tebyg, 814 00:45:22,000 --> 00:45:25,000 a byddwch yn gweld o rai cyfeiriadau ar-lein, gan y cod dosbarthu 815 00:45:25,000 --> 00:45:29,000 ac o'r pset pecyn ei hun yn union sut i fynd ati i wneud hynny. 816 00:45:29,000 --> 00:45:33,000 Sylweddoli y pen draw rydym yn wir dim ond crafu wyneb SQL 817 00:45:33,000 --> 00:45:36,000 a MySQL, ond grym y mae mewn gwirionedd yw ei fod yn rhyddhau eich 818 00:45:36,000 --> 00:45:40,000 i ganolbwyntio ar y problemau yr ydych am ei datrys, yr achosion defnydd yr ydych am i weithredu 819 00:45:40,000 --> 00:45:43,000 heb orfod poeni yn eithaf cymaint, o leiaf yn gynnar, 820 00:45:43,000 --> 00:45:47,000 am ble a sut i storio a chwilio eich cronfa ddata, 821 00:45:47,000 --> 00:45:50,000 ac mae hyn yn eithaf llythrennol lle cafodd Facebook ei hun ei ddechrau 822 00:45:50,000 --> 00:45:53,000 defnyddio MySQL ac yna defnyddio gweinyddion MySQL arall ac yna gweinyddwyr MySQL yn fwy 823 00:45:53,000 --> 00:45:57,000 cyn bo hir nes eu bod wedyn roedd yn rhaid i wir yn dechrau meddwl yn galed am sut i 824 00:45:57,000 --> 00:46:00,000 storio data, sut i storio pethau hyd yn oed yn fwy effeithlon, 825 00:46:00,000 --> 00:46:04,000 felly hyd yn oed er y byddwn yn cymryd yn ganiataol y ffaith bod mynegeion a chyfyngiadau unigryw 826 00:46:04,000 --> 00:46:08,000 ac yn y blaen dim ond gwaith mae sgwrs ddiddorol iawn 827 00:46:08,000 --> 00:46:12,000 y gall hyn i gyd yn y pen draw yn arwain at, er sylweddoli ein bod dim ond crafu'r wyneb 828 00:46:12,000 --> 00:46:17,000 Gallai yr hyn yn y pen draw ar eich cyfer chi neu eich prosiectau yn dod yn gryn dipyn o ddata mawr. 829 00:46:17,000 --> 00:46:22,000 >> Gyda dweud hynny, gadewch i ni dod i ben yma, ac fe welwn ni chi wythnos nesaf. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]