1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8 Linggo, ipinagpatuloy] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Ito ay CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Ito ay CS50, kaya ito ay ang katapusan ng Linggo 8 dito. 5 00:00:13,000 --> 00:00:16,000 Namin siyempre ay isang bit ng isang unos mas maaga sa linggong ito, 6 00:00:16,000 --> 00:00:19,000 kaya ngayon ay talagang lamang sa iyo at sa akin sa lecture hall na ito, 7 00:00:19,000 --> 00:00:22,000 ngunit ngayon ay patuloy namin ang ating pag-uusap tungkol sa PHP 8 00:00:22,000 --> 00:00:25,000 at tungkol sa web programming mas pangkalahatang, at din namin ipakilala ang ideya 9 00:00:25,000 --> 00:00:29,000 ng mga database, lalo na ang isa na tinatawag na MySQL, na medyo popular na mga araw na ito, 10 00:00:29,000 --> 00:00:34,000 sa malaking bahagi dahil nito kakayahang sumukat pati na rin dahil ang pagiging libre at open source. 11 00:00:34,000 --> 00:00:37,000 >> Ngunit una, isang pagtingin sa kung saan kami tumigil huling beses. 12 00:00:37,000 --> 00:00:40,000 Manariwa sa diwa na namin hinahanap sa ilang mga halimbawa ng Frosh IMs, 13 00:00:40,000 --> 00:00:44,000 at ito ay ang kakila-kilabot na anyo na ako dumating na may ilang 15 + taon na ang nakakaraan 14 00:00:44,000 --> 00:00:49,000 upang magkaroon ng mga mag-aaral sa campus rehistro para sa presman nasa loob ng lunsod sports 15 00:00:49,000 --> 00:00:52,000 walang aktwal na pagkakaroon sa paglalakbay na ito sa kabuuan ng bakuran sa Wigglesworth 16 00:00:52,000 --> 00:00:56,000 sa slide ng isang pisikal na piraso ng papel sa ilalim ng pinto ilang Proctor. 17 00:00:56,000 --> 00:00:59,000 Sa halip inilipat namin ang lahat ng online, ngunit upang gawin na kailangan namin upang gamitin 18 00:00:59,000 --> 00:01:03,000 ng ilang mga teknolohiya, kaya isa, kailangan namin ang HTML, hypertext markup language, 19 00:01:03,000 --> 00:01:07,000 na muli ang markup language na ito na gumawa ka ng mga web page structurally. 20 00:01:07,000 --> 00:01:10,000 >> Paggamit ng isang bit ng CSS mga araw na ito, cascading ng mga style sheet, 21 00:01:10,000 --> 00:01:16,000 kung saan namin ang stylizations ng web page gamit ang isang bahagyang naiiba syntax, 22 00:01:16,000 --> 00:01:19,000 samantalang ang HTML ay ang lahat tungkol sa istraktura nito. 23 00:01:19,000 --> 00:01:21,000 Kailangan din namin upang maipakilala ang isang web programming wika. 24 00:01:21,000 --> 00:01:25,000 Sa kasong ito, makikita namin ang PHP, at PHP ay upang payagan sa amin 25 00:01:25,000 --> 00:01:28,000 sa dynamic na nilalaman sa output pati na rin ang gumawa ng mga program bagay tulad ng 26 00:01:28,000 --> 00:01:33,000 pagpapadala ng mga email, tulad ng kaso sa tandaan na iniwanan namin noong nakaraang linggo. 27 00:01:33,000 --> 00:01:35,000 >> Manariwa sa diwa na ang code para sa sa 2 bahagi. 28 00:01:35,000 --> 00:01:38,000 Isa, nagkaroon kami froshims3.php, 29 00:01:38,000 --> 00:01:42,000 at ito ay higit sa lahat markup sa isang HTML form sa loob nito, 30 00:01:42,000 --> 00:01:45,000 isang napakaliit na bit ng CSS dito hanggang sa ang mga katangian ng estilo 31 00:01:45,000 --> 00:01:48,000 sa gayon ay ang form mismo ay nakasentro sa pahina, ngunit lampas na 32 00:01:48,000 --> 00:01:51,000 nagkaroon kami ng ilang mga kinatawan form na input, isang patlang ng teksto, isang checkbox, 33 00:01:51,000 --> 00:01:55,000 ilang mga radio button, piliin ang menu, at isumite pindutan. 34 00:01:55,000 --> 00:02:01,000 At sa pamamagitan ng form na ito, kami ay isinumite sa isang file na tila tinatawag register3.php, 35 00:02:01,000 --> 00:02:04,000 kung saan mismo ang tumingin ng isang maliit na bagay tulad nito. 36 00:02:04,000 --> 00:02:08,000 Ngayon, karamihan ng code sa register3.php, manariwa sa diwa, ay ang lahat tungkol sa email. 37 00:02:08,000 --> 00:02:11,000 Ginawa ito ng kaunting pagpapatunay ng form na isinumite upang matiyak 38 00:02:11,000 --> 00:02:14,000 na ang mga patlang ay aktwal na ibinigay na inaasahan. 39 00:02:14,000 --> 00:02:18,000 Pagkatapos namin tinatawag ilang PHP function gamit ang bahagyang bagong syntax, 40 00:02:18,000 --> 00:02:20,000 kahit na ito ay hiram mula sa C. 41 00:02:20,000 --> 00:02:24,000 >> Arrow operator na ito ay nagbibigay-daan sa amin upang gumawa ng paggamit ng isang bagay na tinatawag na object-oriented programming. 42 00:02:24,000 --> 00:02:27,000 Hindi namin pumunta sa na sa anumang detalye dito, ngunit alam sa ngayon 43 00:02:27,000 --> 00:02:31,000 ito ay isang paraan ng pagkakaroon ng mga function na nauugnay na may mga bagay, 44 00:02:31,000 --> 00:02:34,000 kung saan ay isang espesyal na uri ng istraktura, tulad ng nakita natin sa C. 45 00:02:34,000 --> 00:02:37,000 Ngunit sa ngayon, lang ang dadalhin sa pananampalataya na ito ay ang tamang syntax upang gamitin ang 46 00:02:37,000 --> 00:02:41,000 kapag gumagamit ng library tulad PHPMailer library na ito. 47 00:02:41,000 --> 00:02:44,000 At pagkatapos ng dulo ng file na ito dynamic na namin nabuo ng isang email 48 00:02:44,000 --> 00:02:47,000 na Nakakuha ipinadala sa aking jharvard@cs50.net account 49 00:02:47,000 --> 00:02:50,000 mula sa aking account sa jharvard@cs50.net, 50 00:02:50,000 --> 00:02:54,000 at aming pinaalam sa user naaayon na sila ay nakarehistro para sa sport. 51 00:02:54,000 --> 00:02:57,000 Na ay medyo magkano kung ano ang site Frosh IMs ginawa lahat ng mga taon na ang nakakaraan 52 00:02:57,000 --> 00:03:00,000 kapag naipatupad ko ito, ipinagkaloob, sa isang ibang wika, 53 00:03:00,000 --> 00:03:02,000 ngunit ito ay nagpapakita sa iyo marahil ang kapangyarihan na mayroon kang 54 00:03:02,000 --> 00:03:05,000 ngayon na maaari mong ipahayag ang iyong sarili hindi lamang sa programa 55 00:03:05,000 --> 00:03:08,000 sa isang mababang antas sa isang wika tulad ng C ngunit sa isang mas mas mataas na antas 56 00:03:08,000 --> 00:03:11,000 may mga tunay na mundo application tulad ng email sa aktwal na malutas 57 00:03:11,000 --> 00:03:13,000 ilang totoong mundo problema. 58 00:03:13,000 --> 00:03:16,000 >> Ngayon, siyempre, kahit gamitin ko ang script na ito upang bumuo ng ilang 59 00:03:16,000 --> 00:03:20,000 email dynamic mula jharvard@cs50.net, na kung saan ay sa katunayan ng isang account 60 00:03:20,000 --> 00:03:23,000 na mayroon akong access sa, huwag maging maingat upang magpadala ng 61 00:03:23,000 --> 00:03:26,000 mail lamang mula sa mga account na aktwal na ang iyong sariling, 62 00:03:26,000 --> 00:03:30,000 baka bagay na makakakuha ka sa isang bit ng mainit na tubig sa buhay. 63 00:03:30,000 --> 00:03:35,000 Gamit na sinabi, sabihin ngayon lumipat sa paglutas ng ibang problema sa kabuuan, 64 00:03:35,000 --> 00:03:37,000 na ng napananatili ang estado. 65 00:03:37,000 --> 00:03:39,000 Ngayon, ano ang aktwal ibig sabihin? 66 00:03:39,000 --> 00:03:42,000 HTTP, ito hypertext transfer protocol, 67 00:03:42,000 --> 00:03:45,000 ay talagang isang stateless protocol, at kung ano ang Nangangahulugan itong na 68 00:03:45,000 --> 00:03:48,000 kapag ikaw ay makuha ang isang bagay tulad ng Google.com at pagkatapos ay pindutin ang enter 69 00:03:48,000 --> 00:03:51,000 karaniwang ang iyong browser ay may ilang uri ng Umiikot na icon na pagkatapos 70 00:03:51,000 --> 00:03:54,000 mga resulta sa ilang mga pahina ng web na-download, 71 00:03:54,000 --> 00:03:57,000 at pagkatapos na maliit na icon hinto Umiikot na, at na sa katunayan ay nagmumungkahi 72 00:03:57,000 --> 00:04:02,000 na HTTP makumpleto ang ilang mga uri ng koneksyon sa server at na ito. 73 00:04:02,000 --> 00:04:05,000 HTTP ay stateless sa pakiramdam na ito ay hindi mapanatili ang 74 00:04:05,000 --> 00:04:08,000 ng paulit-ulit na koneksyon sa server sa parehong paraan Skype ang 75 00:04:08,000 --> 00:04:11,000 o Gchat ginagawa dahil may HTTP 76 00:04:11,000 --> 00:04:15,000 palagay ay na sa sandaling mo na nakuha ng isang web page na ito. 77 00:04:15,000 --> 00:04:18,000 >> Ngayon, sa katotohanan mga araw na ito sa mga site tulad ng Facebook at Google Maps 78 00:04:18,000 --> 00:04:21,000 at Twitter at tulad ng maraming higit pa dynamism kung saan 79 00:04:21,000 --> 00:04:25,000 kahit na pagkatapos icon na humihinto Umiikot na maaari mong sa katunayan makakuha ng higit pang mga update 80 00:04:25,000 --> 00:04:29,000 mula sa server, higit pang mga tweet, higit pang mga update sa katayuan sa Facebook at ang mga tulad ng. 81 00:04:29,000 --> 00:04:33,000 Ngunit kahit na gamit ang isang diskarte na namin makipag-usap tungkol sa isang linggo o dalawang 82 00:04:33,000 --> 00:04:36,000 kilala bilang Ajax gamit ang isang wika na tinatawag na JavaScript, 83 00:04:36,000 --> 00:04:38,000 ngunit sa pagtatapos ng araw, HTTP ay pa rin stateless. 84 00:04:38,000 --> 00:04:42,000 At pa kung gusto mong sa paanuman tandaan ang mga bagay tungkol sa isang user 85 00:04:42,000 --> 00:04:44,000 kahit na matapos sila na-disconnect mula sa iyong server 86 00:04:44,000 --> 00:04:47,000 PHP ang bayaran ka ng isang paraan ng paggawa nito 87 00:04:47,000 --> 00:04:52,000 dahil, tulad ng nakita natin ang huling beses, PHP ay may isang bilang ng mga superglobals, 88 00:04:52,000 --> 00:04:55,000 at isang superglobal, muli, isang espesyal na global variable 89 00:04:55,000 --> 00:04:59,000 na ipinasa sa iyo ng server ng web at sa pamamagitan ng PHP mismo. 90 00:04:59,000 --> 00:05:02,000 >> Hindi mo kailangang gawin upang ilagay ang mga halaga sa loob nito, 91 00:05:02,000 --> 00:05:05,000 at kabilang sa mga superglobals nasaksihan namin sa gayon malayo makakuha at mag-post, 92 00:05:05,000 --> 00:05:08,000 na kung saan ang form na mga patlang ay ilagay nang awtomatiko para sa iyo, 93 00:05:08,000 --> 00:05:11,000 pati na rin ng ilang mga iba na hindi namin nakita pa. 94 00:05:11,000 --> 00:05:17,000 Sa loob ng $ _server ang ilang mga espesyal na variable na may kaugnayan sa mismong server. 95 00:05:17,000 --> 00:05:22,000 Ano ang IP address, kung ano ang protocol, HTTP o HTTPS mong gamitin, 96 00:05:22,000 --> 00:05:25,000 anong kahilingan paraan ng mo gamitin at tulad, kaya ang ilang mga kawili-wiling, 97 00:05:25,000 --> 00:05:29,000 makatas mga detalye tungkol sa server, at sa katunayan, ang user sa doon pati na rin. 98 00:05:29,000 --> 00:05:33,000 May $ _cookie, na kung saan ang mga bagay na ito na tinatawag na cookies ay nakaimbak. 99 00:05:33,000 --> 00:05:36,000 Hindi namin magpalipas ng oras sa mga cookies ang kanilang mga sarili ngayon, 100 00:05:36,000 --> 00:05:40,000 ngunit alam sa ngayon na ang isang cookie ay lamang ng isang maliit na piraso ng impormasyon 101 00:05:40,000 --> 00:05:43,000 na ang isang web server Plant sa isang web browser 102 00:05:43,000 --> 00:05:46,000 at sa lumiko nito RAM o hard drive nito computer 103 00:05:46,000 --> 00:05:49,000 upang mag-imbak ng impormasyon tungkol sa isang user, halimbawa, ang kanilang mga user name 104 00:05:49,000 --> 00:05:52,000 upang hindi sila kailangang i-type ito sa tuwing mag-log in o ilang 105 00:05:52,000 --> 00:05:55,000 natatanging numero o identifier para sa gumagamit na iyon 106 00:05:55,000 --> 00:05:58,000 sa gayon ay hindi mo upang inisin ang mga ito na may parehong uri ng mga katanungan tungkol sa 107 00:05:58,000 --> 00:06:00,000 mga kagustuhan sa hinaharap, ngunit karamihan ng interes 108 00:06:00,000 --> 00:06:02,000 ngayon ay $ _session. 109 00:06:02,000 --> 00:06:07,000 >> Ang superglobal na ito, na, tulad ng iba, ay ipinasa sa iyo nang awtomatiko sa pamamagitan ng PHP 110 00:06:07,000 --> 00:06:10,000 kapag sumusulat ka PHP-based na mga website 111 00:06:10,000 --> 00:06:13,000 maaaring iimbak ng anumang nais mo, string, integer, 112 00:06:13,000 --> 00:06:16,000 lumulutang na puntos, mga halaga, array, mga bagay, 113 00:06:16,000 --> 00:06:20,000 talagang anumang bagay na gusto mo, at ito ay nagbibigay-daan sa iyo upang mag-imbak ang mga ito sa paraang 114 00:06:20,000 --> 00:06:23,000 na kahit na binisita ng user ang mo na ngayon at pagkatapos ay 115 00:06:23,000 --> 00:06:26,000 ay isang minuto mula ngayon o 5 minuto mula ngayon dahil 116 00:06:26,000 --> 00:06:28,000 nila ang kanilang oras bago ng pag-click sa ilang iba pang mga link 117 00:06:28,000 --> 00:06:32,000 PHP ay matiyak na ang anumang inilagay mo sa session na superglobal 118 00:06:32,000 --> 00:06:37,000 isang minuto o 5 minutong nakalipas ay pa rin doon kapag ang return ng user. 119 00:06:37,000 --> 00:06:40,000 At sa ilalim ng hood ang superglobal ito ay ipinatupad sa pamamagitan ng paraan ng 120 00:06:40,000 --> 00:06:44,000 mga bagay na tinatawag na mga cookies, ngunit sa ngayon, ito lamang ay isang abstraction 121 00:06:44,000 --> 00:06:47,000 kung saan ang uri ng program katumbas ng isang shopping cart. 122 00:06:47,000 --> 00:06:50,000 Anuman mo, programmer, ilagay sa na 123 00:06:50,000 --> 00:06:53,000 superglobal nag-uugnay array ay mayroong ilang bilang ng mga minuto sa ibang pagkakataon 124 00:06:53,000 --> 00:06:59,000 hanggang sa tanggalin mo ito o hanggang tabla ng user ang kanyang browser kabuuan. 125 00:06:59,000 --> 00:07:02,000 >> Natin tingnan ang isang halimbawa ng kung paano ang bagay na ito ay aktwal na ginagamit. 126 00:07:02,000 --> 00:07:07,000 Sa counter.php kabilang ngayon ang mga piraso ng code 127 00:07:07,000 --> 00:07:09,000 Mayroon namin ang sumusunod na linya. 128 00:07:09,000 --> 00:07:13,000 Sa simula ng file na ito ay may namin ng grupo ng mga asul na mga komento, na hindi kawili-wili para sa ngayon. 129 00:07:13,000 --> 00:07:15,000 Ngunit sa linya 13 mayroon kaming isang bagong linya, 130 00:07:15,000 --> 00:07:18,000 session_start, at na aktwal na ginagawa ng eksakto kung ano ang sinasabi nito. 131 00:07:18,000 --> 00:07:20,000 Nagsisimula ito session. 132 00:07:20,000 --> 00:07:25,000 Ay nagbibigay-daan sa iyo upang gamitin na malaki superglobal $ _session, at ito ay kasing simple ng na. 133 00:07:25,000 --> 00:07:30,000 Ngayon, kung magpatuloy namin upang tumingin sa linya 16, sabihin subukan upang malaman kung ano ang web page na ito ay pagpunta sa gawin. 134 00:07:30,000 --> 00:07:35,000 Kung (isset ($ _SESSION ["counter"]) pagkatapos ay magpatuloy 135 00:07:35,000 --> 00:07:39,000 at tindahan sa counter variable, lowercase counter, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 Mukhang na deklarasyon isang lokal na variable na tinatawag na counter 138 00:07:45,000 --> 00:07:48,000 sa loob ng na ito ng paglalagay ng kopya ng anumang loob ng superglobal 139 00:07:48,000 --> 00:07:52,000 tinatawag na sesyon sa lokasyon "counter." 140 00:07:52,000 --> 00:07:56,000 Iba Pa, tila, ito maliit na lokal na variable counter, ay nasimulan sa 0. 141 00:07:56,000 --> 00:08:01,000 >> Ngunit pagkatapos ng ilang linya sa ibang pagkakataon sa 26 paunawa na ang kopya ng session ng counter, 142 00:08:01,000 --> 00:08:06,000 key nito, ay may isang bagong halaga ng itinalaga na nito kasalukuyang halaga plus 1. 143 00:08:06,000 --> 00:08:09,000 Sa maikli, ang file na ito ay tila na pag-update 144 00:08:09,000 --> 00:08:13,000 isang counter na naka-imbak sa loob ng superglobal session 145 00:08:13,000 --> 00:08:16,000 sa pamamagitan ng incrementing ito ng 1, ngunit ito unang napapanatili ng kopya ng nakaraang halaga 146 00:08:16,000 --> 00:08:20,000 sa pamamagitan ng pag-iimbak ng mga ito sa isang lokal na variable na tinatawag na $ counter, 147 00:08:20,000 --> 00:08:22,000 at pagkatapos ay down na dito sabihin makita kung ano ang nananatiling. 148 00:08:22,000 --> 00:08:24,000 Ito lumiliko out ito ay medyo mas lamang HTML. 149 00:08:24,000 --> 00:08:29,000 Sa ibaba ng pahinang ito na nakikita namin sa linya 37 na ako bumisita sa site na ito 150 00:08:29,000 --> 00:08:33,000 sagot na bilang ng beses, kaya may ilang kawili-wiling tampok dito. 151 00:08:33,000 --> 00:08:36,000 Isa, ito ay malinaw na variable, ngunit hindi ito sumapat lang ilagay 152 00:08:36,000 --> 00:08:39,000 $ Counter sa katawan ng iyong HTML dahil siyempre 153 00:08:39,000 --> 00:08:43,000 kung ito lamang doon kasama ng iyong HTML PHP ay ipinapalagay na lamang HTML. 154 00:08:43,000 --> 00:08:48,000 Gusto mong literal $ counter na ipi-print sa screen. 155 00:08:48,000 --> 00:08:51,000 >> Ngunit sa halip sa pamamagitan ng pag-drop sa PHP mode 156 00:08:51,000 --> 00:08:55,000 na ito piraso ng syntax namin dynamic na magpasok ng isang halaga dito 157 00:08:55,000 --> 00:08:58,000 na halos kapareho sa espiritu sa kung ano ang ginawa namin huling beses na may 158 00:08:58,000 --> 00:09:00,000 pagpasok ng mga halaga sa mga string. 159 00:09:00,000 --> 00:09:04,000 Sa katunayan, ito ay isang shorthand notation para sa sinasabi ng isang bagay tulad nito literal, 160 00:09:04,000 --> 00:09:12,000 naka-print ($ counter) o kahit na isang bagay tulad ng printf (% s, counter), 161 00:09:12,000 --> 00:09:14,000 o kahit na, bilang maaaring nakakita ka online o sa mga aklat-aralin, 162 00:09:14,000 --> 00:09:17,000 may isang function sa PHP tinatawag na echo 163 00:09:17,000 --> 00:09:20,000 kung saan ipinapakita ang parehong bagay, at ang lahat ng mga lamang na paghinga na mga paraan 164 00:09:20,000 --> 00:09:25,000 ng pagsabi 00:09:28,000 Sa ganitong kaso, hindi mo na kailangang maglagay 166 00:09:28,000 --> 00:09:30,000 PHP ang salita pagkatapos ng tandang pananong. 167 00:09:30,000 --> 00:09:34,000 Ito ay shorthand notation, muli, kung ano ang aming nakita lamang ng ilang sandali ang nakalipas 168 00:09:34,000 --> 00:09:37,000 na echoing ilang mga halaga. 169 00:09:37,000 --> 00:09:39,000 >> Natin makita kung ano ang resulta ng pagtatapos na ito talaga. 170 00:09:39,000 --> 00:09:43,000 Hayaan akong pumunta sa aming mga file counter.php, 171 00:09:43,000 --> 00:09:47,000 at kami na makita na ang David lamang nagkamali sa pamamagitan ng paglalaro ang code doon. 172 00:09:47,000 --> 00:09:50,000 Hayaan ang mag-aayos anumang siya screwed up, 173 00:09:50,000 --> 00:09:54,000 at ang error ay tila na doon, nawala, sa linya 37. 174 00:09:54,000 --> 00:09:59,000 Ayon sa tuktok ng pahinang ito binisita ko ang site na ito 0 beses. 175 00:09:59,000 --> 00:10:02,000 Well, sabihin magpatuloy ngayon, at sa tuktok ng browser mag-click sa 176 00:10:02,000 --> 00:10:05,000 i-reload ang icon, at i-click ang ko reload, 177 00:10:05,000 --> 00:10:12,000 at ngayon ko na bumisita sa site 1 oras, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 At sa katunayan, kung tiningnan namin sa pinagmulan ng pahinang ito ang aktwal na source code ay nagbabago, 179 00:10:16,000 --> 00:10:19,000 at mapansin ang kumpletong kawalan ng anumang PHP, at na dahil 180 00:10:19,000 --> 00:10:23,000 PHP code ay sinusuri o kahulugan ng server side, 181 00:10:23,000 --> 00:10:27,000 at sa gayon ay nangangahulugan na ang output ng script ng PHP ay kung ano ang sa huli ay ipinadala sa browser, 182 00:10:27,000 --> 00:10:31,000 na sa kasong ito ay ilang raw na HTML at ilang raw na teksto. 183 00:10:31,000 --> 00:10:33,000 Ano kaya ang nangyari dito? 184 00:10:33,000 --> 00:10:37,000 >> Well, may kaugnay sa ilang mga linya ng code Ako ay makakapag-imbak 185 00:10:37,000 --> 00:10:40,000 patuloy na sa loob ng ilang segundo, o kung kami naghintay may sapat na katagalan, 186 00:10:40,000 --> 00:10:44,000 minuto, kahit na oras, ang ilang mga halaga sa isang paraan na gumagawa ng HTTP 187 00:10:44,000 --> 00:10:47,000 mukhang stateful na parang kami mananatili 188 00:10:47,000 --> 00:10:51,000 ang koneksyon na ito sa server, at ito-alala kung ano ang sinabi ko ito ng huling beses, 189 00:10:51,000 --> 00:10:55,000 ngunit sa katotohanan may isang buong grupo ng mga kumplikado pagpunta sa ilalim ng hood 190 00:10:55,000 --> 00:10:59,000 kinasasangkutan ng cookies na pagpapagana ng PHP upang bigyan ako ito ilusyon 191 00:10:59,000 --> 00:11:02,000 ng shopping cart na ito-tulad ng tampok. 192 00:11:02,000 --> 00:11:05,000 Sa ngayon, walang kuwenta halimbawa kung saan lang kami sa pag-iimbak ng isang integer, 193 00:11:05,000 --> 00:11:08,000 ngunit ang tampok na ay bumalik na ng mahusay na halaga 194 00:11:08,000 --> 00:11:10,000 kapag sinimulan namin ang pakikipag-usap tungkol sa mga mas kumplikadong mga proyekto, 195 00:11:10,000 --> 00:11:12,000 kasama ng mga ito problema magtakda ng 7. 196 00:11:12,000 --> 00:11:16,000 Ito ay ang iyong huling problema na makikita sa CS50. 197 00:11:16,000 --> 00:11:19,000 Alam ko, kaya malungkot, ngunit kung anong makikita mo na kami ay pagpunta upang tapusin 198 00:11:19,000 --> 00:11:22,000 ito bahagi ng semestre sa pamamagitan ng aktwal na paglipat 199 00:11:22,000 --> 00:11:25,000 mula sa konteksto ng C tiyak sa konteksto ng PHP 200 00:11:25,000 --> 00:11:27,000 pero habang gamit ang ilan sa napaka-parehong batayan 201 00:11:27,000 --> 00:11:29,000 namin na uusapang tungkol sa para sa ilang oras. 202 00:11:29,000 --> 00:11:33,000 >> Ang layunin sa pset 7 ipatupad CS50 Finance, 203 00:11:33,000 --> 00:11:37,000 na ang iyong sariling bersyon ng Yahoo Finance o Google Finance 204 00:11:37,000 --> 00:11:40,000 o kahit Etrade.com kung saan mayroon kang abilidad na 205 00:11:40,000 --> 00:11:43,000 maghanap ng mga presyo ng stock para sa ibinigay na simbolo, ngunit mas higit pa kaysa sa 206 00:11:43,000 --> 00:11:48,000 mayroon kang kakayahang "bumili ng" at "Nagbebenta" stock 207 00:11:48,000 --> 00:11:51,000 na traded sa iba't ibang mga palitan ng stock dahil ng home page na ito 208 00:11:51,000 --> 00:11:55,000 dito nagmumungkahi, na talagang ang lawak kung saan kami nagsimula 209 00:11:55,000 --> 00:11:59,000 ang hanay ng problema para sa iyo, mayroon kang isang login form na humihingi para sa isang user name at password. 210 00:11:59,000 --> 00:12:03,000 Ay may isumite pindutan, ngunit pagkatapos noon, bilang namin ay makakita, 211 00:12:03,000 --> 00:12:06,000 walang ay talagang pagpunta sa ilalim ng hood dahil ito 212 00:12:06,000 --> 00:12:09,000 nananatiling para sa iyo upang ipatupad ang kakayahan upang magrehistro ng mga bagong gumagamit, 213 00:12:09,000 --> 00:12:12,000 ang kakayahan upang bumili ng mga stock, upang magbenta ng stock, 214 00:12:12,000 --> 00:12:14,000 sa aktwal na hitsura up ng mga kasalukuyang presyo ng stock. 215 00:12:14,000 --> 00:12:17,000 >> At sa katunayan, ito ay bilang tunay na mundo hangga't maaari dahil ginawa namin 216 00:12:17,000 --> 00:12:20,000 magsama ng isang bit ng code na magpapahintulot sa iyo na may isang solong function na 217 00:12:20,000 --> 00:12:25,000 sa query Yahoo Finance, na kamangha-mangha ay magagamit libreng data 218 00:12:25,000 --> 00:12:31,000 para sa hinahanap ng mga presyo ng stock na batay sa simbolo ng stock o ticker simbolo, 219 00:12:31,000 --> 00:12:34,000 at makakakuha ka pabalik ang kasalukuyang presyo ng stock ng araw. 220 00:12:34,000 --> 00:12:37,000 Ang mga data sa aktwal na nakakakita ka sa partikular na pset 221 00:12:37,000 --> 00:12:40,000 tungkol sa bilang tunay na mundo bilang maaari itong makakuha ng sa gayon ay aktwal na interfacing 222 00:12:40,000 --> 00:12:43,000 sa tunay na mundo stock, totoong mundo presyo, 223 00:12:43,000 --> 00:12:47,000 at dapat namin makita kung gaano karaming pera maaari kang gumawa ng marahil 224 00:12:47,000 --> 00:12:51,000 sa susunod na ilang araw ng paglalaro ng gamit ang iyong sariling hanay ng problema. 225 00:12:51,000 --> 00:12:55,000 >> Ngunit natin munang itakda ang yugto para sa kung paano mag-disenyo ng isang bagay na tiyak na mas komplikado 226 00:12:55,000 --> 00:12:59,000 sa kaysa sa mga counter.php, na mas kumplikadong kaysa sa anumang mga Frosh IMs halimbawa sa gayon ngayon, 227 00:12:59,000 --> 00:13:02,000 at sabihin subukan upang maipakilala ang isang ilang mga paradigms dito na pumapayag sa amin 228 00:13:02,000 --> 00:13:06,000 parehong para sa pset 7 at marahil para sa iyong huling proyekto na kung gagawin mo ang isang bagay na web batay 229 00:13:06,000 --> 00:13:11,000 upang mapanatili ang mahusay na nakaayos ang iyong code, upang panatilihin ang iyong sarili malusog, 230 00:13:11,000 --> 00:13:15,000 at kumuha ng isang hakbang patungo sa pakikipagtulungan, kung sa panghuling proyekto ng CS50 231 00:13:15,000 --> 00:13:18,000 o higit pa sa kung magpapatuloy ka sa programa ng isang bagay sa hinaharap. 232 00:13:18,000 --> 00:13:21,000 May ito pangkalahatang disenyo tularan 233 00:13:21,000 --> 00:13:24,000 sa computer science at sa software development sa mas pangkalahatang 234 00:13:24,000 --> 00:13:27,000 na kilala bilang MVC, modelo tingnan controller, 235 00:13:27,000 --> 00:13:30,000 at ito ay isang ulok acronym na naglalarawan ng isang napakabuti ideya, 236 00:13:30,000 --> 00:13:34,000 na ang paghihiwalay ng mga iba't ibang mga aspeto ng isang programa, 237 00:13:34,000 --> 00:13:39,000 partikular na pinapanatili hiwalay na ang logic o ang business logic ng isang website 238 00:13:39,000 --> 00:13:42,000 upang ang anumang bagay na nagsasangkot ng mga bagay tulad ng 239 00:13:42,000 --> 00:13:45,000 pagtawag ng mga function at querying database at ang mga tulad ng 240 00:13:45,000 --> 00:13:48,000 mangyayari hindi kabilang sa iyong HTML 241 00:13:48,000 --> 00:13:51,000 kundi sa hiwalay na mga file, at sa katunayan, ito isang file 242 00:13:51,000 --> 00:13:54,000 karaniwang na tinatawag na controller 243 00:13:54,000 --> 00:13:56,000 na talaga ang talino sa likod ng pagpapatakbo, at gagamitin namin makita ang isang halimbawa 244 00:13:56,000 --> 00:13:58,000 ng mga ito sa sandali lamang. 245 00:13:58,000 --> 00:14:01,000 >> May isang modelo na ang mga programa ng code 246 00:14:01,000 --> 00:14:05,000 na ipinapakita ng pakikipag-usap sa iyong mga database, na-uusap sa Yahoo Finance at ang mga tulad ng, 247 00:14:05,000 --> 00:14:08,000 at pagkatapos ay ang V sa MVC, ang mga tanawin, 248 00:14:08,000 --> 00:14:11,000 lahat ng bagay na may kaugnayan sa aesthetics, ang mga file na aktwal na naglalaman ng 249 00:14:11,000 --> 00:14:14,000 iyong HTML, siguro iyong CSS at tulad. 250 00:14:14,000 --> 00:14:17,000 Ang ideya dito, bilang nagmumungkahi ang larawan na ito, ay ang controller 251 00:14:17,000 --> 00:14:21,000 ang file, dahil kakailanganin namin sa lalong madaling panahon makita at tulad ng makikita mo lalo na makita sa pset 7, 252 00:14:21,000 --> 00:14:24,000 na ang mundo sa pag-uusap sa pamamagitan ng kanilang mga web browser. 253 00:14:24,000 --> 00:14:27,000 Na ang file na ay makakakuha ng binisita sa pampublikong internet, 254 00:14:27,000 --> 00:14:30,000 ngunit ang controller-uusap sa potensyal ng modelo, 255 00:14:30,000 --> 00:14:34,000 na isa o higit pang mga iba pang mga file na naglalaman ng code na kaugnay sa data, 256 00:14:34,000 --> 00:14:37,000 code na may kaugnayan sa database at ang mga tulad ng, at pagkatapos-uusap sa 257 00:14:37,000 --> 00:14:40,000 controller ang isa o higit pang mga iba pang mga file na kilala bilang mga tanawin, 258 00:14:40,000 --> 00:14:43,000 na ang mga aesthetics ng isang pahina ng web, ang mga template ng uri, 259 00:14:43,000 --> 00:14:47,000 na maaaring tumagal ng ilang mga data bilang input, ngunit sa pagtatapos ng araw 260 00:14:47,000 --> 00:14:50,000 lamang ang logic sa loob ng isang view ay dapat na ang pag-render ng data na iyon, 261 00:14:50,000 --> 00:14:53,000 iterating sa loob ng isang loop at aktwal pagsigam ang ilang mga 262 00:14:53,000 --> 00:14:56,000 HTML-batay sa pagkakaganap nito o kahit isang bagay tulad ng isang PDF. 263 00:14:56,000 --> 00:14:59,000 >> Ano ang maganda ang tungkol sa MVC ay na maaari mong magkaroon ng iba't ibang mga view 264 00:14:59,000 --> 00:15:02,000 batay sa uri ng aparato, batay sa uri ng format ng file na iyong aktwal na 265 00:15:02,000 --> 00:15:04,000 gusto mong ipakita sa gumagamit. 266 00:15:04,000 --> 00:15:10,000 Natin tingnan ang ilang progressively mas kumplikado at mahusay na dinisenyo mga halimbawa 267 00:15:10,000 --> 00:15:13,000 pamamagitan ng pagsisimula ng unang may bersyon 0 dito. 268 00:15:13,000 --> 00:15:16,000 Hayaan akong sige at buksan sa aming direktoryo sa MVC ngayon 269 00:15:16,000 --> 00:15:21,000 isang file na tinatawag na index.php sa direktoryo 0. 270 00:15:21,000 --> 00:15:26,000 Pansinin na ito ay isang napaka-simple at napaka-underwhelming website 271 00:15:26,000 --> 00:15:29,000 na uri ng bersyon 0 ng homepage para sa CS50, 272 00:15:29,000 --> 00:15:32,000 at pansinin kung paano kami ay may isang link sa aralin, kami ay may isang link sa Syllabus, 273 00:15:32,000 --> 00:15:35,000 at kapag sinundan ko ang link sa mga aralin ng paunawa na ang URL 274 00:15:35,000 --> 00:15:39,000 up itaas ay pagpunta upang baguhin sa lectures.php. 275 00:15:39,000 --> 00:15:44,000 Kung ako pagkatapos ay sundin ang mga link sa Linggo 1 paunawa na ang mga pagbabago sa URL sa week1.php. 276 00:15:44,000 --> 00:15:46,000 Mukhang medyo simple hierarchical istraktura dito. 277 00:15:46,000 --> 00:15:49,000 >> Natin gumawa ng isang mabilis na pagtingin sa ilalim ng hood sa kung paano ito ay inilatag nang, 278 00:15:49,000 --> 00:15:53,000 at sa katunayan, kung tiningnan ko sa index.php medyo simple. 279 00:15:53,000 --> 00:15:57,000 Sa katunayan, kahit tinatawag ko ito isang file ng PHP walang aktwal na code sa programming. 280 00:15:57,000 --> 00:16:01,000 May isang komento na sinulat ni ko dito sa PHP lamang sa gayon ang gumagamit ay hindi itong makita. 281 00:16:01,000 --> 00:16:05,000 Siyempre, tulad ng dati, anumang bagay na sa pagitan ng PHP tag 282 00:16:05,000 --> 00:16:08,000 ay makakakuha ng kahulugan, kahit na ito ay isang komento, at bigyang-kahulugan ang isang komento 283 00:16:08,000 --> 00:16:11,000 ay nangangahulugan lamang itapon ito ang layo mula sa pagtatapos ng araw at hindi tunay 284 00:16:11,000 --> 00:16:15,000 ipadala ito sa browser, kaya ang lahat in dito aesthetics lang. 285 00:16:15,000 --> 00:16:20,000 Kung buksan ko katulad lectures.php ito masyadong ay isang hard-code na file. 286 00:16:20,000 --> 00:16:23,000 Ito ay nangyayari na tinatawag na isang bagay. Php, 287 00:16:23,000 --> 00:16:27,000 ngunit ito talagang lamang ang html, at week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 katulad lamang ang markup, kaya mayroong isang bungkos ng mga pagkukulang ng disenyo na ito. 289 00:16:31,000 --> 00:16:33,000 Isa, ang isang malaking halaga ng kopya / i-paste. 290 00:16:33,000 --> 00:16:37,000 Kahit na ang tanging bagay na pagbabago bukod sa mga file na ito ay ang unordered listahan, 291 00:16:37,000 --> 00:16:41,000 ang li tag, gayunman ako doc uri, HTML, ulo, 292 00:16:41,000 --> 00:16:44,000 pamagat, malapit katawan, malapit HTML at higit pa 293 00:16:44,000 --> 00:16:47,000 sa bawat solong file, na nangangahulugan na kung ako kailanman nais upang restructure 294 00:16:47,000 --> 00:16:50,000 ang web page na ito o restylize ito kong pumunta sa at baguhin 295 00:16:50,000 --> 00:16:54,000 lahat ng mga file na ito nang manu-mano o may ilang mga napakalaking hanapin at palitan. 296 00:16:54,000 --> 00:17:01,000 >> Natin gumawa ng isang hakbang patungo sa mas matalinong, na iniisip disenyo sa bersyon 1 dito 297 00:17:01,000 --> 00:17:04,000 kung saan ng bawat basahin sa akin na kami kasama sa gayon ay maaari mong i-play kasama 298 00:17:04,000 --> 00:17:07,000 mga mas banayad sa bahay paunawa na mayroon kami dito 299 00:17:07,000 --> 00:17:10,000 isang buod ng mga file sa bersyon 1 ng site na ito, 300 00:17:10,000 --> 00:17:13,000 at tila ko na kinuha ito kapag ang aking sarili sa salik ang 301 00:17:13,000 --> 00:17:17,000 ilan sa mga karaniwang code, header.php at footer.php. 302 00:17:17,000 --> 00:17:20,000 Well, sabihin kumuha ng isang pagtingin sa kung ano ang sa loob ng unang ng mga. 303 00:17:20,000 --> 00:17:23,000 Header.php mukhang pamilyar, 304 00:17:23,000 --> 00:17:26,000 ngunit mapansin kung saan ang makapag-putol? 305 00:17:26,000 --> 00:17:30,000 Mag-right pagkatapos ng ika-19 linya, kaya na ang lahat ng mga karaniwang 306 00:17:30,000 --> 00:17:33,000 mula sa file index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 at week2.php mula sa nakaraang halimbawa. 308 00:17:36,000 --> 00:17:40,000 Ano ko ginawa ang lahat ng kopya at cut na pangkaraniwan sa lahat ng mga file na iyon, 309 00:17:40,000 --> 00:17:44,000 ilagay ang mga ito sa isang hiwalay na file ng header, at katulad sa footer.php 310 00:17:44,000 --> 00:17:48,000 kong ilapat ang parehong prinsipyo kung saan ang lamang kawili-wiling mga linya 311 00:17:48,000 --> 00:17:52,000 sa mga dalawang, malapit katawan at malapit na HTML ang mga footer.php. 312 00:17:52,000 --> 00:17:55,000 >> Ngunit kung ano ang ibig sabihin nito ay ngayon ay na sa bagong bersyon 313 00:17:55,000 --> 00:17:59,000 ng index.php paunawa kung magkano simple ito. 314 00:17:59,000 --> 00:18:02,000 Ipinagkaloob, isang bit mas misteriyoso hinahanap, isang maliit na mas mababa intuitive 315 00:18:02,000 --> 00:18:06,000 sundin itaas hanggang sa ibaba, ngunit ang aking Diyos, ang lahat ng na kalabisan ay nawala ngayon. 316 00:18:06,000 --> 00:18:10,000 Kinakailangan namin ang paggamit ng PHP function na literal na tinatawag na nangangailangan ng hanggang tuktok, 317 00:18:10,000 --> 00:18:15,000 na napaka nakapagpapaalaala, isipin ang, ng C # include mekanismo. 318 00:18:15,000 --> 00:18:17,000 Kinakailangan namin ng mga header.php sa tuktok. 319 00:18:17,000 --> 00:18:20,000 Kinakailangan namin ang mga footer.php sa ibaba, at ang tanging bagay na ay naiiba 320 00:18:20,000 --> 00:18:25,000 o espesyal na tungkol sa ang file na ito ay ang nilalaman na nilalayong natatanging dito. 321 00:18:25,000 --> 00:18:29,000 Kung ako pagkatapos ay pumunta sa, sabihin nating, lectures.php, ang parehong prinsipyo nalalapat. 322 00:18:29,000 --> 00:18:32,000 Muli, ang ilang mga komento up itaas, ngunit pagkatapos ay nangangailangan ko header, kinakailangan footer, 323 00:18:32,000 --> 00:18:35,000 at sa pagitan lamang ang nilalaman na aktwal na ay nagbago. 324 00:18:35,000 --> 00:18:38,000 At kung namin tumingin sa Linggo 1 at Linggo 2 gusto namin makita 325 00:18:38,000 --> 00:18:42,000 na ang parehong prinsipyo ay inilapat doon. 326 00:18:42,000 --> 00:18:44,000 Well, hindi kami ay lubos tapos doon. 327 00:18:44,000 --> 00:18:48,000 >> Natin tingnan ang bersyon 2, na kung saan ay may katulad na istraktura, 328 00:18:48,000 --> 00:18:50,000 ngunit ngayon mapansin ipinakilala ko na ang iba pa. 329 00:18:50,000 --> 00:18:53,000 Sa linya 10 ko na ipinakilala helpers.php, 330 00:18:53,000 --> 00:18:55,000 na tila naglalaman ng mga function ng lingkod. 331 00:18:55,000 --> 00:18:58,000 Isang lingkod function na ay may maikling function na 332 00:18:58,000 --> 00:19:01,000 na sinulat mo upang makatulong sa iyo sa iba't-ibang mga lugar, 333 00:19:01,000 --> 00:19:04,000 at sabihin makita kung ano ang sa loob ng helpers.php. 334 00:19:04,000 --> 00:19:07,000 Sa kasong ito, mukhang ito ay may 2 function. 335 00:19:07,000 --> 00:19:10,000 Manariwa sa diwa mula sa iba pang mga araw sa aming kubo halimbawa 336 00:19:10,000 --> 00:19:13,000 maaari mong tukuyin ang iyong sariling mga function sa PHP, at kung ano ang nagawa ko na ngayon ay nag ko 337 00:19:13,000 --> 00:19:17,000 tinukoy na function na tinatawag na render footer at render ang header, 338 00:19:17,000 --> 00:19:21,000 ang unang kung saan tumatagal ng isang parameter na tinatawag na data, 339 00:19:21,000 --> 00:19:25,000 na ang default na halaga ay isang walang laman na hanay, tulad ng iminungkahing doon, 340 00:19:25,000 --> 00:19:29,000 at maaari naming aktwal na magsulat ito mas succinctly sa pinakabagong bersyon ng PHP 341 00:19:29,000 --> 00:19:32,000 sa pamamagitan ng sinasabi ng bukas square bracket, sarado square bracket. 342 00:19:32,000 --> 00:19:35,000 Iyon ay nangangahulugan na ang isang walang laman na hanay ng mga laki 0 ​​ngunit gayunman isang array. 343 00:19:35,000 --> 00:19:38,000 >> Ang Extract function na ay isang maliit na espesyal sa na 344 00:19:38,000 --> 00:19:41,000 kung ano ang ginagawa nito ay tumatagal ng bilang nito argument ng nag-uugnay array 345 00:19:41,000 --> 00:19:45,000 na may 0 o higit pang mga key na mga pares ng halaga, at kung mayroon kang isang key ng foo 346 00:19:45,000 --> 00:19:48,000 at isang halaga ng bar ang Extract function na 347 00:19:48,000 --> 00:19:51,000 lumilikha ng isang sitwasyon kung saan ngayon, bilang ng linya 11, 348 00:19:51,000 --> 00:19:57,000 mayroon kang isang lokal na variable na tinatawag na $ foo na ang halaga ay bar. 349 00:19:57,000 --> 00:19:59,000 At kung mayroon kang higit pang mga pindutan at halaga sa array ng data, 350 00:19:59,000 --> 00:20:03,000 katulad sila ay nahango sa lokal na saklaw 351 00:20:03,000 --> 00:20:06,000 o pangalan ng puwang upang ang footer.php at 352 00:20:06,000 --> 00:20:09,000 ang parehong ideya pababa dito upang ang header.php 353 00:20:09,000 --> 00:20:12,000 magkaroon ng access sa mga variable. 354 00:20:12,000 --> 00:20:15,000 Sa katunayan, hayaan mo akong buksan up muli header.php 355 00:20:15,000 --> 00:20:18,000 at gumuhit ng pansin sa ngayon kung ano ang mukhang sa bersyong ito. 356 00:20:18,000 --> 00:20:22,000 >> Sa halip na mahirap coding ng CS50 bilang ang pamagat para sa bawat solong pahina 357 00:20:22,000 --> 00:20:24,000 mapansin ang dynamism na posible na ngayon. 358 00:20:24,000 --> 00:20:29,000 Sa ika-5 linya ako echoing isang pamagat variable, 359 00:20:29,000 --> 00:20:34,000 ngunit una ako pagpasa ng pamagat na iyon variable sa isang function na tinatawag na htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Isang bobo na pangalan para sa isang function, hangga't ito ay, ngunit ito talaga ginagawa kung ano ang sinasabi nito. 361 00:20:38,000 --> 00:20:41,000 Sinisigurado nito na ang anumang mga espesyal na character 362 00:20:41,000 --> 00:20:46,000 sa string na nakapasa sa maayos na escaped na HTML. 363 00:20:46,000 --> 00:20:49,000 Ito ay talagang isang paraan ng pag-iwas sa isang bagay na tinatawag na isang cross site scripting atake 364 00:20:49,000 --> 00:20:52,000 kung saan ang isang tao ay maaari maliciously o aksidenteng 365 00:20:52,000 --> 00:20:55,000 mag-inyeksyon ang kanilang sariling HTML sa iyong website 366 00:20:55,000 --> 00:20:59,000 sa pamamagitan ng pag-paste sa ilang anyo, halimbawa, 367 00:20:59,000 --> 00:21:02,000 isang bagay na hindi mo ay medyo umaasa, lalo na JavaScript code, 368 00:21:02,000 --> 00:21:05,000 dahil kakailanganin naming makipag-usap tungkol sa isang linggo o dalawang ng oras. 369 00:21:05,000 --> 00:21:08,000 >> Ito ngayon header.php, isang view 370 00:21:08,000 --> 00:21:12,000 sa kamalayan na ito ay nagbibigay-daan sa iyo upang tingnan aesthetically ang mga nilalaman ng ilang mga hanay ng data. 371 00:21:12,000 --> 00:21:14,000 Ngunit higit na partikular, ito ay isang template. 372 00:21:14,000 --> 00:21:19,000 Ito ay uri ng isang plano ngayon kung ano ang gusto naming header ng bawat pahina upang magmukhang, 373 00:21:19,000 --> 00:21:23,000 ngunit ang ilang dynamism na gusto naming pamagat na dynamic na ipinasok 374 00:21:23,000 --> 00:21:26,000 batay sa title variable 375 00:21:26,000 --> 00:21:30,000 na nahango kapag tinatawag namin, muli, 376 00:21:30,000 --> 00:21:33,000 render ng header ng function na. 377 00:21:33,000 --> 00:21:36,000 Ngayon, kung kami ay tumingin sa render footer, may aktwal na hindi mas paggamit ng karapatan na ngayon 378 00:21:36,000 --> 00:21:40,000 dahil sa footer.php walang dynamism anumang. 379 00:21:40,000 --> 00:21:43,000 Ay maaaring, ngunit sa sandaling ito ay isang hard code na listahan ng 2 tag, 380 00:21:43,000 --> 00:21:46,000 ngunit ang parehong ideya nalalapat, upang aktwal na nagmumungkahi kung bakit 381 00:21:46,000 --> 00:21:49,000 ay namin aaksaya ng oras sa pagkakaroon ng render header at ng render footer function na? 382 00:21:49,000 --> 00:21:52,000 Hayaan akong pumunta sa halip na ngayon sa bersyon 3, 383 00:21:52,000 --> 00:21:56,000 at sa bersyon 3 sa Katulong ko nagpasya upang gawing simple ito ng mas maraming. 384 00:21:56,000 --> 00:21:58,000 >> Hayaan ang mayroon ako ng isang render function na. 385 00:21:58,000 --> 00:22:02,000 Hayaan ang sa akin itong tumagal ng isa pang argument, oras na ito na tinatawag na template, 386 00:22:02,000 --> 00:22:05,000 na nilalayong maging ang pangalan ng isang template, 387 00:22:05,000 --> 00:22:11,000 at pagkatapos ko pagdugtungin presumptuously. php sa halaga na variable, 388 00:22:11,000 --> 00:22:17,000 at pagkatapos ay kung ito ay umiiral foo.php, mga bar.php o header.php at footer.php, 389 00:22:17,000 --> 00:22:20,000 pagkatapos ay ako pagpunta sa magpatuloy at extract ang mga variable na data 390 00:22:20,000 --> 00:22:23,000 at pagkatapos ay nangangailangan ang path na iyon. 391 00:22:23,000 --> 00:22:29,000 Sa ibang salita, upang gamitin ito ngayon, kung buksan ko hanggang index.php 392 00:22:29,000 --> 00:22:32,000 mapansin na hindi ko tumawag render header na ito. 393 00:22:32,000 --> 00:22:36,000 Ko lang tawagan render, ngunit pumasa ko sa isang naka-quote na halaga ng header 394 00:22:36,000 --> 00:22:39,000 upang gumawa ng malinaw na template ko aktwal na nais upang i-load. 395 00:22:39,000 --> 00:22:41,000 >> Pagkatapos sa paglipas dito mapansin kung ano ang ako ginagawa. 396 00:22:41,000 --> 00:22:44,000 Ako pagpasa sa dynamic na isang susi ng pamagat, 397 00:22:44,000 --> 00:22:47,000 halaga ng CS50, at ito ay masyadong, tulad ng nakita natin dati, 398 00:22:47,000 --> 00:22:51,000 maaaring gawin mas maikli at malinaw sa ang pinakabagong bersyon ng PHP 399 00:22:51,000 --> 00:22:54,000 kung saan maaari kong palitan ang array function na may mga square bracket, 400 00:22:54,000 --> 00:22:57,000 kung saan ipanukala ko ay mas nababasa at tiyak 401 00:22:57,000 --> 00:22:59,000 isang maliit na mas madaling i-type. 402 00:22:59,000 --> 00:23:02,000 At siyempre, sa tawag render footer sa ibaba, 403 00:23:02,000 --> 00:23:05,000 hindi namin abala ang pagpasa sa isang pangalawang argumento sa lahat, walang nag-uugnay array, 404 00:23:05,000 --> 00:23:07,000 dahil may walang dynamic loob ng footer na. 405 00:23:07,000 --> 00:23:10,000 Ito ay ilang mga malapit na tag para sa HTML. 406 00:23:10,000 --> 00:23:14,000 Mabuti, kami ay ang pagkuha ng mga hakbang tungo sa talagang paglilinis ng mga bagay dito, 407 00:23:14,000 --> 00:23:17,000 ngunit hayaan mo akong buksan 2 panghuling halimbawa. 408 00:23:17,000 --> 00:23:21,000 Ang isang ito, bilang 4, notice na ko na ginawa ng isang nakakamalay na desisyon sa ngayon 409 00:23:21,000 --> 00:23:26,000 upang mapabuti ang oras ng nakaraang halimbawa sa pamamagitan ng wakas paggamit ng ilang hierarchy sa aking mga file. 410 00:23:26,000 --> 00:23:29,000 >> Pansinin na sa buod na ito, sa ito basahin sa akin, ko na ipinakilala 411 00:23:29,000 --> 00:23:32,000 ng kabilang ang direktoryo at mga template direktoryo 412 00:23:32,000 --> 00:23:35,000 na nilalaman ay ang mga bagay na gusto kong isama 413 00:23:35,000 --> 00:23:38,000 at ang mga template na gusto kong mag-render, ayon sa pagkakasunud-sunod. 414 00:23:38,000 --> 00:23:42,000 Sa akin talaga ito pagiging anal at sinusubukang upang panatilihing maglinis ang mga bagay, 415 00:23:42,000 --> 00:23:45,000 panatilihin ang mga kaugnay na mga file, ngunit ang resulta 416 00:23:45,000 --> 00:23:48,000 na namin ngayon ay may isang bahagyang tidier setup, ngunit mayroon kaming tandaan ngayon 417 00:23:48,000 --> 00:23:51,000 sa, halimbawa, index.php 418 00:23:51,000 --> 00:23:55,000 kapag kinakailangan namin ang file helpers.php 419 00:23:55,000 --> 00:24:01,000 namin sa ngayon nangangailangan ang mga ito sa pamamagitan ng kasamang / helpers.php 420 00:24:01,000 --> 00:24:06,000 sa halip na lamang sinasabi ng helpers.php dahil ngayon ito ay aktwal na sa isang sub direktoryo. 421 00:24:06,000 --> 00:24:09,000 Ngayon, bilang isang bukod, makikita mo makita sa mga halimbawa at ilang iba 422 00:24:09,000 --> 00:24:11,000 function tulad ng nangangailangan, nangangailangan sabay-sabay. 423 00:24:11,000 --> 00:24:15,000 Mayroon talagang isang function mismo tinatawag isama, at lahat ng mga ito ay may bahagyang naiiba ang pag-uugali. 424 00:24:15,000 --> 00:24:18,000 Dito sinasabi ko nangangailangan ng isang beses sa sobrang malinaw na gusto ko lang mga 425 00:24:18,000 --> 00:24:20,000 Katulong kasama sa aking proyekto sabay-sabay. 426 00:24:20,000 --> 00:24:24,000 Ngunit kung ako maingat at kung aktwal ako iniisip sa pamamagitan ng aking logic maayos 427 00:24:24,000 --> 00:24:27,000 dapat ito sumapat masyadong lamang upang sabihin nangangailangan hanggang tuktok 428 00:24:27,000 --> 00:24:31,000 hangga't ko hindi sarili ko nang hindi sinasadya nangangailangan na ang parehong file sa ibang lugar. 429 00:24:31,000 --> 00:24:34,000 Sa katunayan, ito ay isang bahagyang mas mahusay na paraan ng paggawa ng mga bagay pagkatapos gamit 430 00:24:34,000 --> 00:24:38,000 nangangailangan ng isang beses, kaya makikita ko trim ito lamang nangangailangan. 431 00:24:38,000 --> 00:24:40,000 >> Hayaan ang isang hakbang karagdagang. 432 00:24:40,000 --> 00:24:46,000 Ang huling halimbawa na ito ngayon, ang bersyon 5, ay may kahit cleaner folder hierarchy. 433 00:24:46,000 --> 00:24:50,000 Pansinin kung ano ang nagawa ko na dito bawat ang basahin sa akin sa huling bersyon na ito 434 00:24:50,000 --> 00:24:54,000 ngayon ay mayroon ko ang aking HTML direktoryo, na Nagkaroon na ako ng lahat oras na ito, 435 00:24:54,000 --> 00:24:58,000 ngunit sa loob ng may ngayon lamang index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php at week2.php. 437 00:25:01,000 --> 00:25:05,000 Kasamang direktoryo ngayon nakatira sa tabi ng HTML directory, 438 00:25:05,000 --> 00:25:08,000 ito sa parehong antas bilang isang kapatid, kaya na magsalita. 439 00:25:08,000 --> 00:25:10,000 Kaya ang mga template na folder. 440 00:25:10,000 --> 00:25:14,000 Ang pangunahing takeaway dito ay ipinakilala ko na ng kaunting karagdagang istraktura, 441 00:25:14,000 --> 00:25:17,000 ngunit ang pangunahing tampok ngayon na lamang ang mga file 442 00:25:17,000 --> 00:25:21,000 na kailangan web access, publiko addressable 443 00:25:21,000 --> 00:25:25,000 ng isang URL sa pampublikong internet sa aking HTML direktoryo. 444 00:25:25,000 --> 00:25:28,000 >> Samantala, iba pang mga file, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, na arguably siguro mas sensitive, 446 00:25:32,000 --> 00:25:35,000 Katulong siguro ang aktwal na ay may ilang mga user name at password o ilang intelektwal na pagmamay- 447 00:25:35,000 --> 00:25:39,000 function ng ari-arian ng minahan, hindi ko talagang gusto upang makita ang mundo, kahit na hindi sinasadyang. 448 00:25:39,000 --> 00:25:45,000 Ito ay mahusay na kasanayan upang panatilihin ng pampublikong direktoryo ng HTML 449 00:25:45,000 --> 00:25:48,000 anumang mga file na hindi na kailangan ang kanilang mga sarili upang maging pampublikong. 450 00:25:48,000 --> 00:25:51,000 Ang mayroon kang gawin sa kasong ito kapag tumitingin sa, halimbawa, 451 00:25:51,000 --> 00:25:55,000 index.php file ang HTML direktoryo, 452 00:25:55,000 --> 00:25:58,000 mapansin lang namin ng kaunti pa maingat kapag nangangailangan 453 00:25:58,000 --> 00:26:00,000 o nangangailangan ng isang beses ang file na ito. 454 00:26:00,000 --> 00:26:03,000 Kailangan ko munang gawin ... pumunta sa direktoryo ng magulang, 455 00:26:03,000 --> 00:26:06,000 pagkatapos ay / kasama / helpers.php 456 00:26:06,000 --> 00:26:12,000 sumisid bumalik pababa upang makuha ang mga file na mahalaga ako tungkol. 457 00:26:12,000 --> 00:26:16,000 >> Anumang mga katanungan pagkatapos ay sa MVC 458 00:26:16,000 --> 00:26:20,000 o medyo simple pagkakatawang-tao nito? 459 00:26:20,000 --> 00:26:23,000 At hayaan mo akong gumawa ng malinaw na nakatutok kami pa ng kaunti sa 460 00:26:23,000 --> 00:26:27,000 V dito, ang mga tanawin at ang factoring ng mga template na ito. 461 00:26:27,000 --> 00:26:30,000 Hindi namin talagang nakikilala M mula sa C pa. 462 00:26:30,000 --> 00:26:33,000 Sa katunayan, may talagang ay walang M dito, at maging ang aming C, 463 00:26:33,000 --> 00:26:36,000 controller, hindi talaga ginagawa ang lahat na magkano, ngunit makakakuha ka ng higit pa 464 00:26:36,000 --> 00:26:39,000 pamilyar sa parehong ng mga 2 mga titik mula sa MVC, 465 00:26:39,000 --> 00:26:43,000 o sa halip, makikita mo makakuha ng mas pamilyar na may C 466 00:26:43,000 --> 00:26:49,000 sa MVC para sa problema sa set 7, kaya walang higit pa na iyon sa abot-tanaw. 467 00:26:49,000 --> 00:26:51,000 Mga tanong? 468 00:26:51,000 --> 00:26:53,000 Mayroon talagang wala dito. 469 00:26:53,000 --> 00:26:57,000 >> Okay, sabihin na ngayong ilipat sa ang pangalawang at huling paksa para sa araw na. 470 00:26:57,000 --> 00:27:00,000 Na ang pagpapakilala ng isang database. 471 00:27:00,000 --> 00:27:03,000 Hanggang sa puntong ito kami ay may ilang mga paraan ng pag-iimbak ng mga data. 472 00:27:03,000 --> 00:27:05,000 Ginamit namin ang mga variable. 473 00:27:05,000 --> 00:27:08,000 Bumalik sa aming file sa C, I / O talakayan namin simulang gamitin ang mga tekstong file 474 00:27:08,000 --> 00:27:11,000 at paggamit ng mga file tulad ng fprintf, at pagkatapos ay namin kahit na sinimulan 475 00:27:11,000 --> 00:27:14,000 pinag-uusapan ng CSV file nang kaunti, comma separated values, 476 00:27:14,000 --> 00:27:17,000 kaya lahat ng mga ito pinapayagan sa amin upang magkaroon ng mga data na naka-imbak 477 00:27:17,000 --> 00:27:19,000 alinman sa hindi-patuloy o patuloy na. 478 00:27:19,000 --> 00:27:23,000 Ngunit kahit mga CSVs ay hindi talagang kaaya-aya sa paghahanap 479 00:27:23,000 --> 00:27:25,000 at pagpasok at pagtanggal. 480 00:27:25,000 --> 00:27:28,000 Talaga lang bobo tekstong file na pinaghihiwalay ng mga kuwit 481 00:27:28,000 --> 00:27:30,000 hilera sa pamamagitan ng hilera sa pamamagitan ng hilera sa pamamagitan ng hilera, kaya kung gusto mong i- 482 00:27:30,000 --> 00:27:32,000 maghanap na file ang pinakamahusay na maaari mong gawin talaga ay linear paghahanap. 483 00:27:32,000 --> 00:27:34,000 Mayroon kang magsimula sa tuktok ng file, basahin ang buong bagay sa, 484 00:27:34,000 --> 00:27:36,000 at hanapin para sa ilang mga halaga ng interes. 485 00:27:36,000 --> 00:27:39,000 Kung nais mong isingit ito kailangan mong gawin ang parehong bagay, 486 00:27:39,000 --> 00:27:41,000 iterating sa paglipas ng ito at pagpasok sa isang partikular na lugar, 487 00:27:41,000 --> 00:27:45,000 at sa katunayan, mayroon kang upang gawin ang lahat ng paghahanap logic iyong sarili. 488 00:27:45,000 --> 00:27:49,000 >> Hindi mo maaaring gawin ang matalino pagtutugma ng pattern sa isang CSV file maliban kung ikaw isulat ang iyong sarili ng code. 489 00:27:49,000 --> 00:27:51,000 Hindi mo maaaring gawin ang pagsasala ng isang CSV file 490 00:27:51,000 --> 00:27:53,000 maliban kung ikaw isulat ang iyong sarili ng code. 491 00:27:53,000 --> 00:27:56,000 Hindi magiging magaling kung ang ibang tao ay ilagay sa lahat ng pagsisikap 492 00:27:56,000 --> 00:27:59,000 sa aktwal na gawin ang paghahanap madali at pagpapasok ng madaling 493 00:27:59,000 --> 00:28:01,000 at pagtanggal at pag-update at iba pa? 494 00:28:01,000 --> 00:28:04,000 Iyon ay eksakto kung ano ang database ng. 495 00:28:04,000 --> 00:28:07,000 SQL, nakabalangkas na query wika, isa pang wika 496 00:28:07,000 --> 00:28:10,000 na dito kami ay nagpapakilala ngayon, ngunit ito ay masyadong medyo naa-access, 497 00:28:10,000 --> 00:28:13,000 at kung ano talaga namin ay pagpunta sa gawin ay lamang kumalbit nito ang ilan sa mga pinaka-kapansin-pansin 498 00:28:13,000 --> 00:28:16,000 katangian upang ang para sa pset 7, at kung ka ng isang bagay sa web batay, 499 00:28:16,000 --> 00:28:19,000 ang iyong panghuling proyekto, mayroon kang kakayahan upang ipahayag ang iyong sarili 500 00:28:19,000 --> 00:28:22,000 sa mga tuntunin ng mga query ng data. 501 00:28:22,000 --> 00:28:25,000 Mayroon kang ang kakayahan upang mag-imbak ng kaunti o ng maraming data 502 00:28:25,000 --> 00:28:28,000 sa isang mas nakabalangkas na paraan na ay sa pagtatapos ng araw 503 00:28:28,000 --> 00:28:32,000 gawing mas madali ang iyong buhay dahil sa SQL maaari mong ipahayag ang iyong sarili 504 00:28:32,000 --> 00:28:35,000 mas tiyak, mas methodically upang 505 00:28:35,000 --> 00:28:40,000 makakuha ng ilang mga subset ng data mula sa isang mas malaking kalipunan ng data. 506 00:28:40,000 --> 00:28:45,000 >> Maaari mong isipin ng isang database, sa kasong ito, isang SQL database, talagang tulad ng Excel 507 00:28:45,000 --> 00:28:48,000 o Numero kung saan ito ang isang spreadsheet, 508 00:28:48,000 --> 00:28:50,000 o maaaring maramihang mga spreadsheet, at isang spreadsheet, siyempre, 509 00:28:50,000 --> 00:28:53,000 may mga hanay at haligi, at iyon ay dahil 510 00:28:53,000 --> 00:28:56,000 SQL database ay pamanggit, pamanggit sa kamalayan 511 00:28:56,000 --> 00:28:59,000 na sila imbak ng data sa mga tuntunin ng mga talahanayan, 512 00:28:59,000 --> 00:29:01,000 hanay at haligi. 513 00:29:01,000 --> 00:29:03,000 Ang mga ito ay mas mataas na gumaganap kaysa sa isang bagay tulad ng isang spreadsheet, 514 00:29:03,000 --> 00:29:05,000 at isang spreadsheet ay nilalayong gamitin ng isang tao. 515 00:29:05,000 --> 00:29:08,000 Database ay sinadya na ginagamit ng isang programmer 516 00:29:08,000 --> 00:29:12,000 pagsulat ng code laban dito, kaya ang pagkakatawang-tao ng isang database 517 00:29:12,000 --> 00:29:14,000 ay pagpunta sa alinman sa linya ng command. 518 00:29:14,000 --> 00:29:18,000 >> Isa ng ang pinaka-popular na pamanggit database out doon ay, muli, MySQL, 519 00:29:18,000 --> 00:29:22,000 na kamangha-mangha libreng, napakataas na gumaganap na, at ito ay kung ano ang 520 00:29:22,000 --> 00:29:24,000 Facebook ginamit napaka maaga at sa ilang mga lawak pa rin ngayon 521 00:29:24,000 --> 00:29:27,000 upang mag-imbak ng maraming data nito, at kami na makita sa isang sandali 522 00:29:27,000 --> 00:29:30,000 na ang paggamit ng mga relatibong simpleng utos 523 00:29:30,000 --> 00:29:33,000 maaari naming pumili ng mga data, ipasok ang data, i-update ang data, 524 00:29:33,000 --> 00:29:37,000 tanggalin ang data at tulad ng, ngunit thankfully, mayroong isang mas user-friendly interface 525 00:29:37,000 --> 00:29:39,000 pa sa pag-type sa isang itim at puting prompt dito. 526 00:29:39,000 --> 00:29:43,000 Gagamitin namin para sa pset 7 at higit pa sa isang libreng tool na tinatawag na phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Ang pangalan ay hindi sinasadya. 528 00:29:45,000 --> 00:29:47,000 Tool ang mangyayari ipinatupad sa PHP, 529 00:29:47,000 --> 00:29:49,000 ngunit sa panimula walang-katuturang. 530 00:29:49,000 --> 00:29:53,000 Ano ang kapaki-pakinabang tungkol sa phpMyAdmin na ito ay isang web-based utility. 531 00:29:53,000 --> 00:29:55,000 Namin ang pre-install ito sa appliance para sa iyo, 532 00:29:55,000 --> 00:29:58,000 at dito maaari kang lumikha ng mga talahanayan sa isang database, 533 00:29:58,000 --> 00:30:01,000 maaari mong ipasok ang mga data, tanggalin ang data, at sa pangkalahatan ay makita 534 00:30:01,000 --> 00:30:04,000 ang iyong mga data sa isang medyo user-friendly na kapaligiran. 535 00:30:04,000 --> 00:30:07,000 Ang iyong mga gumagamit ay hindi pagpunta sa gamitin ang phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Ito ay talagang isang administrative o nag-develop ng tool 537 00:30:09,000 --> 00:30:12,000 kung saan upang makita at sundutin sa paligid ng iyong data at malaman kung paano buuin ang, 538 00:30:12,000 --> 00:30:15,000 tulad ng sa iyo maaaring ang iyong sarili gamitin ang Excel o Numero, 539 00:30:15,000 --> 00:30:19,000 ngunit ito upang maging isang mahusay na paraan ng pagtingin sa kung ano ang nangyayari sa ilalim ng hood 540 00:30:19,000 --> 00:30:22,000 sa gayon ay maaari kang tumuon sa kawili-wiling problema paglutas at hindi kaya magkano 541 00:30:22,000 --> 00:30:25,000 sa ang arcane utos. 542 00:30:25,000 --> 00:30:28,000 Natin tingnan ang isang halimbawa ng data na maaaring naka-imbak tabularly 543 00:30:28,000 --> 00:30:30,000 sa isang pamanggit database. 544 00:30:30,000 --> 00:30:32,000 Narito ang isa tulad halimbawa. 545 00:30:32,000 --> 00:30:35,000 Ngayon, sa kasamaang-palad, phpMyAdmin erred sa gilid ng ibinabato ng paraan ng masyadong maraming salita 546 00:30:35,000 --> 00:30:38,000 at graphics sa iyo, ngunit kung lagisan sa lamang sa 547 00:30:38,000 --> 00:30:42,000 ID haligi, ang haligi ng pangalan ng user, at ang hash haligi, 548 00:30:42,000 --> 00:30:45,000 ito ay epektibo ng isang spreadsheet, ngunit ito ang mangyayari sa isang snippet 549 00:30:45,000 --> 00:30:49,000 ng isang table sa loob ng appliance 550 00:30:49,000 --> 00:30:53,000 gamit ang isang file na binigay namin sa iyo sa problema set 7. 551 00:30:53,000 --> 00:30:57,000 >> Sa partikular, hindi namin bigyan ka ng isang file na kumakatawan 552 00:30:57,000 --> 00:31:01,000 talahanayan ng gumagamit, kaya ng isang spreadsheet na naglalaman ng mga gumagamit na may 3 mga hanay, 553 00:31:01,000 --> 00:31:05,000 ang isa na kung saan ay isang natatanging ID na simula sa 1 at incremented sandali. 554 00:31:05,000 --> 00:31:08,000 Ang ikalawang hanay ay isang user name, at mga mo na ginawa Hacker, 555 00:31:08,000 --> 00:31:12,000 Hacker edisyon para sa pset 2, maaaring makilala ang ilan sa mga pangalan ng gumagamit ng hindi bababa sa. 556 00:31:12,000 --> 00:31:16,000 Sa kanang bahagi ay password, ngunit hindi sila literal password. 557 00:31:16,000 --> 00:31:19,000 Hindi nila hashes nito, kaya ito ay lumiliko ang 558 00:31:19,000 --> 00:31:22,000 na ang pag-iimbak ng mga password sa isang database ay isang talagang masamang ideya. 559 00:31:22,000 --> 00:31:25,000 Mo na ang lahat ng maaaring basahin sa ilang mga punto ng ilang mga website 560 00:31:25,000 --> 00:31:28,000 o database ilang kumpanya na nakompromiso, at pagkatapos ay mayroon kang 561 00:31:28,000 --> 00:31:31,000 baguhin ang iyong password, kailangan mo upang makakuha ng mga refund sa mga bagay 562 00:31:31,000 --> 00:31:34,000 dahil ang ilang masamang tao na aktwal na sinira in sa iyong account bilang isang resulta. 563 00:31:34,000 --> 00:31:38,000 >> Pag-iimbak ng mga password sa malinaw na teksto, unencrypted sa isang database 564 00:31:38,000 --> 00:31:41,000 ay ganap na tanga, at pa ito lubhang nakakatawa 565 00:31:41,000 --> 00:31:44,000 pagkatapos na basahin ang tungkol sa ilang mga mahusay na kilala kumpanya 566 00:31:44,000 --> 00:31:47,000 minsan sa press na database ay nakompromiso, 567 00:31:47,000 --> 00:31:50,000 at ang bahagi na hindi nakakatuwa, ngunit ang katotohanan na ang mga database naglalaman unencrypted 568 00:31:50,000 --> 00:31:53,000 password ay katawa-tawa dahil literal na may isang linya ng code 569 00:31:53,000 --> 00:31:57,000 maaari mong protektahan laban sa partikular na pagbabanta, at na kung ano ang ginawa namin dito. 570 00:31:57,000 --> 00:32:00,000 Kahit na para sa aming mga pekeng kaunti CS50 bersyon ng Pananalapi 571 00:32:00,000 --> 00:32:03,000 encrypt kami ng mga password para sa mabuting panukala, at ang katotohanan na 572 00:32:03,000 --> 00:32:07,000 ang lahat ng mga password magsimula sa $ 1 $ isang convention. 573 00:32:07,000 --> 00:32:10,000 Na lamang ay nangangahulugan na ito ay naka-encrypt o talagang na-hash, 574 00:32:10,000 --> 00:32:13,000 na ay tulad ng isang one-way na function na-encrypt 575 00:32:13,000 --> 00:32:17,000 kung saan hindi ka maaaring baligtarin ang mga epekto nito na may isang bagay na tinatawag MD5. 576 00:32:17,000 --> 00:32:21,000 >> Ang katotohanan na ang 50 ay pagkatapos na ay nangangahulugan na ang isang halaga ng asin 577 00:32:21,000 --> 00:32:24,000 na 50 ay ginagamit para sa hashing ang lahat ng mga password maliban para sa isa. 578 00:32:24,000 --> 00:32:27,000 Mine, siyempre, tulad ng maaari mong makita doon, Ha, 579 00:32:27,000 --> 00:32:30,000 ay gamit ng ibang asin, kaya mga mo na Nakakuha bahagyang tripped up 580 00:32:30,000 --> 00:32:33,000 siguro sa Hacker 2, na maaaring ang resulta ng aming pag-ginamit 581 00:32:33,000 --> 00:32:36,000 ng ibang hash kaysa sa iba dahil ang aking password ay talagang ang parehong 582 00:32:36,000 --> 00:32:38,000 bilang ilang mga iba pang mga gumagamit up doon. 583 00:32:38,000 --> 00:32:41,000 Sa katunayan, kung ikaw ay naghihintay sa lahat ng mga linggo upang malaman kung 584 00:32:41,000 --> 00:32:44,000 kung ano ang mga password ay dito ang mga password na ikaw ay hinamon 585 00:32:44,000 --> 00:32:48,000 upang magpahaginit sa Hacker edisyon ng problema sa set 2, kaya wala masyadong nakakalito. 586 00:32:48,000 --> 00:32:50,000 Sa katunayan, malan ay ang parehong bilang jharvard, 587 00:32:50,000 --> 00:32:54,000 ngunit kung pumunta namin pabalik sila tumingin ibang. 588 00:32:54,000 --> 00:32:58,000 >> Tumuon sa jharvard sa pulang-pula dahil sila ay inasnan naiiba. 589 00:32:58,000 --> 00:33:01,000 Ang algorithm ay ligalig sa isang paraan na 590 00:33:01,000 --> 00:33:05,000 halaga ng hash, ang naka-encrypt na mukhang ng kaunti ang halaga ng iba't ibang 591 00:33:05,000 --> 00:33:08,000 dahil ang input ay bahagyang naiiba, ngunit ang password sa ilalim ng hood 592 00:33:08,000 --> 00:33:10,000 ay pa rin sa huli pulang-pula. 593 00:33:10,000 --> 00:33:12,000 Ngayon, na nagmamalasakit tungkol sa? 594 00:33:12,000 --> 00:33:15,000 Well, kami ay nagbibigay ng sa iyo ng mga gumagamit ng sample, ang pangalan ng sample na gumagamit 595 00:33:15,000 --> 00:33:18,000 at hashes ng kanilang mga password sa gayon ay aktwal na may ilang mga 596 00:33:18,000 --> 00:33:23,000 customer para sa CS50 Pananalapi kapag mo munang bumaba sa lupa sa iyong code. 597 00:33:23,000 --> 00:33:27,000 Magkakaroon ka upang ipatupad ang higit pang mga talahanayan sa loob ng MySQL, sa loob ng database. 598 00:33:27,000 --> 00:33:30,000 Magkakaroon ka upang lumikha ng higit pang mga spreadsheet, epektibo, ngunit hindi namin nagpasya upang bigyan ka ng isang ito 599 00:33:30,000 --> 00:33:33,000 upang makapagsimula ka, at makikita mo na ang hanay ng pagtutukoy ng problema 600 00:33:33,000 --> 00:33:37,000 ay nagtuturo sa iyo sa pamamagitan ng proseso ng pag-import ng table na ito 601 00:33:37,000 --> 00:33:39,000 at din ay nagpapaliwanag kung ano ang ilan sa mga katangian ay, 602 00:33:39,000 --> 00:33:41,000 at makikita mo rin ang na ibinibigay namin sa iyo ang code 603 00:33:41,000 --> 00:33:44,000 upang pangasiwaan ang hashing o ng pag-encrypt ng mga password, 604 00:33:44,000 --> 00:33:49,000 kaya hindi mo kailangang mag-alala masyadong maraming tungkol sa kung ano ang MD5 o ang tulad ay talagang lahat ng tungkol sa. 605 00:33:49,000 --> 00:33:53,000 >> Kaya, SQL, nakabalangkas na query na wika. 606 00:33:53,000 --> 00:33:56,000 Ito ay, medyo lamang, ang wika na hindi namin tungkol sa upang simulan ang paggamit sa pset 7 607 00:33:56,000 --> 00:34:01,000 at marahil higit pa sa upang humiling ng data mula sa ilang database. 608 00:34:01,000 --> 00:34:06,000 Ang data ay, muli, na naka-imbak tabularly sa mga pamanggit mga talahanayan, mga haligi, at mga hilera, 609 00:34:06,000 --> 00:34:09,000 ngunit gamit ang ilang mga ganap na simpleng syntax tulad tanggalin, 610 00:34:09,000 --> 00:34:12,000 isingit, i-update at piliin ang maaari naming gawin eksakto na. 611 00:34:12,000 --> 00:34:15,000 Maaari naming tanggalin ang mula sa database, ipasok, 612 00:34:15,000 --> 00:34:19,000 i-update ang data, pati na rin ang piliin, na, mabawi ang mga data mula sa database. 613 00:34:19,000 --> 00:34:21,000 Paano namin pumunta tungkol sa paggawa nito? 614 00:34:21,000 --> 00:34:23,000 Hayaan akong magpatuloy sa appliance. 615 00:34:23,000 --> 00:34:28,000 Hayaan akong makuha ang http://localhost, 616 00:34:28,000 --> 00:34:30,000 kung saan, muli, ay ang lokal na appliance mismo. 617 00:34:30,000 --> 00:34:32,000 Na default palayaw nito. 618 00:34:32,000 --> 00:34:35,000 At hayaan mo akong pumunta sa / phpmyadmin. 619 00:34:35,000 --> 00:34:39,000 Ito ang mangyayari sa isang espesyal na URL na ang appliance ang ay preconfigured upang maunawaan 620 00:34:39,000 --> 00:34:42,000 na agad na prompt sa akin para sa isang user name at password. 621 00:34:42,000 --> 00:34:46,000 >> Gaya ng dati, ako type jharvard at pulang-pula, 622 00:34:46,000 --> 00:34:48,000 ngunit mapagtanto na ang administrator account sa computer. 623 00:34:48,000 --> 00:34:53,000 Ito ay isang pagkakataon na mayroon ding isang jharvard nakarehistro para sa CS50 Finance. 624 00:34:53,000 --> 00:34:56,000 Jharvard, pulang-pula, magpasok nagbibigay sa akin ang user interface na nakita natin 625 00:34:56,000 --> 00:34:59,000 isang sulyap sa isang sandali ang nakalipas, at ito ay isang maliit na napakalaki sa una, 626 00:34:59,000 --> 00:35:02,000 ngunit makatitiyak, hindi ka pagpunta sa i-click ang karamihan ng mga link sa tool na ito. 627 00:35:02,000 --> 00:35:05,000 Makikita mo gamit ang isang maliit na subset na sobrang kapaki-pakinabang, 628 00:35:05,000 --> 00:35:08,000 ang unang na kung saan ay database dito. 629 00:35:08,000 --> 00:35:11,000 Kung pumunta ako sa mga database, mapansin na ako prompt upang lumikha ng isang database. 630 00:35:11,000 --> 00:35:14,000 Ito ay tulad ng paglikha ng isang bagong file sa Excel, epektibo. 631 00:35:14,000 --> 00:35:18,000 Ako pagpunta sa sige at tawagan ito panayam, at ako upang balewalain ang patlang doon, ang paghahambing. 632 00:35:18,000 --> 00:35:20,000 Mayroon itong gawin na may representasyon ng data sa ganyang bagay, 633 00:35:20,000 --> 00:35:24,000 at ako pagpunta sa i-click ang lumikha, at ngayon mapansin bilang ipaalam ko ng lumikha 634 00:35:24,000 --> 00:35:27,000 sa kaliwang bahagi kung saan sinasabi nito na walang database 635 00:35:27,000 --> 00:35:30,000 Sa lalong madaling panahon ang dapat kong makita ang mga database ng panayam. 636 00:35:30,000 --> 00:35:32,000 >> Kung ako ngayon mag-click sa kaliwang bahagi, ang database ng panayam, 637 00:35:32,000 --> 00:35:34,000 mapansin ang aking tab na baguhin nang kaunti. 638 00:35:34,000 --> 00:35:38,000 Mayroon akong na istraktura, SQL, i-export, import at ilang iba pang mga bagay. 639 00:35:38,000 --> 00:35:40,000 Istraktura ay medyo mas blangko. 640 00:35:40,000 --> 00:35:43,000 Walang nahanap na mga talahanayan sa database, tulad ng sinasabi nito dito, 641 00:35:43,000 --> 00:35:47,000 kaya sabihin lumikha ng isang talahanayan, at sabihin magpatuloy at lumikha ng isang talahanayan 642 00:35:47,000 --> 00:35:53,000 gusto ng mga mag-aaral, at kung gaano karaming mga hanay ang gusto naming? 643 00:35:53,000 --> 00:35:55,000 Natin panatilihing ito simpleng, at hayaan ang tala para sa bawat mag-aaral 644 00:35:55,000 --> 00:35:58,000 numero ng ID, pangalan, at ng isang email address. 645 00:35:58,000 --> 00:36:02,000 >> Susubukan naming panatilihin ito simpleng tulad na, kaya 3 haligi, pumunta. 646 00:36:02,000 --> 00:36:05,000 Ang form na makikita mo dito ngayon Medyo magulo at napakalaki, 647 00:36:05,000 --> 00:36:08,000 ngunit hindi namin lamang upang pumunta sa pamamagitan ng ito hilera sa pamamagitan ng hilera, kaya talagang mabilis sabihin bigyan 648 00:36:08,000 --> 00:36:14,000 ang unang haligi sa isang pangalan ng ID para sa natatanging identifier database. 649 00:36:14,000 --> 00:36:17,000 Ito ay isang integer. Ko aktwal na huwag pansinin ang haba at halaga. 650 00:36:17,000 --> 00:36:21,000 Int isang 32 bit hindi mahalaga kung ano ang nag-type ka sa may, kaya natin iwan itong blangko. 651 00:36:21,000 --> 00:36:24,000 Default na halaga, maaari ba akong gawin ito null, tulad ng tinukoy. 652 00:36:24,000 --> 00:36:27,000 Ako pagpunta sa iwanan na nag-iisa. Hayaan ang mga ay hindi mag-alala tungkol sa mga default na halaga. 653 00:36:27,000 --> 00:36:29,000 Sabihin mag-scroll sa paglipas dito sa kanan, mga katangian. 654 00:36:29,000 --> 00:36:31,000 Ito ay kawili-wili. 655 00:36:31,000 --> 00:36:33,000 Natin sige at medyo mang sabihin na ang mga ID dapat na unsigned. 656 00:36:33,000 --> 00:36:35,000 Natin hindi mag-aaksaya ng anumang mga negatibong numero. 657 00:36:35,000 --> 00:36:37,000 >> Hana 0 sa 4 na bilyong, bigyan o, 658 00:36:37,000 --> 00:36:40,000 at pagkatapos ay sabihin hindi pindutin ang anumang ng mga patlang na ito pa doon, 659 00:36:40,000 --> 00:36:43,000 ngunit pagkatapos ay hayaan mo akong mag-type sa pangalan down na dito, 660 00:36:43,000 --> 00:36:46,000 at pagkatapos ay ang iba pang ay email, sa gayon ay ang catch ang email 661 00:36:46,000 --> 00:36:50,000 at pangalan, malinaw naman hindi integer, kaya sabihin baguhin ang mga ito sa ibang field. 662 00:36:50,000 --> 00:36:53,000 Ito lumiliko ang varchar, variable na haba magpasinda, 663 00:36:53,000 --> 00:36:56,000 tulad ng isang string sa isang database ng SQL 664 00:36:56,000 --> 00:36:59,000 ngunit sa isang variable na haba, at iyong aktwal na upang sabihin ito sa maaga ang 665 00:36:59,000 --> 00:37:02,000 maximum na haba ng string, kaya ako pagpunta sa medyo mang 666 00:37:02,000 --> 00:37:05,000 sa pamamagitan ng uri ng convention 255 character. 667 00:37:05,000 --> 00:37:08,000 Ko lubos sabihin 32. Maaari kong sabihin 1,000. 668 00:37:08,000 --> 00:37:11,000 Uri ng pangangailangan upang magpasya para sa iyong sarili batay sa iyong mga demograpiko kung ano ang 669 00:37:11,000 --> 00:37:14,000 pangalan ng pinakamahabang mag-aaral at pumunta sa na numero o ng kaunti mas malaking, 670 00:37:14,000 --> 00:37:17,000 ngunit kung ano ang magaling tungkol sa isang varchar hindi ito pagpunta sa-aaksaya 671 00:37:17,000 --> 00:37:19,000 255 bytes sa pangalan ng bawat mag-aaral. 672 00:37:19,000 --> 00:37:23,000 Kung David hindi ito upang gamitin ang isang buong 255 bytes, 673 00:37:23,000 --> 00:37:26,000 ngunit ang isang upper bound, kaya kukunin ko na pumunta may 255 sa pamamagitan lamang ng convention, 674 00:37:26,000 --> 00:37:30,000 ngunit maaari naming debate na sa ilang mga mas mababang halaga, at para sa email address 675 00:37:30,000 --> 00:37:34,000 lamang upang maging pare-pareho 255, ngunit muli, maaari naming magkaroon ng parehong debate. 676 00:37:34,000 --> 00:37:36,000 Ngunit ako pagpunta sa gawin ang isa sa iba pang mga bagay sa dito sa kanang bahagi. 677 00:37:36,000 --> 00:37:40,000 >> Ano ang makapangyarihang tungkol sa isang database ay na maaari itong gawin ng maraming ng mabigat na nakakataas 678 00:37:40,000 --> 00:37:42,000 o kumplikadong mga trabaho para sa iyo. 679 00:37:42,000 --> 00:37:46,000 Sa partikular, ko talagang hindi pakialam kung ano ang numero ng ID ng aking mag-aaral. 680 00:37:46,000 --> 00:37:49,000 Lamang Ito ay nilalayong maging isang natatanging identifier sa isang database 681 00:37:49,000 --> 00:37:52,000 kaya mayroon akong 32-bit maikli at malinaw na representasyon ng na mag-aaral 682 00:37:52,000 --> 00:37:55,000 kaya na mayroon akong ilang mga paraan ng natatanging pagkilala sa kanila 683 00:37:55,000 --> 00:37:58,000 baka may 2 Davids, halimbawa, sa isang klase. 684 00:37:58,000 --> 00:38:01,000 Sa katunayan, ako pagpunta sa suriin ito Ai box, pagdagdag ng auto, 685 00:38:01,000 --> 00:38:04,000 kaya na ang database, MySQL, figure out 686 00:38:04,000 --> 00:38:08,000 ano ang ID ng bawat bagong ipinasok na mag-aaral ng pagpunta upang maging. 687 00:38:08,000 --> 00:38:11,000 Hindi ko kahit sa pakialam tungkol sa aking code, 688 00:38:11,000 --> 00:38:13,000 at rin ako pagpunta upang pumili ng isang bagay sa ilalim ng menu ng index. 689 00:38:13,000 --> 00:38:17,000 Index ang drop down dito ay pangunahing, natatanging, 690 00:38:17,000 --> 00:38:19,000 index at buong teksto. 691 00:38:19,000 --> 00:38:21,000 Maaari mong marahil hulaan kung ano ng ilang mga bagay na ito ay, 692 00:38:21,000 --> 00:38:24,000 ngunit ito lumiliko sa pamanggit database 693 00:38:24,000 --> 00:38:28,000 programmer o database administrator sa preemptively 694 00:38:28,000 --> 00:38:32,000 bigyan ng mga pahiwatig sa database sa kung ano ang mga patlang 695 00:38:32,000 --> 00:38:34,000 sa isang table ay isang maliit na espesyal. 696 00:38:34,000 --> 00:38:37,000 >> Halimbawa, sa kasong ito ako pagpunta sa sabihin na ang ID 697 00:38:37,000 --> 00:38:42,000 pagpunta sa isang pangunahing index, na kilala bilang isang pangunahing key. 698 00:38:42,000 --> 00:38:44,000 Ano ang ibig sabihin nito ay sa pamamagitan ng kahulugan ID na simula ngayon 699 00:38:44,000 --> 00:38:48,000 ay makilala ang mga mag-aaral sa table na ito. 700 00:38:48,000 --> 00:38:53,000 Mag-aaral Walang ay magkakaroon ng parehong ID dahil ako kapita-pitagan ang hadlang na ito o ito index. 701 00:38:53,000 --> 00:38:55,000 Bukod dito, kung ano ito ay pagpunta sa gawin para sa akin ay ito upang sabihin sa 702 00:38:55,000 --> 00:38:58,000 MySQL na ang ID ay espesyal. 703 00:38:58,000 --> 00:39:03,000 Pinapahalagahan ko lalo na tungkol sa ID, kaya magpatuloy at gawin ang magic ng iyong magarbong istraktura ng data, 704 00:39:03,000 --> 00:39:05,000 bumuo ng ilang uri ng puno. 705 00:39:05,000 --> 00:39:08,000 Karaniwan ito ay isang bagay na tinatawag ang B-puno, na hindi namin tumingin sa linggo ang nakalipas, 706 00:39:08,000 --> 00:39:11,000 ngunit ito ay isa pang tulad istraktura ng data na katulad sa espiritu sa binary puno 707 00:39:11,000 --> 00:39:15,000 at sinusubukan na namin ay tumingin sa, ngunit ito ay sasabihin 708 00:39:15,000 --> 00:39:18,000 sa database ang patlang na ito ay kaya mahalaga na ako malamang 709 00:39:18,000 --> 00:39:22,000 gusto mong upang maghanap dito, magpatuloy at bumuo ng ilang magarbong 710 00:39:22,000 --> 00:39:25,000 istraktura ng data sa memory upang mapabilis ang paghahanap sa gayon ay may perpektong 711 00:39:25,000 --> 00:39:28,000 sila pare-pareho ang oras o hindi bababa sa bilang malapit na hangga't maaari 712 00:39:28,000 --> 00:39:32,000 sa gayon ay hindi ito malipat sa linear paghahanap, na kung saan ay hindi pagpunta sa maging 713 00:39:32,000 --> 00:39:34,000 ang pinaka mataas na gumaganap na diskarte. 714 00:39:34,000 --> 00:39:37,000 Sa pamamagitan ng kaibahan, ang email address ng isang pangunahing key. 715 00:39:37,000 --> 00:39:41,000 >> Sa teorya, ang email address ng lahat ay natatangi, maliban kung nagbabahagi ka ng ilang account, 716 00:39:41,000 --> 00:39:45,000 ngunit sa pangkalahatan ay hindi handa na upang gamitin ang isang bagay tulad ng isang string 717 00:39:45,000 --> 00:39:49,000 bilang isang pangunahing key dahil kung ang layunin nito sa buhay ay para makilala 718 00:39:49,000 --> 00:39:55,000 mga hilera sa talahanayan ng iyong walang dahilan upang gamitin ang mga 255 bytes maximally 719 00:39:55,000 --> 00:39:58,000 para makilala ang isang tao kung maaari kang makakuha ng ang layo mula sa 4 bytes lamang 720 00:39:58,000 --> 00:40:00,000 o 32-bit na int. 721 00:40:00,000 --> 00:40:03,000 Sa pangkalahatan, ang isang pangunahing key ay dapat maikli at maikli at malinaw 722 00:40:03,000 --> 00:40:07,000 at perpektong isang bagay tulad ng isang integer o isang malaking int, na ang mangyayari sa 64 bit. 723 00:40:07,000 --> 00:40:11,000 Ngunit ang isang email address ay dapat na natatangi, at isa ng ang mga tampok ng isang database masyadong 724 00:40:11,000 --> 00:40:14,000 upang ipatupad ang natatangi para sa akin. 725 00:40:14,000 --> 00:40:18,000 Sa pamamagitan ng pagpili ng natatanging dito sa tabi ng email, kahit email mismo 726 00:40:18,000 --> 00:40:21,000 ay scrolled-off ang screen, ako sinasabi sa database 727 00:40:21,000 --> 00:40:23,000 huwag akong pinagkakatiwalaan. 728 00:40:23,000 --> 00:40:26,000 Huwag hayaan mo akong isingit sa database 729 00:40:26,000 --> 00:40:29,000 ang parehong email address dalawang beses, kahit na kung ako ay isang tulala at am hindi 730 00:40:29,000 --> 00:40:32,000 napakabuti sa aking mga ifs at pang tao ifs at aktwal na PHP code 731 00:40:32,000 --> 00:40:37,000 at ko sinasadyang ipaalam ang user magrehistro sa isang umiiral na email address 732 00:40:37,000 --> 00:40:40,000 database sa isa pang antas ng pagtatanggol para sa kawastuhan 733 00:40:40,000 --> 00:40:44,000 upang matiyak na ang na duplicate na email address ay hindi nagtatapos sa talahanayan. 734 00:40:44,000 --> 00:40:49,000 >> Ngayon, sa pamamagitan ng kaibahan, para sa pangalan marahil ay hindi gusto mong gumawa na natatanging 735 00:40:49,000 --> 00:40:51,000 dahil pagkatapos ay may hindi kailanman ay maaaring 2 Davids o 2 Mike Smiths, halimbawa, 736 00:40:51,000 --> 00:40:55,000 sa iyong database, kaya ang isang magpapadala kami iwan lang nag-iisa. 737 00:40:55,000 --> 00:40:58,000 Ako pagpunta sa magpatuloy at i-click ang i-save sa kanang ibaba, 738 00:40:58,000 --> 00:41:02,000 at ang lahat ay mukhang mabuti, ngunit mapansin dito 739 00:41:02,000 --> 00:41:04,000 ito ay isang bahagi na sa ngayon hindi namin ay paggastos ng masyadong maraming oras sa 740 00:41:04,000 --> 00:41:07,000 dahil syntax ay isang maliit na kumplikado, at hindi namin upang lumikha ng talahanayan 741 00:41:07,000 --> 00:41:10,000 lahat ng madalas, ngunit SQL mismo ay isang wika, 742 00:41:10,000 --> 00:41:13,000 ang syntax kung saan dito mismo na nai-highlight ko. 743 00:41:13,000 --> 00:41:18,000 Ano phpMyAdmin talaga ginagawa ito ay lumilikha ng isang web-based na GUI para sa iyo 744 00:41:18,000 --> 00:41:23,000 kung saan maaari mong i-save ang oras at hindi upang mano-manong i-type ang 745 00:41:23,000 --> 00:41:26,000 medyo mahaba SQL query tulad na. 746 00:41:26,000 --> 00:41:29,000 >> Sa ibang salita, kung nais mong mano-manong lumikha ng table na ito, 747 00:41:29,000 --> 00:41:32,000 alinman sa na black and white prompt o kahit sa phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 sa pamamagitan ng paggamit ng iba pang mga tab na ito, ang ang SQL tab na kung saan maaari mong i-type sa anumang query SQL 749 00:41:35,000 --> 00:41:38,000 gusto mo, lantaran, ito ay kinuha sa akin minutong 750 00:41:38,000 --> 00:41:41,000 sa aktwal na maalala ang buong syntax, at kahit pagkatapos ko marahil ay may 751 00:41:41,000 --> 00:41:45,000 ginawa ilang mga typo, kaya ang tool na ito ay kapaki-pakinabang para sa mga bagay tulad na, at ring nakapagtuturo. 752 00:41:45,000 --> 00:41:49,000 Maaari mong simulan upang magpakilala kung ano ang syntax ang 753 00:41:49,000 --> 00:41:52,000 lang ng maganda ang kulay coding phpMyAdmin na ang pagdaragdag ng 754 00:41:52,000 --> 00:41:54,000 para sa aming visual na kaginhawahan. 755 00:41:54,000 --> 00:41:56,000 Ngunit ngayon ipaalam sa gawin ito sa halip. 756 00:41:56,000 --> 00:42:00,000 Hayaan akong pumunta sa insert tab sa itaas, at ipaalam sa akin sige at ipasok halimbawa 757 00:42:00,000 --> 00:42:04,000 isang ID ng sabihin nating aktwal Wala akong pakialam. 758 00:42:04,000 --> 00:42:07,000 Ito ay pagpunta sa auto pagdagdag. Pupunta ako upang ipaalam ang database deal na ito. 759 00:42:07,000 --> 00:42:11,000 Ngunit ay hindi ko David, at ang aking email ay dapat na malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Natin sige dito at ilalagay sa Mike Smith bilang ng isa pa. 761 00:42:16,000 --> 00:42:18,000 Bibigyan kita ng aking sarili sa isang huling pangalan pati na rin, 762 00:42:18,000 --> 00:42:22,000 at magpapadala kami sa kanya na smith@example.com, 763 00:42:22,000 --> 00:42:24,000 at pagkatapos ay kung saan ko pumunta sa tabi? 764 00:42:24,000 --> 00:42:27,000 Well, mukhang go ang pindutan upang i-click, at voila. 765 00:42:27,000 --> 00:42:30,000 Mapansin sa tuktok 2 mga hilera na ipinasok. 766 00:42:30,000 --> 00:42:32,000 Ito ay ang aktwal na SQL query. 767 00:42:32,000 --> 00:42:36,000 Na ang phpMyAdmin tool na pinaandar para sa akin, 768 00:42:36,000 --> 00:42:40,000 ngunit sa dulo resulta, paunawa, kung ako ngayon pumunta sa tab ng pag-browse, 769 00:42:40,000 --> 00:42:43,000 upang makita ang 2 mga hilera sa talahanayan na ito, napaka nakapagpapaalaala aesthetically 770 00:42:43,000 --> 00:42:46,000 ng talahanayan ng nakita natin mas maaga para sa aming mga user mula sa pset 7, 771 00:42:46,000 --> 00:42:51,000 isa na David Malan, isa na ngayon ang Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Ngunit lamang maging malinaw, hindi ko kailangang gamitin ang phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 at sa katunayan, ikaw ay pagpunta sa lalong madaling panahon ang pagsulat ng code para sa pset 7 774 00:42:56,000 --> 00:43:01,000 na automates ang proseso ng pagdaragdag ng mga hilera, pagtanggal ng mga hilera, mga pag-update ng mga hilera at ang mga tulad ng, 775 00:43:01,000 --> 00:43:04,000 kaya ipaalam sa akin sa halip pumunta sa SQL tab up dito 776 00:43:04,000 --> 00:43:14,000 at i-type piliin * mula sa mga mag-aaral kung saan 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Sa ibang salita ipagpalagay na ngayon ikaw ay may 779 00:43:21,000 --> 00:43:26,000 ilang HTML form, at ang mga uri ng user sa kanilang mga email address, bukod sa iba pang mga patlang, 780 00:43:26,000 --> 00:43:29,000 at ang layunin ngayon sa PHP sa likod code ng pagtatapos 781 00:43:29,000 --> 00:43:31,000 upang aktwal na maghanap ng iba pang mga detalye na gumagamit. 782 00:43:31,000 --> 00:43:34,000 Ano ang iyong buong pangalan? Ano ang iyong numero ng ID? 783 00:43:34,000 --> 00:43:37,000 Maaari mong magsulat ng isang SQL query tulad nito, piliin ang * mula sa mag-aaral 784 00:43:37,000 --> 00:43:40,000 kung saan ang email = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 At kung ako pagkatapos ay i-click ang pumunta, mapapansin na ang dapat kong, at sa katunayan ko, kumuha ng isang hilera lang. 786 00:43:46,000 --> 00:43:50,000 Mike ay tinanggal mula sa hanay ng resulta, pati na ang koleksyon ng mga hilera 787 00:43:50,000 --> 00:43:53,000 ay karaniwang tinatawag na, dahil hindi siya ang parehong email address bilang akin. 788 00:43:53,000 --> 00:43:57,000 >> Ngayon, muli, dito para pset 7 makikita mo gamitin phpMyAdmin bilang isang administrative tool 789 00:43:57,000 --> 00:44:00,000 at paturo tool upang matuto ang iyong paraan 790 00:44:00,000 --> 00:44:03,000 sa buong mundo ng SQL, ngunit sa pagtatapos ng araw 791 00:44:03,000 --> 00:44:08,000 ka pagpunta sa sumusulat ng mga query na ito sa loob ng aktwal na PHP code, 792 00:44:08,000 --> 00:44:11,000 at kaya manatiling nakatutok sa ng walkthrough Zamyla partikular 793 00:44:11,000 --> 00:44:14,000 kung saan makakakuha ka ng isang tour ng code ng pamamahagi para sa hanay ng problema 794 00:44:14,000 --> 00:44:18,000 kung saan binigyan ka namin ng hindi lamang ang aesthetics para sa pahina ng pag-login 795 00:44:18,000 --> 00:44:21,000 at ang magaling logo sexy na nagsasabing CS50 Finance, ngunit namin ang nagbigay sa iyo ng 796 00:44:21,000 --> 00:44:24,000 ng grupo ng mga function na ay gumawa ng iyong buhay ng kaunti mas madali. 797 00:44:24,000 --> 00:44:27,000 Rin namin ang nakasulat ang bahagi ng pset para sa iyo, 798 00:44:27,000 --> 00:44:32,000 ang login bahagi nito partikular, upang bigyan ka ng isang pakiramdam ng isang kinatawan disenyo 799 00:44:32,000 --> 00:44:36,000 na aktwal na gumagamit ng controller, halimbawa, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php at tulad, at pagkatapos ay makikita mo ay mayroon ding pset template direktoryo 801 00:44:40,000 --> 00:44:43,000 na may lahat ng iyong mga tanawin, lahat ng aesthetics. 802 00:44:43,000 --> 00:44:46,000 At sa gayon ang pangkalahatang workflow sa pset 7 ay pagpunta sa na 803 00:44:46,000 --> 00:44:49,000 bisitahin ang iyong mga gumagamit ng controller sa pamamagitan ng isang URL sa isang browser. 804 00:44:49,000 --> 00:44:53,000 Na controller ay naglalaman ng PHP code na iyong sinulat ni, at sa loob ng iyong PHP code 805 00:44:53,000 --> 00:44:57,000 maaaring ilang mga linya ng SQL Nested in sa pagitan ng mga double quote 806 00:44:57,000 --> 00:45:00,000 at ang pumasa sa isang function namin sinulat ni tinatawag query 807 00:45:00,000 --> 00:45:03,000 na makakatulong sa iyo na makipag-usap sa database nang hindi gumagamit ng isang bagay tulad ng 808 00:45:03,000 --> 00:45:05,000 isang administrative tool tulad phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Magagawa mong magsulat ng SQL pahayag sa PHP code 810 00:45:08,000 --> 00:45:11,000 at kumuha ng PHP array ng hanay ng resulta, 811 00:45:11,000 --> 00:45:14,000 ng mga hilera na aktwal na tumutugma sa query na iyon. 812 00:45:14,000 --> 00:45:18,000 At katulad magagawa mong upang gawin ang mga pagsingit o tinatanggal 813 00:45:18,000 --> 00:45:22,000 o mga update o tulad ng, ang syntax kung saan ay medyo katulad, 814 00:45:22,000 --> 00:45:25,000 at makikita mo mula sa ilang mga online na mga sanggunian, mula sa pamamahagi ng code 815 00:45:25,000 --> 00:45:29,000 at mula sa pset mag-empake mismo eksakto kung paano pumunta tungkol sa paggawa na. 816 00:45:29,000 --> 00:45:33,000 Napagtanto huli talaga namin ka lamang scratching sa ibabaw ng SQL 817 00:45:33,000 --> 00:45:36,000 at ng MySQL, ngunit ang kapangyarihan nito talagang na pinakakawalan nito isang 818 00:45:36,000 --> 00:45:40,000 tumuon sa mga problema na nais mo upang malutas, ang mga kaso ng paggamit nais mong ipatupad 819 00:45:40,000 --> 00:45:43,000 nang hindi na kinakailangang mag-alala nang lubos ng mas maraming, hindi bababa sa maagang sa, 820 00:45:43,000 --> 00:45:47,000 tungkol sa kung saan at kung paano upang mag-imbak at maghanap sa iyong mga database, 821 00:45:47,000 --> 00:45:50,000 at ito ay medyo literal kung saan Facebook mismo nakuha ang kanyang panimulang 822 00:45:50,000 --> 00:45:53,000 gamit ang MySQL at pagkatapos gamit ang higit pa na mga server ng MySQL at pagkatapos pang MySQL server 823 00:45:53,000 --> 00:45:57,000 bago mahaba hanggang pagkatapos sila ay talagang simulan ang pag-iisip ng husto tungkol sa kung paano 824 00:45:57,000 --> 00:46:00,000 iimbak ng data, kung paano upang mag-imbak ng mga bagay mas mahusay, 825 00:46:00,000 --> 00:46:04,000 kaya kahit na isasaalang-alang namin para sa ipinagkaloob katunayan ang na-index at natatanging mga hadlang 826 00:46:04,000 --> 00:46:08,000 at iba pa lamang gumana may isang kawili-wiling pakikipag-usap 827 00:46:08,000 --> 00:46:12,000 na ito ay maaaring lahat kalaunan humantong sa, kaya Napagtanto na lang kami scratching sa ibabaw 828 00:46:12,000 --> 00:46:17,000 ng kung ano ay maaaring kalaunan para sa iyo o sa iyong proyekto maging lubos isang bit ng malaking data. 829 00:46:17,000 --> 00:46:22,000 >> Gamit na sinabi, sabihin magtapos dito, at kami na nakikita mo sa susunod na linggo. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]