[Musika sa pag-play] David J. MALAN: Lahat ng karapatan. Maligayang pagbabalik. Ito ay CS50. Ito ang katapusan ng linggo 8. At tulad ng alam mo, mayroon kaming magandang regular na oras ng opisina sa loob ng ilang ng dining hall, kabilang ang Annenberg. At ang ilan sa mga koponan Pinapayuhan kinuha ang ilang mga larawan kani-kanina lamang. At sa karangalan ng Halloween, naisip namin na gusto namin ibahagi ang isa na sa halip nahuli sa amin sa pamamagitan ng sorpresa dito sa Annenberg Hall lamang ang iba pang mga gabi. Ang iyong mga kaklase Jacob na ibinabanta para sa ang larawang ito, ngunit ay mas nakakaaliw ay sa Facebook, ang kasunod pakikipag-usap na nangyari pagkatapos nito. Ang kanyang unang post bilang tugon sa kanyang larawan ay na ito. Ilang minuto sa ibang pagkakataon, siya ay nagpasya sa isa up ang kanyang sarili na may ito. Ito nagpunta sa pagkatapos ay pumunta sa ito, at pagkatapos, kahit na higit pa amusingly ay kapag ang kanyang ina chimed in. At pagkatapos ay sa huli, parang ito ay isa lamang isang kahanga-hangang lalang para sa isang -play na nangyayari. Kaya, kung nais mong upang makita Jacob at sa iba pa, kasama ng mga ito Cynthia Meng, kung sino ang sa likod ng mga eksena na staff CS50 zone ng, magtungo sa URL na ito at ang pag-play dito. Kaya nang walang karagdagang linggal, ngayon namin patuloy na ito pagtingin sa web programming, at ang aktwal na paglikha ng mga programa na hindi tumatakbo sa iyong command line, ngunit sa halip ay tumakbo sa loob ng isang browser. Siguro ngayon, o napaka sa ilang sandali, iyong pupuntahan upang maging sa gitna ng pagpapatupad ang iyong sariling web server, na ay naiiba mula sa mga web programming. Web server sa pset6 ay tungkol sa pagsusulat ng software na nakakaalam kung paano kumuha Mga kahilingan ng HTTP mula sa isang browser, o kahit na mula sa iyo, ang isang tao, may isang programa na tinatawag na Telnet, at pagkatapos ay tumugon sa mga kahilingan sa alinman sa sa pamamagitan ng pagsigam ang isang file na HTML, o isang jpeg, o isang gif, o kahit na isang .php file. Ngunit sa isang server ng web, ito ay hindi dapat buksan lamang ang isang file na PHP, isang bagay na nagtatapos sa .php, at pagkatapos ay sabihin ang lahat ng mga nilalaman. Ito ay dapat gawin kung ano ang file na unang? Kaya na magsalita. Hindi compile ito, sinabi namin sa Monday, ngunit rather-- Kaya, bigyang-kahulugan ito. PHP ang isang kahulugan ng wika, at iba pa isa sa mga pangunahing tampok sa iyong web server, kahit na ipinatupad ng sa amin, ay ang kakayahan para sa iyong mga web server upang mapansin, oh. Ito ay isang file na nagtatapos sa .php. Hayaan hindi ako magpadala lamang ito sa ng gumagamit tulad ng ito ay static na nilalaman, ngunit sa halip ipaalam sa akin basahin ito linya sa pamamagitan ng linya, kaliwa papuntang kanan, at bigyang-kahulugan ito. At upang gawin, na guys habilin tunay magtikin sa isang programa sa appliance, at sa maraming mga computer system, lamang na tinatawag na PHP. Iyon ay ang pangalan ng PHP ang sariling interpreter wika. Kaya, piraso na ipapatupad namin para sa mo, at kung ano ang natitira para sa iyo, sa huli, ay isang numero ng mga piraso, bukod sa kung saan ay pagpapatupad ng suporta para sa mga static na nilalaman. Ngunit ngayon, at may itakda ang problema pitong, ikaw ay pagpunta sa simulan sa paglipat sa aktwal na pagsusulat ng code na PHP na maipo-kahulugan sa pakikipag-usap sa likod ng pagtatapos database na nag-iimbak ng impormasyon. Kaya maunawaan unang sabihin ng mas mahusay na ng dalawang mga superglobals at lamang kung magkano ang kapangyarihan sa iyo kumuha sa labas ng kahon para sa libreng may isang wika tulad ng PHP. Mga bagay na hindi mo kailangang upang ipatupad ang iyong sarili. Kaya, nakita namin sa Monday $ _GET, kung saan ay isang superglobal, na kung saan ay nagsasalita ng PHP para lamang sa isang pandaigdigang variable na maaari mong ma-access kahit saan. At kung ano ang nasa loob ng $ _GET? Ano ang nasa loob ng superglobal na namin makita? Tiyak na istatistika sa alam ng hindi bababa sa isang tao. Ano ang nasa loob ng $ _GET? Oo? Madla: Ito ang mga variable ilagay mo sa string ng query. David J. MALAN: Perpekto. Ito ang mga variable sa iyo maglagay sa query string. Kaya, sa aming mas lumang mga halimbawa ng reimplementing Google kapag namin ay may isang URL, at pagkatapos ay tandang pananong, na demarcates simula ng HTTP mga parameter, pagkatapos ay nagkaroon kami q katumbas isang bagay, tulad ng q ay katumbas ng pusa, kung ano ang awtomatikong pumunta sa loob ng na $ _GET sobrang global para sa iyo, dahil sa PHP, ay isang pangunahing ng Q, at ng halaga nito ng pusa. Sa ibang salita, $ _GET at lahat ng mga bagay na ito ay nag-uugnay array, hash talahanayan ng mga klase, na tindahan ng mga pindutan at halaga. Ngayon, bumalik sa pset5, ang hash talahanayan na maaaring ipinatupad, o ang subukan mo ay maaaring nagpatupad, talagang ay epektibo ng isang nag-uugnay array, ang isang istraktura ng data kung saan maaari mong iugnay key na may halaga. Ngunit sa pset5, ang mga halaga ay walang halaga. Ang halaga ay lubos na totoo o hindi. Ay ang salita sa diksyunaryo? Kaya, kapag na-hash ka ng isang salita tulad ng mansanas upang makita kung mansanas ay nasa diksyonaryo, ang iyong mga pag-andar check baka Nagbalik ang true o false. Kaya, na epektibo ang halaga namin ang pagbalik. Ngunit nakita natin sa Lunes sa madaling sabi, maaari mong tiyak -ugnay sa higit pang mga kawili-wiling mga halaga kaysa sa tunay na lamang o mali may key, tulad ng mansanas. Maaari mong aktwal na magbalik ng arbitrary string, at sa katunayan, iyon ang $ _GET at mga hayaan ang iba pang mga variable mong gawin. Kaya $ _POST ay katulad sa espiritu, ngunit kung mong isumite ang form na ito sa pamamagitan ng post, ng ibang paraan ng HTTP na ginagamit para sa mga bagay tulad ng credit card, at mga pribadong impormasyon, at kahit na binary impormasyon tulad ng mga larawan, mga bagay na napupunta sa loob ng $ _POST. At talagang para sa mga file tulad ng jpeg at watnat, mayroong kahit na isa pang na hindi dito ang tinatawag na $ _FILES pati na rin. Kaya, ang server hindi namin mangatwiran masyadong magkano, ngunit nagbibigay sa iyo ng access upang ayusin ng mas mababang mga detalye ng antas ng tungkol sa ang server mismo na ginagamit mo. Cookie at session, bagaman, kami ay epektibo makita ngayon. Ang huling ay kung ano ang ginagamit namin upang ipatupad ang paniwala ng isang shopping cart. Isang napaka-simpleng isa, ngunit pagpapabalik na nagkaroon kami halimbawang ito dito, pagbibilang kung gaano karaming beses mo ay binisita ang pahinang ito dati. Ngunit ngayon, sa halip na hanapin lang sa ang epekto ng ito, ni magbukas ng ipaalam Ng Chrome Inspektor, kung saan maaari kang karaniwang gawin sa pamamagitan ng pag-click sa kanan o sa Pagkontrol ng pag-click kahit saan sa web page, at pagkatapos ay piliin ang siyasatin elemento. O kaya, maaari kang pumunta sa pamamagitan ng mga menu na naglalarawan namin sa spec pset6 ni. At ako pagpunta sa tab na Network dito, at sabihin panoorin para sa isang sandali ang HTTP trapiko na pagpunta papunta at pabalik. Hayaan akong pumunta sa unang maaga at cache ng malinaw ng Chrome. Kaya maaaring maging pamilyar sa ilan sa iyo sa diskarteng ito na, at kami ay pagpunta sa gamitin ito para sa mga layuning pag-debug dito. Ngayon namin bilang computer na siyentipiko ay pagpunta sa simulan ginagawa ito para sa pag-debug mga layunin, kung saan kami ay i-clear ang cache, karaniwan, nang sa gayon ay namin maaaring makakuha ng pawalan ng bagay na tinatawag na cookies. Kaya ikaw ay malamang na pamilyar sa pangkalahatan sa kung ano ang cookies ay, o hindi bababa sa na mayroon ang mga ito, ngunit kung ano ang iyong pag-unawa sa mga ito, tulad ng isang gumagamit ng mga computer, kung ano ang isang cookie? Oo. Madla: Ito ay isang bit of-- na rin, hindi bit sa isang panahon ng computer science. Ito ay isang piraso ng data na ang isang Nagpapadala ang website sa iyo sa pagkakasunud-sunod upang magawang i-record ang mga istatistika sa iyo. David J. MALAN: OK, mabuti. Kaya ito ay isang piraso ng data na ang isang server, naglalagay sa iyong computer, at hayaang magbigay ng tuntuning panlahat na ito kahit na higit pa, ito ay isang key value-- na rin, na nakakakuha ng mas tumpak. Ito ay isang piraso ng impormasyon, isang piraso ng data, na ang server ay ilagay sa iyong computer at madalas, ang ginagawa ng server ito upang matandaan kung sino ka. Kaya halimbawa, odds ay ikaw ay malamang na -log in sa mga site tulad ng Facebook, o Gmail, o iba bago, at mong mag-log in gamit ang iyong username at password, at pagkatapos ay matapos na, para sa ilang mga numero minuto o oras o kahit na araw, Naaalala ng server na mo ay, sa katunayan, nakalog-in. Ngayon, paano na aktwal na nangyayari ay? Dahil tiyak na hindi ka retyping ang iyong username at password sa tuwing kang mag-navigate sa isang ibang pahina sa Facebook. Kaya ito ay lumiliko ang mga cookies ang mga sagot. Ang cookie maaari mong isipin bilang, uri ng mga gusto, isang digital kamay stamp na maaari kang makakuha sa isang amusement parke o isang club na tunay nagpapahiwatig ka na dito bago, at ikaw na ipinapakita ang iyong ID sa Portero ng klab, para sa Halimbawa, at na ang club o ng parke Dapat na ngayon ay ipinapalagay na na napatotohanan na. Mo pa natukoy sa pamamagitan nito. Kaya sa na sa isip, ni buksan ang sagot dito ipaalam. Hayaan akong sige, ko lang ginawa, at i-clear ang lahat ng aking mga cookies. At ngayon kung ano ang ako pagpunta sa gawin ay pindutin nang matagal ang Shift, para lamang sa mabuting panukala, at papuwersa-reload ang pahina. Shift siguraduhin lamang wala na ay makakakuha ng naka-cache. At narito ang kahilingan na nagpunta at pabalik. Kaya sa paglipas dito mayroon kami ng isang kahilingan, at hayaang sa akin mag-zoom in down na dito, at ng maraming ito ay isang uri ng hindi kawili-wili para sa mga detalye ngayon na ang browser ay awtomatikong ipinadala, ngunit mag-click Tingnan ipaalam Pinagmulan upang makita ang mga raw na header. At kung nag-dived sa pset6 na, makikita mo tiyak na makilala ang mga bagay tulad nito, at marahil ilang ng iba pang mga linya dito, ngunit kung ano ang higit pang mga kagiliw-giliw na para sa ngayon kung mag-scroll ko pababa, hindi sa kahilingan ngunit sa tinatawag na tugon, Marahil ay mukhang pamilyar ang linyang ito. Iyon ay isang magandang bagay kapag nakita mo ang 200 OK. Tila ito ang petsa at oras sa server at mayroong isang bungkos ng mga bagay-bagay. Oh, ito ay kawili-wili. Ino-out sa tuwing ginagamit mo ang PHP, hindi bababa sa server na ito, spits out ang server kung ano bersyon ng PHP na iyong ginagamit. Aling, talaga, para sa seguridad mga layunin, hindi ay isang magandang bagay. Subalit, kami ay bumalik sa na ilang iba pang mga oras marahil. Ngunit ngayon ito ang makatas linya ngayon, at sandaling namin nakita ang ilan sa mga ito, Sa tingin ko sa Facebook kung kailan namin poked sa paligid ng Inspektor sa oras na iyon, hanay cookie ay kung ano ang planting na maliit na bahagi ng impormasyon sa iyong computer. Ito ay isang HTTP header na epektibong na nagsasabi sa iyong browser, Chrome, IE, kahit ano, hey store sa user browser hard drive, o sa RAM ng gumagamit, isang key na tinatawag na PHPSESSID, na isang shorthand notation para sa session ID, at bigyan ito ng isang halaga ng 0vlk8t, tuldok, tuldok, tuldok. Ang isang talagang mahaba ang palsipikado random alphanumeric string. Ito ay lamang ng isang talagang malaking bilang, ngunit ito ay naka-encode na may mga titik at numero upang ang laki ng mga ito ay maaaring maging kahit na mas malaki kaysa sa mga numero ng nag-iisa. At pagkatapos, sa pamamagitan ng mga paraan, Path = /, na Nangangahulugan lamang na ang cookie na ito ay dapat na na nauugnay sa kabuuan ng website, hindi lamang sa isang partikular na pahina sa buong bagay. Kaya ito ay ang virtual kamay stamp. Ito ay parang sa server, Facebook, o sa aming kaso ang appliance, May literal na nakasulat 0vlk8t at iba pa, sa iyong mga kamay. Pansinin kung ano ang server, hindi ginagawa ito ay hindi pag-iimbak ng aking username, tiyak hindi nag-iimbak ang aking password. Sa halip, lumalabas na ito ay pag-iimbak ng palsipikado random na impormasyon sa gayon ay maaari hulaan walang sinuman kung ano ang aking kamay stamp ay. Sa bahagi ng server, samantala, ang server Mawawala na matandaan, marahil sa isang database o isang bagay na, na ang mga gumagamit, na sa hinaharap ay nagtatanghal ng isang kamay stamp ng 0vlk8t, tuldok, tuldok, tuldok, ay dapat na nauugnay sa partikular na shopping cart, kaya upang makipag-usap. Sa ibang salita, kung pumunta ako ngayon Bumalik dito at i-reload ang pahinang ito, kung paano malaman ang server na binisita ko ang isa sa oras? O kung ito gagawin ko muli, kung paano gumagana ang server malaman na binisita ko ito ng dalawang beses? Well kung pumunta ako pababa upang ito pinakahuling kahilingan, na ay ngayon ang ikatlong na ako ay nagpadala ng sa kabuuan, mapapansin ngayon ang aking kahilingan. Mayroon pa rin ito humiling dito, parehong tulad ng dati, mayroong pa rin ng buong bungkos ng mga bagay-bagay na iyong binabalewala namin tulad ng dati, ngunit sa pinakadulo huling header, ito panahon, dahil napuntahan ko dito bago, ay isang pagtatanghal ng ito virtual kamay stamp. Kung saan ang line dito, hindi nakatakda cookie ngunit cookie tutuldok PHPSESSI = 0vlk8t, na aking browser lamang ng awtomatikong pagtatanghal ng kamay stamp upang ang ngayon sa server, sa lalong madaling napagtanto ng ito, ooh, ito ay 0vlk8t tuldok user, tuldok, tuldok, Maaari ko ngayon tandaan na siya ay at reassociate sa user na kung ano ang impormasyon na gusto kong, at lahat ng na ang impormasyon ay maaaring naka-imbak sa pamamagitan ng sa iyo, ang programmer, sa $ _SESSION. Kaya maging malinaw, kung buksan ko tunay mabilis sa gedit na aktwal na file, counter.php, sa aking lokal na host pampublikong direktoryo tulad ng dati, mapapansin na, sa katunayan, Sa huli ako sa pag-iimbak sa $ _SESSION Quote magpanipi "counter," ang halaga ng nakaraang sagot na Nakukuha ko mula sa mga linyang ito up dito na namin tumingin sa huling beses na plus one. Kaya sa ilalim ng hood, na ang lahat ng cookies ay. Ito ay lamang ng isang uri ng digital kamay stamp ng pagpunta pabalik-balik, at lantaran kung bubuksan mo ang Chrome Inspektor sa anumang website bisitahin mo ngayon, may sobrang mataas na posibilidad, na iyong pupuntahan upang makita siguro isa, siguro kalahating dosenang cookies na tatandaan mo. At mas malala pa, kung ang mga website na iyong binibisita lahat ay may mga advertisement, na ay tiyak na medyo pangkaraniwan ngayon, at kung ang mga advertisement ay darating mula sa ilang mga sentro ng partido, ang isang tao tulad ng Google AdWords o habang ang mga ito tumawag sa isa sa kanilang mga produkto o ibang tulad ng mga vendor na magbenta ng mga ad, kung ano ang kawili-wili, at lantaran kung ano ang isang maliit na nakakaligalig, tungkol sa kung paano gumagana ang HTTP, ay na kung mayroon kang naka-embed ng isang ad sa Facebook.com, at Google.com, at Harvard.edu, ang anumang mga numero ng ng mga website, kaya tulad na mayroong isang gitnang tao kung sino ang paghahatid ng up na patalastas para sa lahat ng tatlong ng mga website na iyon, ito ay lumiliko out na ang cookies ay para sa bawat domain. Kaya kung mayroon kang darating na isang ad mula sa parehong kumpanya sa iba't ibang mga website, kumpanya na maaaring epektibong subaybayan kung sino ikaw ay sa lahat ng mga website na iyon. Hindi maaaring kilala Harvard bumibisita ka sa Facebook. Hindi maaaring kilala Facebook at bumibisita ka sa Harvard. Ngunit kahit anong serbisyo sa ad ginagamit nila kung domain na iyon ay nasa parehong Harvard.edu web mga pahina at Facebook.com mga webpage, ang gitna ng tao ay tiyak na alam kung sino ka dahil sa mga cookies na ito ibinabahagi sa kabuuan, o sa halip na, na tinatawag na mamamakyaw. Kaya makikita namin bumalik sa ito sa implikasyon sa seguridad hinggil doon, ngunit mayroong maraming impormasyon maimbak tungkol sa iyo anumang oras mo bisitahin ang karamihan ng anumang web page sa sa internet at ito talaga nagbabawas sa napaka-simpleng mekanismo. Ano ang mangyayari, pagkatapos, kung ikaw ay sobrang paranoyd at nagpasya kang pumunta sa Chrome o IE o i-off ang anumang at ang iyong mga cookies? Ano ang mangyayari? Oo? Really-- mo nagawa mo na ito tama? OK. Hindi, sige. Madla: Ang ilang mga website ay hindi magkaroon ng isang function nang hindi ito i Facebook. David J. MALAN: Oo! Kaya ilang mga website ay lamang ang pagtatrabaho. At sa karamihan ng mga website mga araw na ito sa panimula na umaasa sa mga cookies, lalo na kung mayroon silang mag-log sa, lamang sila ng pagpunta sa masira. Dahil isinasaalang-alang ang kahalili, kung ang website Walang paraan ng pag-alala kung sino ka, at samakatuwid ay sa iyong web browser ay hindi na kumakatawan sa bawat HTTP kahilingan ng kamay stamp, epektibo ang isang website tulad ng pagpunta Facebook ni upang i-prompt ka upang mag-log sa bawat oras nagsulsi baguhin mo ang pahina, o i-click ang isang link, na ay tiyak na hindi isang partikular na magandang user karanasan. Kaya na doon, masyadong, ay kabilang sa mga trade off. Kaya nang walang karagdagang linggal, sabihin tumagal ng para sa ipinagkaloob na may web programming, sa mga wika tulad ng PHP, maaari mong tandaan impormasyon na tulad nang sa problema set pitong kapag ipatupad mo ang iyong sarili E * Trade-tulad ng website kung saan upang bumili ng at magbenta ng mga stock, makikita mo matandaan eksakto kung ano ang user ay bumili at ibinenta at kung sino siya ay sa pamamagitan ng paraan ng session na ito. Ngunit kami ay pagpunta sa kailangan isang may interes paraan kaysa sa email upang simulan pinapanatiling impormasyon sa paligid. Mag-right? Sa Monday, usapan natin ang tungkol Frosh IMS at kung paano sa bersyon ng isa sa website na iyon, taon na ang nakakaraan, ang lahat ng ginawa namin ay -email ang Proctor kung sino ang sa pagsingil ng nasa loob ng lunsod sports programa, pangalan, at ang kasarian, at man o hindi ang mga ito ay isang kapitan, at ang dorm ng isang tao kung sino ang nagrerehistro para sa isang nasa loob ng lunsod sport. Kaya ito ay hindi masama, ngunit siya pagkatapos ay kinailangan awitin sa pamamagitan ng kanilang e-mail, gumawa ng isang spreadsheet o isang bagay tulad ng na, upang panatilihin ang lahat nakaayos. Kaya tiyak namin bilang mga programmer Maaari gawin ito para sa Proctor. At kaya ipasok sa SQL, Naka-istrakturang Wika Query, na kung saan ay pagpunta sa hitsura kaakit-akit iba sa parehong C at PHP, at makikita mo sumisid sa higit pang mga kamay sa PHP at problema set pitong ngunit SQL din, o SQL, ito ay isang wika na na ginagamit mo upang makipag-usap sa isang database. Ngunit kung ano ang isang database? Well sa tingin mo ng isang database, hindi bababa sa ngayon, tulad ng pagiging tulad ng isang Excel file, o kung ikaw ay isang gumagamit ng mga numero ng file sa Mac, o kung ikaw ay isang Google Apps gumagamit ng isang Google spreadsheet, ito ay epektibo sa isang database, o talaga partikular na ang isang pamanggit database. Ang isang relational database lamang isang bagay na may hanay at haligi, at maaari kang mag-imbak ng anumang uri ng impormasyon sa mga hilera o haligi. Ngunit kung ano ang magaling tungkol sa SQL, at tungkol sa aktwal na mga database hindi, lamang spreadsheet o Google spreadsheet, ay maaari mong gamitin ang isang wika upang aktwal na magsagawa ng mga query sa magpasok ng mga data, upang alisin ang data, upang maghanap ng mga data, kahit na pinaka-mahalaga, at sa iyo Hindi mo na kailangang gamitin ito nang walang kinikilingan nang manu-mano bilang maaari kang karaniwang ng Google spreadsheet tulad nito. Kaya sa SQL, may isang bungkos ng pangunahing pahayag o mga piraso ng pag-andar built in. Mayroong maraming higit pa sa mga ito, ngunit maaari kang pumunta isang malaking distansya sa pamamagitan lamang ng pag-alam na wikang ito na tinatawag na SQL ay may hindi bababa sa apat mga pahayag na maaari mong magamit. Tanggalin, para sa pag-aalis ng data, Ipasok ang, para sa pagdaragdag ng mga hilera, I-update ang, para sa pagbabago hilera, at pagpili, para sa pagbalik ng mga hilera at na sa katunayan kung ano ang ginagawa SQL. Ito ay nagpapatakbo ng ganap na sa mga hilera sa gayon na kapag mong ipasok, o alisin, o i-update, o piliin kung ano ang iyong pagbalik bilang isang tinatawag na hanay ng resulta, tulad ng isang hanay ng mga hilera. Ang isang bungkos ng mga hilera mula sa isang table. Kaya pabalik sa araw, at kahit sa araw na ito, maaari kang makipag-ugnayan sa database gamit ang command line, ngunit hindi partikular na masaya upang gamitin ang ang itim at puti estilo window at aktwal na magsagawa ng command at sundutin sa paligid ng iyong database. Ang graphical interface ng gumagamit, o GUI, ay mas lalong kanais-nais, arguably, at sa gayon ang tool naming inirerekumenda at paunang na-install para sa iyo sa appliance ay tinatawag na phpMyAdmin. Ito ay isang kabuuang pagkakaisa na ang mga pangalan ng bagay na ito ay may PHP sa loob nito, Nangangahulugan lamang ito na ang mga tao na sinulat ni programang ito ang kanilang mga sarili isinulat ito sa PHP. Pero sa huli tungkol sa pangangasiwa isang database server, tulad ng isang MySQL server na maaaring mayroon ka, tulad ng sa iyo gawin, sa CS50 appliance. Kaya mayroong mas detalyado dito kaysa sa kailangan naming asikasuhin ngayon, ngunit kung ano ang key ay na sa kaliwa bahagi ay isang listahan ng mga database na mayroon ka sa iyong computer, sa iyong CS50 appliance, o dumating pangwakas na mga proyekto na maaari kang mayroon sa isang third party, isang kumpanya website o web server, na maaari kang magbabayad para sa espasyo. Kaya sa kaliwa ay ang database, isa sa kung saan ay pset7 na hiniram ko mula sa susunod pset linggo, at pagkatapos ay sa tuktok may napansin mayroong isang bungkos ng mga tab, isa sa kung saan ay database, SQL, katayuan, mga user, i-export at iba pa. Kaya maaari kang pumunta sa isang mahabang paraan sa pamamagitan lamang ng napagtatanto na karamihan sa mga user interface ay nasa tuktok na kaliwang haligi at sa kanang tuktok up doon. Kaya kung ano ang maaari naming aktwal na gawin sa mga ito? Well, sa simulan ang paglikha ng isang ipaalam kaunting impormasyon tulad ng sumusunod. Ipagpalagay na ang mga sumusunod ay ang kaso, bilang ay sa loob lamang ng ilang araw, na nais mong ipatupad ang website, na tinatawag na CS50 Finance, at ang website na ito ay nagbibigay-daan bumili ka Ilagay sa mga sipi magpanipi at magbenta ng mga stock. At ito ay pagpunta sa maisip ang presyo ng mga stock, sa huli bilang makikita mo, sa pamamagitan ng pakikipag-usap sa Yahoo Finance. Aling, kamangha-mangha, ay isang libreng serbisyo kung saan maaari mong pumasa sa isang ticker stock tulad ng GOOG para sa Google, at ito habilin bigyan ka pabalik kasalukuyang stock ng Google presyo sa loob ng nakalipas ilang minuto ng hindi bababa sa. Kaya gagamitin mo na, sa huli, upang magpanggap para sa user bumili at magbenta ng mga aktwal na mga stock gamit virtual na pera, ngunit ang unang bagay gumagamit ang nangyayari upang makita ang ay screen sa pag-login na ito na humihiling sa mga ito para sa kanilang username at password. At kaya, isa sa mga unang hamon para sa iyo sa pset7 ay magiging upang ipatupad ang dulo pabalik database, spreadsheet kung habilin sa iyo, na pupuntahan iimbak mga pangalan ng user at password at sa huli kung ano ang mga stock na pagmamay-ari nila, at kung gaano karaming, at kung magkano ang cash mayroon sila, kaya isang bungkos ng iba pang mga bagay sa iba pang mga talahanayan, o mga spreadsheet. Kaya ipaalam sa tumagal ng isang pagtingin sa kung paano ito maaaring lumitaw sa unang tingin. Pupunta ako sa bumalik sa ang appliance at ako pagpunta sa pumunta sa URL na ito dito phpMyAdmin localhost / phpmyadmin at makikita mo na ito tumatagal sa akin sa isang interface nang eksakto tulad ng nakita natin sa screen shot, at dito ko May dagdag na database tinatawag na aralin para sa araw na at ipaalam sa akin sige una at mag-click sa pset7. Mukhang kong magkaroon ng ilang mga pagpipilian, isa para sa mga bagong, para sa paglikha ng isang bagong talahanayan, at isang link sa mga gumagamit, na ay isang talahanayan na ginawa ko na. Kaya kung ano ang isang talahanayan? Kaya kung ginamit mo ang Excel bago, at kung ikaw ay gamit na mga numero o Google Mga Spreadsheet, buksan up ka ng isang window at kumuha ka ng isang buong bungkos ng mga hilera at mga hanay, ngunit pagkatapos na karaniwan mong magkaroon ng mga worksheet sa ibaba, o hiwalay na mga tab. Maaari mong isipin na ang bawat worksheet bilang isang talahanayan upang ang database, sa huli, ay isang kombinasyon ng isa o higit pang mga talahanayan, isa o higit pang mga worksheet, sa mundo ng isang normal na spreadsheet. Kaya ipaalam sa akin sige at mag-click sa worksheet na premade ko, na tinatawag na mga gumagamit, kilala Database talahanayan. At kung mag-scroll pababa ko dito, hayaan mo akong mag-zoom out ng kaunti, ito ay kung ano ang phpMyAdmin ay nagsasabi sa amin ay sa loob ng talahanayan na ito ngayon. Ito ay isang maliit na nakalilito sa unang sulyap dahil ang UI ay hindi ang prettiest bagay sa mundo, ngunit kung ano ang kawili-wiling ay ang bahaging ito dito. ID, username, at hash. Nang maaga, at magagawa mong kamay ito sa problema magtakda ng pitong, bigyan ka namin ng isang file na naglalaman ng isang napakabilis maliit na talahanayan ng database, hiniram talaga mula sa hacker edisyon ng problema itakda ang dalawa, sa loob ng na mayroong anim na mga hilera. Isa para Belinda lahat ng paraan pababa sa isa para sa Zamyla, at napansin sa kaliwa ng mga na username ay natatanging ID tulad ng isang, dalawa, tatlo, apat, limang, anim, integer, at pagkatapos ay sa kanan ang mga hash. At kung, odds ay, hindi mo magawa itakda ang problema hacker edisyon ng dalawa, ngunit isang hash lamang tulad ng isang naka-encrypt na password sa ilang mga caveats. At kaya, kung ano ang iyong nakikita dito ay ang naka-encrypt na bersyon ng lahat ng anim na sa aming mga password mula sa problema itakda ang dalawang ni hacker edisyon. Ngayon sa kaliwa ay ilan lang bagay GUI, pag-edit ng hanay na ito, pagkopya ng hilera na ito, pagtanggal ng hanay na ito. Ngunit kung ano ang kawili-wiling ngayon ay ang sumusunod. Maaari ko talagang simulan -eksperimento sa talahanayan na ito. Kaya kung pumunta ako at i-click ang SQL tab, nakakatanggap ako ng malaking kahon ng teksto na ito. At hindi ito kung paano namin ang pagpunta sa gawin ito kapag aktwal na pagsusulat ng code. Upang maging malinaw, phpMyAdmin ay isang kasangkapan lamang na pagpunta sa ipaalam sa amin sundutin sa paligid ng database at ipaalam sa amin-eksperimento sa mga query. Kaya halimbawa, ipagpalagay Isagawa ko nang eksakto ito. Pumili ng, na kung saan ay isa sa mga keyword nabanggit ko mas maaga, bituin, na kumakatawan sa lahat mga haligi sa isang table. Mula sa kung ano ang talahanayan? Well, ang mga gumagamit. At notice mayroong ito kakaiba convention sa SQL kung saan aktwal mong gamitin ang bumalik ticks, karaniwan, hindi solong panipi at hindi double quote kapag makipag-usap sa iyo tungkol sa mga pangalan ng talahanayan, kaya ang quote pabalik ay ang bagay sa itaas na kaliwang kamay ng iyong keyboard pinaka malamang. Kaya ipaalam sa akin sige ngayon at mag-iwan lamang na mag-isa at mag-scroll pababa at i-click ang Go, at nagpapaumanhin kami talagang pagpunta upang makita ang mga parehong bagay. Kami ay ipinatupad lamang ng isang SQL query sinasabi piliin ang lahat ng bituin mula sa talahanayan na tinatawag na mga gumagamit, at kung ano ang makabalik ay na ito. Sa huli, magagawa naming upang gawin ang parehong bagay sa code, ngunit sa ngayon ang lahat Nais kong huwag ay makita ito sa aking browser. Gawin ang isang bagay na rin ipaalam medyo naiiba. Hayaan akong bumalik sa tab na SQL, at sabihin nating lamang na ano? Zamyla ay mawawala ang lahat ng kanyang pera, at samakatuwid ito oras para sa amin upang tanggalin ang kanyang bilang isang gumagamit. Hindi na niya pag-log in. Kaya ako ng pagpunta sa sabihin tanggalin from-- na rin, panatilihin ang paggamit ng malaking titik para sa pagkakapare-pareho, tanggalin mula sa mga user kung saan. At kaya, maaari kaming magkaroon ang mga predicates, o mga qualifiers, sa pagtatapos ng aking statement kung saan at kung paano ko tatanggalin ang Zamyla? Sa pamamagitan ng kanyang pangalan Zamyla, kaya ang haligi, isa sa mga haligi ay pinangalanang, kaya kung saan name = "Zamyla". At dito ko bang gamitin ang double quote o solong quote, gagamitin mo lang ang likod ticks kapag pinag-uusapan ng mga pangalan, halimbawa, ng mga talahanayan o mga patlang. At hayaan mo akong i-click ang Pumunta rito. At ngayon, ang web page ay pagiging isang maliit na uptight. O kaya, huwag mo ba talagang upang maisagawa tanggalin mula sa mga user kung saan ang pangalan ay katumbas ng Zamyla? Oo. Kaya ngayon, kung pumunta namin pabalik sa aking mga talahanayan sa pamamagitan ng pag-click sa mga gumagamit, mapapansin na ang Hm. Goofed ko. At sa katunayan, uri ako ng -click ang layo kaya mabilis mo ay hindi kahit na makita ang pulang mensahe ng error, marahil. Ano ang gagawin ko mali? Madla: Hindi mo kailangan upang mapakinabangan ang kanyang pangalan. David J. MALAN: Oo ako Isulat sa malaking titik ang kanyang pangalan, ngunit ang kanyang username-- ko talaga ginawa ng ilang mga pagkakamali, tama? One, ang kanyang username ay zamyla, maliliit na titik Z, at ang pangalan ng hanay ay username, hindi pangalanan, kaya ang gawin muli ang ipaalam. Hayaan akong sige at tanggalin mula sa mga user kung saan username ay katumbas ng quote magpanipi "Zamyla". Ang lahat ng mga karapatan? Kaya ito ang hitsura ng isang maliit na mas mahusay, sabihin sa akin pumunta mag-scroll pababa at i-click ang Go. Ito ay nangyayari pa rin sa sumigaw sa akin upang makatiyak. -Click ako Oo, at ngayon ay nakikita natin, nang tapat na nangyari ito, talaga mabilis, mas mababa sa isang pangalawang tiyak, ito ay eksaktong query na Kaka-pinaandar. Upang kumpirmahin, hayaan mo akong i-click ang user at sa katunayan ngayon Zamyla ay nawala. Ngayon gawin ang mga tapat ipaalam. Ipagpalagay na Gabe ay nais na magparehistro para sa website. Ano ang SQL query, kung ano ang command na maaaring nagta-type ako upang magdagdag ng Gabe? Well ito ay medyo simple. Ipasok sa mga gumagamit, at ngayon ito ay makakakuha ng isang maliit na misteryosong. Kailangan ko bang tukuyin, sa server, kung ano ang mga field na gusto kong italaga. Hindi ko talagang pakialam kung ano ang ID Gabe ni bilang na ito ay, sa gayon Pupunta ako sa laktawan iyon. Sa halip Pupunta ako sa sabihin username, hash, at pagkatapos ay ang mga halaga na gusto kong ilagay doon ay magiging Gabe. At pagkatapos ay ang kanyang hash, hindi ko alam. Kaya sa ngayon, pupunta ako sa umalis na bilang ng malaking gawin. Darating kami pabalik sa na sa set ang problema spec bilang sa kung paano mo talagang gawin iyon. Kaya mapansin, muli, ang syntax. Ipasok ang pangalan sa table, pagkatapos ay isang parenthesized listahan ng mga patlang, ang mga haligi na gusto mong idagdag mga halaga sa, at pagkatapos lamang ang parehong eksaktong pagkakasunud-sunod ang natitira upang kanan ng halaga na nais mong idagdag, at ito lamang wrapping dahil ang teksto ay isang maliit na mahaba. Kaya ngayon hayaan mo akong i-click ang Go. Ipinasok ang isang hilera. At ngayon kung pumunta ako pabalik sa gumagamit, kung ano ang kawili-wiling ay hindi lamang ay Gabe na ngayon sa database, kung ano ang tila ang kanyang ID? Well ito ay pitong. Bakit ito pitong kapag ako ay hindi idagdag ito? Kaya ito, masyadong, ay isa sa mga mga tampok makakakuha ka ng database. Isang maraming mga built in na pagpapagana. Ito ay lumiliko out na kapag Nilikha ang table na ito, Preconfigured ko ito Awtomatikong magtalaga ng isang ID sa paraan na mga palugit. Kaya kung sakaling mo poked sa paligid, at tumingin sa kung ano ang iyong Facebook ID bilang na ito ay, mga araw na ito ito ay hindi talaga ang isang bagay na gawin, ngunit Facebook bilang isang API, Application Programming Interface, kung saan maaari kang makakuha ng bumalik ang maramihang mga data tungkol sa sa iyong sarili, tungkol sa iyong mga kaibigan, at ang iyong koneksyon. At kung ano ang ginamit upang maging uri ng mga cool na, bumalik sa araw, ay upang hanapin kung ano ang iyong Numero ng ID ng Facebook ay. Mark Zuckerberg ng, halimbawa, ay tatlong dahil siya ang may-akda ng site. At bilang napupunta ang kuwento, lumikha siya dalawang pagsubok na account, mga user ng isa at dalawa, na pagkatapos ay tinanggal niya. At kaya, Zuck, pati na ang kanyang username sa Facebook, ay ID number tatlo, at sa aming lahat ay may mga numero ng marami mas malaki kaysa sa tatlong mga araw na ito. Sa katunayan, sa isang punto Inilipat ang layo Facebook mula sa kahit na gamit ang isang int, na ay isang 32-bit na halaga, sa paggamit ang susunod na hakbang up, mahalagang ng mahabang mahaba kaya na maaaring sila ay tumanggap ng higit pang mga user sa pagrerehistro. Kaya isang masaya maliit na makasaysayang katotohanan. Kaya ito lamang ang pangunahing syntax kung saan maaari naming magsagawa ng isang pares ng mga mga query, ngunit maaari naming aktwal gawin ang isang bungkos ng higit pang mga bagay sa SQL. At makikita mo, sa huli, sa problema magtakda ng pitong na mayroon ka upang magsagawa ng bilang ng mga pasya sa disenyo, kasama ng mga ito ay magiging kung ano ang mga uri ng data na gagamitin. Kaya tulad ng sa C, may mga data mga uri sa isang database, tulad ng MySQL, at ang mga uri ng data kailangan mong pumili mula isama ang mga field dito. Pansamantalang trabaho, varchar, Int, malaki int, decimal at oras ng petsa, at marami pang iba. Kaya sabihin aktwal na gawin ito. Ng magpanggap na aming ginawa ay hindi Hayaan kamay mo ang talahanayan ng user na ito at ipaalam sa akin sige at lumikha, para sa sarili ko, sa mga aralin database-- talagang ipaalam sa akin sige at tanggalin talahanayan Mayroon akong in dito na sa gayon ay maaari talagang kaming lumikha na ito. Oops. Pupunta ako sa drop ito talahanayan, at ngayon ako ay pagpunta sa pumunta muli sa magbigay ng panayam database sa paglipas dito, Pupunta ako upang lumikha ng talahanayan na tinatawag na mga user at sabihin lamang gawin ng tatlong mga hanay sa simula at i-click ang Go. Ngayon, para sa nakararaming bahagi, muli, ito ay lamang gamit ang mga graphical na tool na tinatawag na phpMyAdmin, at kung anong ginagawa namin ngayon ay lumilikha ng isang table. Kaya ito ay tulad ng pagpunta File, New, at ang paglikha ng bagong Excel file. Kaya humihiling ako ng ilang katanungan, mula kaliwa papuntang kanan, ano ang pangalan ng unang haligi, at pagkatapos ay ang pangalan ng ikalawang hanay, at ang pangalan ng ikatlong. Kaya ng muling likhain ito ipaalam. ID, at pagkatapos username ay isa, at pagkatapos ay i-hash ay isa pa. Kaya kung ano ang dapat na ang uri ng data maging para sa isang patlang tulad ng ID ngayon? Narito ang buong listahan ng mga uri ng data magagamit mo sa isang database, at sa ngayon hayaan pumunta lamang na may int. 32-bit na halaga, gagawin ko hindi Sa tingin realistically ako pagpunta sa magkaroon ng higit sa 4000000000 mga user sa aking account, sa aking serbisyo, kaya ako pupunta upang panatilihing gumagalaw sa susunod na tanong. Hindi ako pupunta upang tukuyin ang ng haba o mga halaga, hindi naaangkop dito para sa isang int, per se. At ngayon maaari kong tukuyin, sa malas, isang default halaga, na hindi ako pagpunta sa tinukoy. Ang isang paghahambing, hindi ko alam kung ano na. Isang katangian. Ngayon talaga naming gawin magkaroon ng desisyon disenyo. Kaya mayroong ilang mga field dito, hindi lahat ng na kung saan ay naaangkop, ngunit wala pang kontratang Nangangahulugan lamang kung ano? Na ang int ay dapat na? Lamang hindi-negatibong. Kaya ito ay dapat na 0 hanggang sa. Hindi, hindi ako pupunta upang suriin dahil Gusto kong sa bawat user na magkaroon ng isang ID, hindi ito maaaring maging null. At pagkatapos, makuha namin sa ilang higit pa kagiliw-giliw na mga pasya sa disenyo tulad nito. Darating kami pabalik sa ito sa isang sandali, ngunit kung ano ang isa pang tampok ng database ay, ay na maaari mong sabihin ang server ng database sige at i-optimize ang iyong sarili, ang iyong RAM at ang iyong mga puwang sa hard disk, nang sa gayon ay pumipili, at pagsingit, at tinatanggal, at mga update ay talagang mabilis. Contrast ito sa pset5. Kung nais mong maghanap ng isang bagay sa iyong talahanayan ng hash, na sa tingin mo ng bilang isang database, na nagkaroon na gawin ang lahat ng gumagana para sa paggawa ng mabilis ng iyong talahanayan ng hash. Ito ay tulad ng kung, malinaw naman, sa iyo. Mag-right? Ikaw ay nagkaroon ang ilalagay sa lahat ng oras masarap tune sa mga bagay, pagkuha ng hash karapatan, ang pag-uunawa kung paano maraming mga bucket upang magkaroon ng. Ngunit kung ano ang magaling, muli, tungkol sa isang database ay magtikin mo lamang ang lahat ng ito sa ibang mga tao na naisip na ito sa pamamagitan ng para sa iyo, at kung ano ang Pupunta ako sa sabihin dito sa ilalim ng index ay field ang aking ID na Mawawala na maging pangunahing paraan ng sa pagtukoy ng mga user sa database. Hindi ako pupunta sa tingin ng Zamyla bilang Zamyla, Pupunta ako sa tingin ng kanyang ng bilang 6. Bakit ito ay, marahil, mas mahusay na intuitively isipin at modelo bawat isa sa iyong mga indibidwal na mga hilera gamit isang numero sa halip ng isang bagay tulad ng isang string, tulad ng Zamyla o Gabe o mas matagal string pa rin? Oo? Madla: Isang ID ay natatangi? David J. MALAN: Sabihin muli? Madla: Isang ID ay natatangi? David J. MALAN: Isang ID ay natatangi, ngunit suppose-- tulad ng kaso sa pangkalahatan may mga username, ipagpalagay Din sinabi ko doon lamang maging isa Zamyla sa mundo, at isa lamang Gabe. Maaari akong magpataw sa pagiging natatangi Hadlang sa mga string, masyadong, kung nais ko. Kaya hindi isang masamang pag-iisip. Madla: Higit pang mga secure na. David J. MALAN: Higit pang mga secure na, bakit? Madla: Hindi mo maaaring sabihin na ay na, tulad ng sa user. David J. MALAN: OK, mo hindi masasabi kung saan ang user ay kaya na mayroong isang aspect sa privacy dito, lalo na kung ang mga ID ng siguro lumilitaw sa mga URL. Kaya ba, na maaari uri ng trabaho, masyadong. Iba pang mga saloobin? Oo? Madla: Mas madali na magsagawa ng mga pagpapatakbo sa isang int. David J. MALAN: Iyan ang tunay na kabayong naninipa. Ito ay lamang mas mahusay, o mas madali para sa mga computer, upang magsagawa ng mga pagpapatakbo sa isang integer. Mag-right? Isang int ay garantisadong maging 32-bit, samantalang Zamyla Ilang character ang haba, Gabriel Ilang higit pang mga character ang haba, Maringal na aparador ay talagang ang haba, at kaya hindi partikular na mahusay na gamitin ang mga string upang ihambing ang mga halaga at hanapin para sa mga patlang, at i-update patlang, kung maaari kang makakuha ng layo sa pamamagitan lamang ng isang integer. Bits 32 lang. Kaya username, masyadong, sa ganitong paraan, Hindi mo na kailangang maging natatangi, bagaman marahil sila ay dapat maging, at kahit sa paraang ito masyadong ma-pinapayagan ng isang user sa baguhin ang kanyang username. Kaya ipaalam umalis ngayon ito bilang pangunahing paraan ng pagkilala sa mga user. Ito ay nagsasabi sa database sige at i-optimize ang iyong sarili upang ang hitsura up sa ID ay sobrang bilis. AI, horribly may pangalang, lamang Nangangahulugan Auto pagdaragdag, at ito ang tseke kahon kailangan namin upang suriin upang tukuyin na ang field ID upang awtomatikong update para sa akin, at pagkatapos ay pupuntahan ko mag-scroll sa kanan dito at lantaran Hindi ako talagang interesado sa anumang higit pa sa mga patlang na ito. Tiyak na hindi ngayon. Kaya pupuntahan ko bumalik dito, sa unang hanay, kung saan Kailangan ko bang tukuyin ang username at hash, at sabihin hindi bababa sa pagtuon sa pangalawang isa para sa ngayon. Int Marahil hindi ito ang tamang tawag, kaya kung bakit ang higit pang mga kahulugan marahil? Madla: Text. David J. MALAN: Sabihin muli? Madla: Text. David J. MALAN: Text? OK, narinig ko na teksto. Ano pa? Uri ng namin ay may isang bungkos ng mga pagpipilian na tekstuwal sa kalikasan. Kaya kapag, at kung bakit, gawin gamitin mo ang ilan sa mga ito? Well pansamantalang trabaho, salungat sa kung ano ang maaari kang Sa tingin, ay hindi isang solong character. Ito ay isang tiyak na bilang ng mga character. Kaya kung alam namin na ang lahat ng mga username dapat na tulad ng walong mga character, bilang ginamit upang maging karaniwan sa mga mas lumang mga computer system, maaari akong sabihin char at pagkatapos ay maaari kong sabihin 8 dito. Iyon ay kapag naging ikatlong haligi naaangkop kapag lumilikha ng isang table. Ngunit iyon lamang ang uri ng nakakainis dahil ang ilang mga tao maaari Nais na magkaroon ng mas mahabang username sa walong mga character, Maaaring gusto ilang mga tao na magkaroon ng isang mas maikling username, kaya kung bakit gumawa ng sarili ko sa isang tiyak na numero? Bakit hindi magkaroon ng isang variable bilang ng mga karakter at lang sabihin na ang maximum na haba ng pangalan ay, hindi ko alam, tulad ng 64 na character. Hindi ako makapag-isip ng anumang mga kaibigan na May mga pangalang mas mahaba kaysa sa 64 mga character, at kahit na masyadong maikli maaari mong tiyak paga ito up nagkataon. Kaya varchar ay isang variable bilang ng mga karakter. Teksto ay hindi isang masamang likas na hilig, at tapat na pag-uuri ng ginagawa kung ano ang sinasabi nito, ngunit isang field ng teksto ay maaaring maging tulad ng 65,000 mga byte ng hindi bababa sa. Iyon ay marahil overkill para sa isang na field, at sa katunayan, Yup, 65,535. Iyon ay marahil overkill para sa isang pangalanan, kaya gagamitin namin manatili, karaniwang, may varchars para sa tekstuwal patlang at hash, masyadong. Hash, ito ay lumiliko out, maaari naming gawin ang isang varchar pati na rin o isang bagay tulad na, ngunit hindi namin tumuon ngayon sa Cryptography doon at ang mga numero na maaari talaga namin Nais na gagamitin para sa haba nito. Ngunit hayaan mo akong mag-scroll pababa sa kanan. Maaari ka lamang magkaroon ng isa pangunahing index para sa isang table, ngunit ko nais na ilapat ang anuman sa mga ito, ngayon, sa username, nais mong sabihin? Ano ang dapat username ay batay sa isang walang katiyakan pang-unawa ng mga apat na mga pagpipilian? Sa pamamagitan lamang ng kanilang mga pangalan? Madla: Natatanging. David J. MALAN: Kaya natatangi, tama? Kaya ito ay lumiliko out na hindi lamang ng dati mong sabihin sa isang database, nang maaga, ito ay ang pangunahing paraan ng pagkilala sa mga patlang. Maaari mo ring sabihin na ito ay magiging isang natatanging field. Hindi ito magiging ang bagay na umasa ako sa, ngunit Gusto ko ang database upang mahalagang mayroon na kung kondisyon, kaya na kung sakaling ko sinubukang magparehistro dalawang mga gumagamit na may katulad na pangalan, ang database ng flat out Hindi pagpunta sa ipaalam sa akin. Maaari ba akong magkaroon ng ilang karagdagang code sa PHP na pumipigil sa bilang magkano, ngunit ang database, masyadong, matitiyak na hindi na pupuntahan mangyari. Ngayon, bilang isang bukod, lalo na bilang isip tungkol sa huling proyekto, tandaan ito index at buong teksto ay aktwal na medyo kapaki-pakinabang. Kung mayroon kang isang mas malaking database, hindi sa dose-dosenang, ngunit may daan-daan o libu-libong o kahit milyun-milyong ng mga patlang, maaari mong sabihin din ang database nang maaga ito ay isang patlang na pupuntahan ko na naghahanap sa maraming. Siguro username nito, marahil ito ay bio, kung ikaw ay paggawa ng Facebook-tulad ng website na May mga talata na ang mga gumagamit pinapayagan i-save, at kung nais mong sabihin sa database nang maaga Pupunta ako sa ay naghahanap sa field na ito ng maraming, ngunit ito ay hindi nangangahulugang natatangi, maaari mong tukuyin ang lumikha sa akin ng isang index. O kaya, maaari mong sabihin ring payagan ako gawin uri ng di-makatwirang mga paghahanap tulad ng Command o Control F, na tulad mo maaari sa isang Word Processor, kaya maaari kang tumingin arbitrary string o substrings sa patlang na ito. Sa ibang salita, namin nakukuha sa punto sa semestre kung saan hindi mo kailangang mag-alala tungkol sa kung paano ipatupad ang mga bagay na mahusay. Kailangan mo lamang malaman tungkol sa kung ano ang mga pasya sa disenyo upang gumawa ng sa gayon ay handa mo gamit ang mga tamang tool para sa pangangalakal upang makakuha ng mga tampok na ang ibang mga tao na binuo para sa iyo. Kaya sa pagbabalik-tanaw, pangunahing dapat lamang magkaroon ng isa, maaari ka lamang magkaroon ng isa, at ito ang bagay na iyong tanggapin ang alok sa gamit sa pagtukoy ng mga patlang katangi-tangi. Mga natatanging ay katulad lamang ng sa espiritu, ngunit maaari mong gamitin lamang paminsan-minsan ito, ngunit nais mo ang database na magpataw ito. Index lamang ay nangangahulugan preemptively mapabilis ang mga bagay sa hinaharap nang sa gayon ay maaari kong maghanap para sa bagay sa patlang na ito. At pagkatapos ay ang buong teksto ay pangkalahatan ay para sa talata, o sanaysay, o malaking katawan ng teksto kung saan mo Maaaring gusto ring magkaroon ligaw na card tulad ng katumbas ng bituin. I-right. Kaya na uri ng Marami sa lahat nang sabay-sabay. Tingnan natin kung hindi namin magdistila Hayaan ng dalawang mga tampok na ito at pagkatapos ay bumuo ng isang bagay medyo simple, ngunit makapangyarihang. Kaya bukod sa iba pang mga mga pasya sa disenyo ikaw ay sa huli ng pagpunta sa mayroon ay kasama ang mga linya ng imbakan engine. At hayaan ang gumawa sa akin lamang pagbanggit ng ito sa pag-asa ng panghuling proyekto, at pag-asa ng let ni say-- hindi na gawin ito ipaalam. Ay bumuo ng maliit na ito Hayaan application muna. Pupunta ako upang pumunta sa aking terminal window, at sa dito ay hindi lamang counter.php, na ngayon kami ay pagpunta upang mapupuksa ang bilang hindi na dyermeyn, ngunit mayroon kaming isang buong bungkos ng mga direktoryo at ito ay magiging katulad na katulad sa espiritu sa kung ano ang makikita mo sa problema magtakda ng pitong. Kaya mayroon kaming tatlong mga direktoryo Kabilang sa mga pampubliko at mga template, na ay eksaktong kung saan kami huminto sa Lunes sa aming buong MVC tularan. At sa pagbabalik-tanaw, sa mga pampublikong ay pagpunta sa pumunta anumang file na gusto kong mga user na aktwal na v magagawang bisitahin ang sa kanilang browser sa pamamagitan ng URL. Template. Ano ang ilalagay namin sa template? Anong uri ng mga bagay-bagay? Nagkaroon hindi magkano ngunit sa ilang file ng hindi bababa sa Lunes. Oo. Madla: Header at Footer? David J. MALAN: Header at Footer. Kaya mayroon kaming isang bagay na katulad ngayon, masyadong. Nakakuha kami ng ilang higit pang mga file ngunit Footer nakikita ko, Header nakikita ko, at pagkatapos ay isang bungkos ng iba pang mga file. Kaya ito ay ang katumbas ng V MVC view, na kung saan, muli, ay magiging isang kaunti pa malinaw sa problema magtakda ng pitong, ngunit ito ay isang folder lang ako paglalagay ng maraming aking Estetika. Marami sa aking mga HTML, ng maraming ng aking mga form. Samantala, kasama nito, ay isa pang na direktoryo na mayroong tatlong mga file at hayaang tumagal ng isang mabilis na pagtingin sa mga ito. Pupunta ako sa sige at buksan up config.php. Bilang ito ay lumiliko out, magkano tulad ng mas maaga sa panahon, mo matalim na kasama CS50 tuldok h may pset7. Sa halimbawang ngayong araw, na iyong pupuntahan gawin ang katumbas ng na may nangangailangan ng pahayag na mabisang Kabilang sa mga iba't-ibang linya. Kaya maging malinaw, ito ay isang file na tinatawag config.php. At mapansin kung ano ang ginagawa nito. Sa malas Ito ay paggawa ng isang bagay misteryosong, pag-on sa mga mensahe ng error sa gayon maaari mong makita ang mga ito sa browser. Ito ay, pagkatapos, sa malas nangangailangan ng dalawang iba pang mga file kaya ito ay tulad ng #include sa C, at pagkatapos ay ang isang ito namin nakita, at umasa na kami sa, ito ay nagiging sa na shopping cart tulad ng pag-andar. Ang ibig sabihin ng cookie kalooban Ipapadala papunta at pabalik. Kaya bakit kagiliw-giliw na ito? Well, kung pumunta namin pabalik sa ito direktoryo at buksan up, halimbawa, constance.php. Pansinin na ang PHP ang sinusuportahan ng constants, hindi gaanong katulad #define sa C. Sa halip, literal mo sabihin tinukoy, at abiso na ako naka-imbak nang maaga apat na constants sa file na ito. Isa para sa database ngayon, para ang aking password, para sa aking username, at para sa mga pangalan ng server. Kaya ang mga ito ay aktwal na magiging medyo katulad sa problema magtakda ng pitong. At bilang wakas, at ito ay kung saan ako pagpunta upang makakuha ng ilang mga magandang pag-andar mula sa mga kawani, sa functions.php ay isang bungkos ng code na aming sinulat, at nakaagaw ko ang ilan sa mga ito mula sa set problema pitong para sa araw, na ginagawa ng grupo ng mga bagay at hanapin lang ni sa isa sa mga ito ipaalam sa partikular na. Ang pagpapaandar na ito dito, query, ay magiging ang PHP function na tinatawag naming upang isagawa SQL. Isang sandali ang nakalipas namin gamit phpMyAdmin, ngunit ito lamang para sa isang uri ng mga layunin sa pag-aaral at mga layunin ng diagnostic at forgetting ang iyong set database. Kapag aktwal mong gamitin ang iyong database, mo, ang tao, ay malinaw naman hindi pagpunta na kumukuha up ng isang web pahina sa bawat oras na may isang taong nagrerehistro. Ka ng pagpunta sa isulat ang code na pagsingit at tinatanggal ang mga gumagamit on demand, at kami ay pagpunta sa gawin ito sa pamamagitan ng paraan ng pag-andar query. Kung mag-scroll ko ngayon pababa, mayroong magiging ng ilang higit pang mga tampok. Pag-redirect ay pagpunta sa maging isang function namin sinulat ni para sa iyo na pinapayagan ka na magpadala ng mga user sa isa pang URL, at i-render ang isang function, tulad ng masyadong Nakita namin sa Monday, na aktwal na pag-render isang template, ngunit higit pa sa mga sa paraan ng sariling lakad pset7 sa pamamagitan ng. Sa ngayon, ay sige at gawin ito ipaalam. Hayaan akong pumunta sa aking table ng mga aralin at makita na mayroong kasalukuyang walang dito lamang pa, at ipaalam sa akin pumunta rin sa aking pampublikong direktoryo, kung saan mayroong file isa lang, index.php. Lumilitaw ang file na ito sobrang simple sa sandaling ito, mukhang ito lamang. Tunay na halos tulad ng kung paano namin tumigil sa Lunes. Ako na nangangailangan ng file na ito, config.php, na kung saan ay sa Kasama sa isang direktoryo, na Nasa tuldok tuldok, ang aking mga magulang, at pagkatapos ito ay nagre-render lamang ang file na ito. Kaya kung ano ay ang file na ito? Ni buksan ang aking mga template Hayaan form.php, at gagamitin namin makita ito. Super simple, tila ang form na ito ay pagpunta sa isumite sa pamamagitan ng isang $ _GET o $ _POST. Mabilis na check katinuan. Literal na biswal na maghanap sa file. Ang Paraan ay katumbas ng post na ito. Kaya ito ay hindi pagpunta sa gamitin ang URL, tulad ng Ginagawa ng Google, ito ay pagpunta sa uri-uriin ng itago ang impormasyon sa likod ng mga eksena at ito ay pagpunta sa isumite sa isang file na tinatawag na register.php, at iyon ang file hindi pa kami nakasulat ngunit kung ano ito ay pagpunta upang magmukhang ay na ito. Kung pumunta ako sa isang hiwalay na pahina na ito ay ano localhost / index.php kamukha. At muli, ang server sa pag-aakala lamang index.php. Ipasok. Kaya na kung saan kami ay sa, at kung ano ang gusto kong gawin ay magagawang i-type ang mga bagay tulad ng David, at pagkatapos ay ang aking numero ng telepono, na sinasabi 617-555-1212 para sa ngayon, magparehistro at ngayon register.php ay hindi natagpuan. Kaya kailangan ko upang ipatupad ito. Kaya sabihin mabilis pumilantik isang bagay na tulad nito up. Hayaan akong pumunta sa aking pampublikong direktoryo at gawin gedit ng register.php, at ngayon ako pagpunta sa sige at simulan mode PHP, tulad ng ginawa namin sa Monday, at tag malapit na PHP, at gawin ang ilang mga bagay na ipaalam. Kaya isa, alam ko, mula sa pagkakaroon ng nakasulat na form na iyon, na gusto kong i-check para sa mga sumusunod. Kung ito ay walang laman, ang anumang user nai-type in sa field ng pangalan, pagkatapos ay Pupunta ako sa sabihin ng isang bagay tulad Humihingi nawawala ang pangalan. Humihingi, samantala, ay hindi isang built in na PHP bagay, ito ay isang function na kami ay sumulat sa functions.php para sa pset7 upang mayroon kang access dito. Iba Pa kung ang iba pang mga field Walang laman, numero, at pagkatapos ay ako pagpunta sa humihingi ng paumanhin sa gumagamit at sabihin ang nawawalang numero. I-save ang file na ito. Ngayon sabihin bumalik sa aking browser, bumalik sa forum subukang muli. Magparehistro. OK. Wala nangyari, na ay mabuti. Hindi ko makakuha ng isang mensahe ng error. Ngunit kung sa halip, ni-reload ang ipaalam pahina, at hindi nagbibigay ng kahit ano. Diyablo. Gawin iyon. Magparehistro. Ano ang gagawin ko mali? Kung walang laman, pangalan ng $ _POST. Sabihing muli? Oh, siyempre. Nakalimutan ko ang pinakamahalagang bahagi, na ay nangangailangan ng ("../ Kasama / config.php."). Kailangan ko ng access sa Kami ay humihingi ng pag-andar, na ang dahilan kung bakit wala ang nangyayari. Function na ay hindi talaga umiiral. Kaya sabihin subukan muli ito. Hinahayaan-reload ng pahina, i-click Magrehistro. OK. May ito ay. Kaya, ang output kami nakikita dito ay ang resulta ng pagtawag sa isang humihingi ng paumanhin function, sobrang simple, at mga Kopya lamang ito anumang Ibinibigay ko ito bilang isang argument. Ay makikipagtulungan lahat ng karapatan, kaya hayaan. Magbigay ng aking pangalan Hayaan tulad ng David, magparehistro, Nawawala ang numero OK let ni magbigay iyon, masyadong. 617-555-1212. Magparehistro. OK. Kaya lahat ay mahusay na ngayon, walang lamang kawili-wili ang nangyayari. Kaya ni gumawa ng isang bagay na mas ngayon hayaan kagiliw-giliw na mangyari tulad nito. Hayaan akong pumunta sa phpMyAdmin, at sabihin aktwal na lumikha ng isang talahanayan na tinatawag na mga gumagamit, Pupunta ako sa bigyan ito ng tatlong mga hanay, at idedetalye ko mabilis lumikha ID, at pagkatapos ay pangalanan, at pagkatapos ay ang numero, at ang field ID ako pagpunta sa umalis bilang isang int. Ang field ng pangalan ng pupuntahan ko mag-iwan ng isang varchar, at kami sabihin 64, medyo nagkataon. Ang bilang ako pupunta gawin, alam mo kung ano? Kami ay pagpunta sa sumusuporta sa US mga numero dito, kaya ako pagpunta sa gawin ang isang bagay tulad ng pansamantalang trabaho at pagkatapos ay 10 character max para sa isang area code at pagkatapos ay pitong digit. At pagkatapos ay sa paglipas dito, pupuntahan ko tukuyin ang auto paglakas patlang na ito, gawin itong isang pangunahing key, at Pupunta ako sa sige at hindi suriin ang alinman sa mga iba pang mga kahon. Kaya kapag ako sa wakas ngayong i-click ang I-save, at pumunta ako pabalik sa aking mga talahanayan ng mga gumagamit, ito ay kung ano ang hitsura nito tulad ng kung ako ngayon i-click ang istruktura ng Bagong Tab. Kaya ito, upang maging malinaw, ay isa lamang paraan ng phpMyAdmin ng sinasabi ng iyong talahanayan ng database May isang ID, pangalan, at isang bilang sa mga partikular na mga configuration ng at kami huwag pansinin ang natitirang bahagi ng patlang doon sa ngayon. Kaya ngayon kung ano ang nais kong gawin? Kaya kung pumunta ako ngayon sa aking source code, kung ang lahat ay mahusay Nais kong isagawa ang sumusunod na tanong. Ipasok sa, at maaari ko lamang sabihin ang mga gumagamit gagawin ko hindi mahigpit kailangan mga pabalik ticks kung ito ay hindi mapanganib na salita tulad ng mga user. Pupunta ako sa sabihin ang pangalan, numero, at pagkatapos ay i-dito ako Hindi pagpunta sa hard code ang digit ng mga halaga pa. Pupunta ako upang ilagay ang dalawang mga tandang pananong. At ito ay isang convention sa maraming wika kung saan kung gusto mong magkaroon ng isang placeholder para sa isang string na iyong pupuntahan gamitin ang pinag-uusapan mark, para sa mga kadahilanang kami ay bumalik upang makipag-chat tungkol sa seguridad, at dito Pupunta ako upang pumasa sa mga dalawang mga patlang na-post pangalan, at pagkatapos ay mag-post ng numero, at ngayong i-save ang file. At ngayon pupuntahan ko bumaba dito ay isang napakabilis lamang sabihin rendersuccess.php, na ay magiging isa pang template. Pupunta ako upang lumikha ng talagang mabilis. Geditsuccess.php at ako lamang ang pagpunta sasabihin tagumpay H1 sa file na iyon. Lahat ng karapatan. Kaya ngayon, sabihin bumalik sa browser, kung saan ako binisita bago. Sabihin sige at kumpirmahin na sinulat ko sa David, isinulat ko sa isang numero ng telepono, magparehistro. Diyablo. Ano ang gagawin ko mali? Kaya ako nakakakita ng error dito, mo May isang error sa iyong SQL syntax. Hayaan akong lumipat pabalik sa gedit, sabihin sa akin bumalik sa register.php, at kung ano ang nag-ligtaan ko na ay mahalaga sa nakaraan? Kailangan ko ito. Gusto mong malaman na maliban sa mula sa pagkakaroon napansin bago, ngunit kailangan ko ito. Kaya ng bumalik ngayon hayaan, at ito ay kapaki-pakinabang upang makita sa browser at iyon ang dahilan kung bakit sa config.php maglaway namin ang mga error. Sabihin sige at i-reload, -click ang Magpatuloy, tagumpay. Kaya ngayon hayaan mo akong pumunta sa paglipas sa aking database dito at mag-click sa mga gumagamit, at mag-browse, at napansin ko na ngayon Mayroon dito si David sa aking database. Ngayon technically website na ito ay Hindi pa sa pampublikong internet, kaya hindi ko maaaring magkaroon ng iba pang mga mga tao sa paglalagay dito, ngunit kung gusto ko ngayon upang, para sa Halimbawa, magpadala ng aking sarili ng text message. Tara nasa panganib dito at makita kung ito aktwal na gumagana. Pupunta ako sa sige at tanggalin ang mga hilera na ito at kami lumabo na ito out sa video sa ibang pagkakataon kaya hindi namin magkaroon ng buong internet pagte-text sa akin, at pumunta up ngayon namin sa browser at ipagpapatuloy namin sa paglipas upang magbigay ng panayam at kami nagta-type sa iba't-ibang bilang dito, magparehistro, tagumpay. Kaya ngayon, ang aking sariling numero ay marahil sa ang database, at ngayon ang masayang bahagi. Ang aktwal na gamitin ang PHP na gawin Hayaan isang bagay na programa, mula sa command na linya o mula sa ibang lugar, at sa ngayon lang ako pagpunta sa panatilihin itong simple at pupuntahan ko upang pumunta sa aking direktoryo dito at gawin ang sumusunod. Gedit script sabihin nating, kami ay tawagan ito teksto, #! / gumagamit / bin / env PHP, tulad ng nakita natin noong nakaraang oras. PHP. Ngayon Pupunta ako sa ako ay nangangailangan ng Kasama config.php, kahit na ito ay maaaring humimok ng isang bahagyang error. At ngayon ako pagpunta sa sige at sabihin hilera, i-query, piliin ang bituin mula sa mga gumagamit, at ngayon dito ako pagpunta sa gawin ang isang diskarteng mula sa huling beses para sa bawat hilera bilang hilera. At ako pagpunta sa gawin ng isang bagay. Printf sabihin nating pangalan ay ito, at bilang na ito ay ito, backslash n. At ngayon ako pupunta upang pumasa sa hilera quote magpanipi pangalan, at numero ng hilera quote magpanipi, at ngayon sabihin sige at ang aking terminal na window chmod ito ng isang + x upang gawing ang script na ito na tinatawag na teksto executable. At tumakbo ng teksto ngayon hayaan. OK, kaya sa progreso. Kaya ngayon na naisulat akong command line script, sa wikang tinatawag na PHP, na, dahil sa na nangangailangan ng linya, May access sa lahat ng mga configuration constants na aking tinukoy. Ang pangalan ng database at iba pa. Sa katunayan, upang maging malinaw lamang na ito ay hindi isang parasitiko, ipaalam sa akin sige at magparehistro, Talagang mabilis, ibang tao tulad ng Rob at ay magbibigay sa kanya ng 555-1212 numero. At ngayon, kung nagpatakbo ako ng script muli, mapansin ang lakas ng kung anong ginagawa namin sa database. Ngayon ay na-agad Nakita ko na kung ano ang iba pang dalawang mga hanay ay sa aking database. Kaya Subukan upang gawin ang isang bagay na ngayon hayaan kahit na may interes sa loob ng, at ito ang bahagi hindi namin Hindi nasubukan nang maaga, kaya ang huling beses na ginawa ko ito mga bagay na nagpunta horribly pilipit, mayroon kaming video sa epekto na iyon. Sa totoo lang, oo, nakakatawa bukod. Kaya sa huling panahon, sa isang aralin tulad ng dalawang taon na ang nakakaraan, kami nagpasya, ako nagpasya, upang maging lahat ng ito ay magiging isang mahusay na ideya sa dynamic na bumuo ng mga email sa klase, gamit ang buong CS50 database mga mag-aaral, na ibinigay sa amin ang kanilang mga numero ng at ang kanilang mga cellphone carrier kung saan mo Maaaring isipin ang mula sa pset0, kung paano kadahilanang ito, lumiliko out Mayroon akong isang menor de edad bug sa aking mga programa at ginawa ng ilang mga pagkakamali sa 2012, sa tingin ko. Kung saan, ang isa ay nagkaroon ba ako para sa loop na ginawa nang eksakto ang uri ng bagay, iterating sa ibabaw ng database, pagkuha ng isang pangalan mula sa database, pangalanan mula sa database, at pagkatapos ay sa bawat pag-ulit ng loop na ipinadala ako ng email. Ngunit sa halip ng pagpapadala ng isang e-mail, ako Ipinadala ang isang email sa unang pag-ulit, at dalawang mga email ng pangalawang pag-ulit, na ipinadala tatlong mga email ng pangalawang pag-ulit, na bilang maaari mong isipin ang mula sa aming talakayan ng asymptotic pagtatanda ang malaking O ng masamang, tulad n nakalapat ay kung gaano karaming mga mensahe na ipinadala ko, ngunit ito ay hindi kahit na mga email ito ay mga text message. At tulad ng alam mo na, pagdalo ay hindi sobrang mataas na patungo sa katapusan ng semestre at kaya naisip ko magiging maganda sa ng panahon upang sabihin, "Bakit hindi ka klase?" Sa mensahe ako teksto ipinadala sa buong klase, at ito ay nakatatawa upang i 50% ng mga klase, ngunit ang iba pang mga 50%, ang ilan sa kanino natakot out, na ipinadala i hindi mapaniniwalaan o kapani-paniwala humihingi ng tawad matamis na tala sa mga kawani apologizing para sa pagkakaroon ng mga hindi nasagot na ang aralin lamang ito nang isang beses, tama? Kaya gagawin na horribly pilipit. Kaya sa espiritu na, Subukan ito ipaalam muli ngunit lamang ang aking numero. Sa advance, sa functions.php, Ako ng nakasulat na function na ito dito. Ito ay tinatawag na teksto, at ito tumatagal sa tatlong argumento. Ang isang numero, isang carrier, at isang mensahe. Gumagamit ako ng isang lumipat statement, na kamangha-mangha PHP gumawa ng mga string, hindi lang integer, at ako ay hindi ipatupad lahat ng mga suporta para sa mga ito pa, Lamang ako tapos AT & T at Verizon. Dahil ito ay lumiliko out na may mga carrier na ito mayroon sila ng email sa gateway ng SMS, kung saan maaari mong aktwal na magpadala ng email sa isang address tulad ng numero ng telepono sa vtext.com at kung ang gumagamit ay hindi naka-block ang mensahe, ito ay pumunta sa pamamagitan ng ay isang text message. Ngayon upang gawin ito, pupunta ako sa kailangang idagdag isang field talagang mabilis sa aking database. Pupunta ako sa pumunta sa aking istraktura, at ako pagpunta sa sige at magdagdag ng patlang sa dulo ng table. -Click ang Pumunta Hayaan, at ako ay pagpunta sa tawagan ang carrier at sa ngayon pupuntahan ko mag-iwan ito bilang isang bar ng teksto, ngunit maaari naming may interes sa hinaharap. Pupunta ako sa mabilis na pumunta sa aking table, at ako pagpunta sa mapupuksa ang Rob, dahil iyon ay isang huwad na numero, Pupunta ako sa pumunta sa i-edit dito at ako ay pagpunta sa mano-manong baguhin ang aking carrier maging Verizon, kung saan ito ay, at ngayon sa paglipas dito. Gawin ng isang mabilis katinuan check Hayaan. Ni buksan ang aming mga teksto script, Hayaan na Mukhang ganito, carrier ay% s. Ginagawa namin ng maraming higit pang mga error -check kaysa ginawa ko sa 2012, carrier. At ngayon, pupuntahan ko pumunta magpatuloy at muling patakbuhin ang script. OK. Carrier ay Verizon, na nangangahulugang ngayon sana ang maaari kong gawin lamang ito. Tamang taong ito, sana, dito pumunta namin. Kaya sa loob ng ito para sa loop, ako pagpunta sa hindi lamang magkaroon ito printf, Pupunta ako din ang tumawag sa teksto at ang paggamit ng mga function na ito pagpapabalik ay tumatagal ng isang numero, isang carrier, at isang mensahe. Kaya tingnan natin, numero ng pagpunta sa maging hilera quote magpanipi "number," hilera quote magpanipi "carrier," at ang huli ay mensahe. Huwag magtaas sa taong ito, semicolon. OK. Matang daliri. Tingnan natin kung ito gumagana Hayaan. Ang lahat ng mga karapatan, sa gayon. Narito pumunta namin. I-unlock ang telepono Hayaan, -krus ang iyong mga daliri, diyablo. Hindi natukoy variable may-- oh maghintay, maghintay, maghintay, tunay mabilis. Real mabilis, tunay mabilis. Ito ay talagang sulit. Hayaan akong-grab, ipaalam sa akin-grab, Naku. Salamat sa iyo, mayroon ang mga teksto na nagsimula sa isang tao pa. Hayaan akong sige at buksan ang tunay na mabilis, dropbox.php / mail sa dito. Standby. Talagang sulit. Mga Download. OK, pinagmulan src8m. OK. Kailangan ng isa pang linya dito. Oh may ito, ito ay nasa Frosh IMS, ito ay nasa rehistro sa tatlo. Oh kumusta, Margo, salamat sa iyo talaga. OK, at ako ay nawawala ang linyang ito dito. Kaya ipaalam sa akin mabilis grab ito linya ng code, kung saan kasama ang mail o library na aktwal na gusto kong gamitin, Mabilis na pupuntahan ko bumalik sa mga pag-andar, Pupunta ako upang pumunta sa tuktok ng ito -file at nangangailangan ang file na ito pati na rin, at ngayon pupuntahan ko ba talagang i-cross ang aking daliri kapag pumunta ako pabalik sa command linya ng script, na kung saan ay sa loob ng lokal na direktoryo ng host ngayon. Patakbuhin ang teksto. Ipasok. Mail. Standby. Standby. Mail. Oh, ang OK. Narito pumunta namin. Mail ay makakakuha ng bagong mailer PHP. Gawin ba akong karapatang ito? Diyablo. To-- naku, maghintay, maghintay, maghintay. Stand sa pamamagitan ng. Nangangako ako, ito ay magiging kaya sulit. Address. Ito ang dahilan kung bakit hindi ako makagawa ng mga halimbawa bago mismo ang klase. He. Nabigo ang mga sumusunod na mga tatanggap. Subukan ang isa huling bagay Hayaan. SMTP-set mula sa, magdagdag ng mga address, ang address ay sa katunayan na iyon. Subukan natin ang huling bahagi sa address Hayaan. Ay, ako ba talagang malungkot ngayon. Salamat sa inyo. Ngunit talaga kong pinahahalagahan ang lahat ang mga teksto na iyong na-pagpapadala. Mayroon kang ito David. Naka-pamumulaklak ito. Mag-iwan ng doon Hayaan at ay maayos sa Lunes. Tingnan mo pagkatapos. DAVEN Farnham: At Deep ngayon Mga iniisip sa pamamagitan ng Daven Farnham. Kung ang isang binary puno ay bumaba sa isang gubat at walang isa ay sa paligid upang C it-- [CHUCKLING].