[MUZIKO Ludante] DAVID J. Malan: Bone. Bonvenigas reen. Tio estas CS50. Jen la fino de semajno 8. Kaj kiel vi scias, ni havas belan regula oficejo horoj post kelkaj de la manĝejojn, inkludante Annenberg. Kaj iuj el la teamo afable prenis kelkajn fotojn lastatempe. Kaj honore Halloween, ni opiniis, ke ni kunhavigi kiu prefere kaptis nin surprizo tie en Annenberg Hall simple la alia nokto. Via samklasano Jakob metis por tiun foton, sed estis pli amuza Estis en Facebook, la venontan konversacio kiu okazis poste. Lia unua posteno en respondo al lia foto estis jena. Kelkajn minutojn poste, li decidis unu mem kun ĉi tiu. Tio daŭris tiam iri al tiu, kaj tiam, eĉ pli amuze estas kiam lia panjo intervenis en. Kaj tiam finfine, ŝajnas tiu estis simple mirinda ruzaĵo por ludi ke okazas. Do, se vi volas vidi Jacob kaj aliaj, inter ili Cynthia Meng, kiu estas malantaŭ la scenoj de CS50 zono bastonon estras ĉi URL kaj tiu teatraĵo tie. Do sen pli enkonduko, ni hodiaŭ daŭrigu tiun rigardi ttt programado, kaj la efektiva kreado de programoj ke vi ne kuras ĉe via komandlinio, sed anstataŭe kuras ene de la navegador. Supozeble nun, aŭ tre baldaux, vi tuj esti en la mezo de efektivigo Via propra retservilo Estas malsama ttt programado. La TTT-servilo en pset6 tute regas skribi programaron kiu scipovas preni HTTP petojn de navegador, aŭ eĉ de vi, homo, kun programo nomita Telnet kaj tiam respondi al tiuj petoj aŭ per kracxi el HTML-dosiero, aŭ jpg, aŭ gif, aŭ eĉ .php dosieron. Sed kun retservilo, ne supozeble nur malfermi PHP-dosiero, io finaĵo .php, kaj tiam kraĉis la enhavon. Ĝi estas supozita fari kion tiu dosiero antaŭe? Por tiel diri. Ne kompili ĝin, ni diris lunde, sed rather-- Do interpreti ĝin. PHP estas unu interpretita lingvo, kaj tiel unu el la ŝlosilaj karakterizaĵoj en via retejo servilo, kvankam implementado por ni, Estas ĉi tiu kapableco por via TTT-servilo rimarki, io. Jen paĝo finaĵo .php. Lasu min nur sendu al la uzanto kiel ĝi estas statika enhavo, sed prefere mi legis ĝin linion per linio, maldekstre dekstren, kaj gxin klarigas. Kaj fari, ke vi infanoj volas esence Punt al programo en la aparato, kaj sur tereno de komputilaj sistemoj, nur nomis PHP. Tio estas la nomo de PHP la lingvo propra interpretisto. Do, tiu peco ni implementar por vi kaj kio restas por vi, finfine, estas nombro de pecoj, inter kiuj estas implementando subteno por statika enhavo. Sed nun, kaj kun problemo starigis sep, vi estas tuj komencas transiron al fakte skribas PHP kodo kiu metas interpretitaj en parolante al malantaŭa fino datumbazo kiu stokas informojn. Do ni pli bone komprenu unue paro de tiuj superglobals kaj kiom da energio vi eliri el la skatolo senpage kun lingvo kiel PHP. Aĵoj vi ne havas implementar mem. Do, ni vidis lunde $ _GET, kio estas superglobal, kio ĝuste PHP paroli por tutmonda variablo povas aliri ie. Kaj kio estas interne de $ _GET? Kio estas ene de tiu superglobal kiun ni vidas? Nepre statistike ĉe Almenaŭ unu persono scias. Kio estas interne de $ _GET? Yeah? Publiko: Estas la variabloj vi metis en la informpeto kordo. DAVID J. Malan: Perfekta. Estas la variablojn vi metis en la informpeto kordo. Do, en nia malnova ekzemplo de reimplementing Google kiam ni havis URL, kaj tiam demandosigno, kiu demarca la komenco de HTTP parametrojn, do ni devis q egalaj io, kiel q egalas katoj, kio aŭtomate iri interne de tiu $ _GET super tutmondaj por vi, pro PHP, estas ŝlosilo de Q, kaj valoran gxiaj de katoj. En aliaj vortoj, $ _GET kaj ĉiuj tio estas asociaj tabeloj, hash tabloj de varoj, kiuj vendejo ŝlosilojn kaj valoroj. Nun, reen en pset5, la hash tablo vi eble estas implementado, aŭ provu vi eble implementado, vere Estis efektive asocieca tabelo, datumstrukturo per vi povas asocii klavojn per valoroj. Sed en pset5, la valoroj estis bagatela. La valoro estis esence vera aŭ malvera. Ĉu la vorto en la vortaro? Do, kiam vi hashed vorto kiel pomo vidi se pomo estas en la vortaro, via ĉeko funkcio supozeble revenis vera aŭ malvera. Do, tio estas efektive la valoro ni reatingas. Sed ni vidis lunde mallonge, vi certe povas asocii pli interesa valorojn ol vera aŭ malvera kun ŝlosiloj, kiel pomo. Vi povis reveni al arbitra kordo, kaj efektive, ke estas kion $ _GET kaj tiuj aliaj variabloj lasu vin fari. Do $ _POST estas simila en spirito, sed se vi povas prezenti la formo tra poŝto, malsama HTTP metodo tio uzata por aĵoj kiel kreditkartojn, kaj privatajn informojn, kaj eĉ duuma informoj kiel fotoj, tion finas ene de $ _POST. Kaj efektive dosierojn kiel jpegs kaj whatnot, ekzistas ankoraŭ alia ke ne estas tie supre nomita $ _FILES tiel. Do servilo ni ne logxas en tro multa, sed donas al vi aliron ordigi malplialta nivelo detaloj la servilo mem, ke vi uzas. Kuketo kaj kunsido, kvankam, ni efektive vidas nun. La lasta estas kion ni uzas por implementar la nocio de komerca veturilo. Súper simpla, sed Recall ke ni havis ĉi ekzemplo tie, rakonti kiom da fojoj vi rememoris la paĝon antaŭe. Sed hodiaŭ, prefere ol nur rigardi la efiko de tiu, ni malfermu Chrome La Inspektisto, kiun vi povas kutime fari per dekstra musklako aŭ Kontrolo klako ie en retpaĝo, kaj tiam elekti inspekti elemento. Aŭ vi povas iri tra la menuoj ke ni priskribu en pset6 la spec. Kaj Mi iras al la Reto langeto tien, kaj ni rigardas momenton la HTTP- trafiko tio irante reen. Permesu al mi unue iri antaŭen kaj klaraj Chrome la kaŝmemoro. Do iuj el vi povus esti familiara kun tiu tekniko jam, kaj ni tuj uzi ĝin por elpurigi celoj ĉi tie. Nun ni kiel komputilo sciencistoj tuj komenci faranta tion ĉi por depuración celoj, per kiu ni malplenigos la caché, tipe, por ke ni povas forigi tion nomis kuketojn. Do vi probable ĝenerale familiara kun kio kuketoj estas, aŭ almenaŭ ke ili ekzistas, sed kio estas vian komprenon de ili, kiel nur uzanto de komputiloj, kio estas kuketo? Yeah. Publiko: Estas iom of-- bone, ne malmulto en limtempo de komputiko. Ĝi estas peco de datumoj kiujn oni retejo sendas al vi por por povi gravuri statistikojn vin. DAVID J. Malan: Bone, vi bona. Do ĝi estas peco de datumoj kiujn oni servilo, metas sur vian komputilon, kaj ni ĝeneraligi eĉ pli, ĝi estas ŝlosila value-- bone, ke Fariĝas pli preciza. Ĝi estas peco de informoj, peco de datumoj, kiu servanto povas meti sur via komputilo kaj tre ofte, la servilo faras ĉi tiel kiel memori kiu vi estas. Tiel ekzemple, _odds_ ĉu vi estas probable ensalutinta en retejoj kiel Facebook, aŭ Gmail, aŭ aliaj antaŭe, kaj vi ensalutu per viaj uzantonomo kaj pasvorto, kaj tuj poste, por iu nombro de minutoj aŭ horoj aŭ eĉ tagoj, La servilo memoras ke vi estas, fakte, estas ensalutinta. Nun, kio estas ke efektive okazas? Ĉar vi certe ne retyping Via salutnomo kaj pasvorto ĉiufoje vi navigi al malsama paĝo en Facebook. Do rezultas la kuketoj estas la respondo. Kuketo povas pensi kiel, ia ŝatas, cifereca mano poŝtmarkon ke vi povus atingi altiroj parko aŭ klubon kiu esence indikas, ke ili estis tie antaŭe, kaj vi jam montrita via IRU al la pordisto, por Ekzemple, se la klubo aŭ la parko nun devus supozi ke vi esti aŭtentikigita jam. Vi jam identigita per ĝi. Do kun tio en menso, ni malfermu nombrilo tie. Lasu min, mi nur faris, kaj liberigi ĉiujn miajn kuketojn. Kaj nun kion mi tuj faros estas teni Shift, nur por bonan mezuron, kaj perforte reŝarĝi la paĝon. Shift simple certigi ke nenion akiras kaŝmemoro. Kaj jen la peton kiuj iris tien kaj reen. Do ĉi tie ni havas peton, kaj lasu min zomi malsupren tie, kaj multaj ĉi Estas ia neinteresa detaloj por nun ke la navegador havas aŭtomate sendis, sed ni klaku View Fonto vidi la krudan titolaj. Kaj se vi subakviĝis en pset6 jam, vi certe rekonas tion kiel tiu, kaj eble iuj de tiuj aliaj linioj tie, sed kio estas pli interesa por hodiaŭ se mi rulumu malsupren, ne al la peto sed al la tiel-nomata respondo, tiu linio probable aspektas familiaraj. Tio estas bona afero kiam vi vidas 200 OK. Ŝajne tio estas la Dato kaj tempo de la servilo kaj ekzistas aro da aĵoj. Ho, tio estas interesa. Rezultas kiam oni uzas PHP, almenaŭ en ĉi tiu servilo, La servilo sputas el kio versio de PHP vi uzas. Kiu, efektive, por sekureco celoj, ne estas bona afero. Sed, ni revenu al tiu alifoje eble. Sed jen estas la sukaj linio hodiaŭ, kaj ni vidis brevemente kelkaj el tiuj, Mi pensas kun Facebook kiam poked ĉirkaŭ la Inspektisto tiutempe, aro kuketo estas kio plantante ke peceton de informoj sur via komputilo. Tiu estas HTTP kaplinio tio estas efike dirante via retumilo, Chrome, IE, kio ajn, hey retumilo vendejo sur la uzanto malmola disko, aŭ en la uzanto RAM, ŝlosila nomis PHPSESSID, kio estas stenografio skribmaniero por kunsido ID, kaj donu valoron de 0vlk8t, dot, dot, punkto. Vere longa pseŭdo hazarda litercifera kordo. Estas nur vere granda nombro, sed ĝi estas kodita per literoj kaj ciferoj tiel ke la grandeco de ĝi povas esti eĉ pli granda ol nombroj sola. Kaj tiam, per la vojo, Path = /, ke simple signifas ke ĉi kuketo devus esti asociita kun la tuteco de la retejo, ne nur specifa paĝo de la tuta afero. Do jen tio virtuala mano poŝtmarkoj. Estas kvazaŭ la servilo, Facebook, aŭ en nia kazo la aparato, havas laŭvorte skribita 0vlk8t ks, en via mano. Rimarki kion la servilo, Ne faras estas ĝi estas ne stokante mian salutnomon, certe Ne stokante mian pasvorton. Anstataŭe, ĝi ŝajnas esti stokante pseŭdo hazarda informoj por ke neniu povu diveni kion mia mano poŝtmarkoj estas. Sur la flanko de la servanto, dume, la servilo tuj memoras, verŝajne en datumbazo aŭ ion, ke la uzanto, kiu en la estonteco prezentas mano poŝtmarkoj el 0vlk8t, ĝi pentras, dot, pentras, devus esti asociita kun ĉi aparta komerca ĉaro, por tiel diri. En aliaj vortoj, se mi nun iros tien kaj reŝarĝi la paĝon, Kiel la servilo scias ke mi vizitis unu horo? Aŭ ĉu mi tion denove, kiel faras la servilo scias, ke mi vizitis ĝin du fojojn? Nu, se mi iros en tiun plej freŝa peto, kiun Estas nun la tria ke mi sendis Entute rimarkos mian peton nun. Ekzistas ankoraŭ tiu peti ĝis tie, samaj kiel antaŭe, ne estas ankoraŭ tuta fasko de aĵoj kiujn ni ignorita kiel antaŭe, sed la lasta kaplinio, tio tempo, ĉar mi jam estis tie antaŭe, estas prezento de virtualeco mano poŝtmarkoj. Per tiu linio tie, ne starigu kuketo sed kuketo dupunkto PHPSESSI = 0vlk8t, tio estas nur mia retumilo aŭtomata prezento de tiu mano poŝtmarkon por ke Nun la servanto, tiel frue kiel ĝi realigas, ooh, tiu estas uzanto 0vlk8t streketo streketo streketo Mi nun povas memori kiu li aŭ ŝi estas kaj reassociate kun tiu uzanto ajn informo Mi volas, kaj ĉiuj ke informo povas esti stokita de vi, la programisto, en $ _SESSION. Do esti klara, se mi malfermas reala rapida en gedit ke fakta dosiero, counter.php, en mia loka gastiganto publika dosierujo kiel antaŭe, rimarki ke ja Mi finfine stokante en $ _SESSION Citaĵo unquote "nombrilo" la valoro de la antaŭa nombrilo kiu Mi prenos de tiuj linioj supren tie ke ni rigardis lasta fojo plus unu. Do sub la kapuĉo, jen ĉio kuketoj estas. Estas nur la speco de cifereca mano poŝtmarkoj iras tien kaj reen, kaj sincere, se vi malfermas Chrome La Inspektisto sur ajna retpaĝaro vi vizitos hodiaŭ, kun Super alta probablo, Vi tuj vidos eble unu, eble duono dekduo kuketojn estante memorita de vi. Kaj malbona ankoraŭ, se tiuj retejo vi vizitas ĉiuj havas reklamojn, kiuj certe estas sufiĉe komuna hodiaŭ, kaj se tiuj anoncoj estas venanta de iu centra partio, iu kiel Google aŭ AdWords kiel ili nomi unu el liaj produktoj aŭ aliaj tiaj vendistoj kiuj vendi anoncojn, kio estas interesa, kaj sincere kio estas iom preocupante, pri kiel HTTP funkcias, estas ke se vi havas anoncon enigita en Facebook.com kaj Google.com, kaj Harvard.edu, ajna nombro de retejoj, tial estas tia ke estas meza viro kiu servas supren anoncoj por ĉiuj tri el tiuj retejoj, Ĝi rezultas ke la kuketoj estas po havaĵo. Do se vi havas anoncon devenante la sama entrepreno en malsamaj retejoj, ke kompanio povas efike spuri kiuj Vi estas trans ĉiuj tiuj retejoj. Harvard eble ne konas vi vizitas Facebook. Facebook povus ne scias kaj vi vizitas Harvard. Sed kion ajn ad servo ili estas uzanta se tiu domajno estas ĉeestanta en ambaŭ Harvard.edu retejo paĝoj kaj Facebook.com retpaĝoj, tiu meza viro certe scias, kiu vi estas pro tiuj kuketoj estas dividita trans aux pli gxuste, ke tn intermediario. Do ni revenu al tiu en sekureco implikaĵoj gxiajn sed tie estas multa informo konserviĝos pri vi iam vi viziti plej ajna retpaĝo pri interreto kaj vere reduktas al ĉi tre simplan mekanismon. Kio okazas, tiam, se vi estas súper paranoja kaj vi decidas iri en Chrome aŭ IE aŭ kion ajn kaj elŝalti via kuketojn? Kio okazas? Yeah? Vi really-- vi faris tiun rajton? OK. Ne, iru antaŭen. Publiko: Iuj retejoj ne havas funkcio sen ĝi plaĉas Facebook. DAVID J. Malan: Jes! Tiel certaj retejoj simple ĉesi labori. Kaj en plej retejoj tiuj tagoj ke fundamente fidi kuketoj, speciale se vi havas ensaluti en, ili estas nur tuj rompos. Ĉar konsideri la alternativo, se la retejo havas neniun manieron de memorante, kiu vi estas, kaj tial via retumilo ne reprezenti kun cxiu HTTP peto de tiu mano poŝtmarkoj, efike retejo kiel Facebook irado havi suflori vin ensalutu ĉiufoje Darn tempo vi ŝanĝas paĝoj, aŭ alklaki ligon, kiun Certe ne aparte bona uzanto sperto. Tiel ke ankaŭ estas inter la komerco offs. Do sen pli enkonduko, ni preni por sidiĝita ke kun ttt programado, en lingvoj kiel PHP, vi povas memori informoj kiel tiu en problemo starigis sep kiam vi apliki vian propran E * Trade-simila paĝaro per kiu aĉeti kaj vendi akcioj, vi memoras ekzakte kion la uzanto vendantojn kaj kiu li aŭ ŝi estas tra ĉi tiu kunsido. Sed ni tuj bezonas oni amatoro maniero ol retpoŝto komenci subtenante informo ĉirkaŭ. Rajto? Lundon, ni parolis pri Frosh IMS kaj kiel en la versio de tiu retejo, jaroj, ĉiuj ni faris estis retmesaĝi la Proctor kiu estas zorge de la intramural sportoj programo, la nomon, kaj la sekso, kaj ĉu aŭ ne ili estas kapitano, kaj la dormejo de iu kiu estas registrante por intramural sporto. Do estas ne malbona, sed li aŭ ŝi tiam devis troll tra lia retpoŝto: fari tabelon aŭ io simila ke, por subteni ĉiu organizita. Do certe ni kiel programistoj povas fari tion por ke Proctor. Kaj tiel eniri en SQL, Strukturita Query Language, kiu tuj serĉos bela malsama al ambaŭ C kaj PHP, kaj vi plonĝi en multe pli manojn sur PHP kaj problemo starigis sep sed ankaŭ SQL, aŭ SQL, temas pri lingvo kiu oni uzas por paroli al datumbazo. Sed kio estas datumbazo? Nu vi pensas de datenbazo, almenaŭ nuntempe, kiel simple esti kiel Excel-dosiero, aŭ se estas Mac uzanto nombroj dosieron, aŭ se vi estas Google Apps uzanto Google kalkultabelo, ĝi estas efike datumbazo, aŭ vere specife rilata datumbazo. Rilata datumbazo estas nur iu kiu havas vicoj kaj kolumnoj, kaj vi povas stoki ajnan specon de informoj en tiuj vicoj aŭ kolumnoj. Sed kio estas agrabla pri SQL, kaj pri reala datumbazojn, ne nur kalkultabelojn aŭ Google kalkultabeloj, estas ke vi povas uzi lingvon efektive ekzekuti pridemandojn al enmeti datumojn, forigi datumojn, serĉi datumojn, eĉ plej grave, kaj vi ne devas uzi ĝin sufiĉe permane kiel vi eble tipe Google kalkultabelo ŝatas ĉi. Do en SQL, ekzistas aro da fundamentaj deklaroj aŭ pecoj de funcionalidad konstruita. Ekzistas multaj pli ol tiuj, sed vi povas iri grandega distanco nur sciante ke tiu lingvo nomata SQL havas almenaŭ kvar deklaroj vi povas utiligi. Forigi por forigi datumojn, Enigi, por aldoni vicoj, Update, por ŝanĝi vicoj, kaj selektante, por interesigi reen vicoj kaj tio estas ĝuste kion SQL faras. Ĝi operacias tute sur vicoj tiel ke kiam vi enmeti aŭ forigi, aŭ ĝisdatigo, aŭ elektu kion vi reatingas kiel tn rezulto aro, kiel tabelo de vicoj. Faskon da vicoj de tabelo. Do reen en la tago, kaj gxis la nuna tago, vi povas interagi kun la datumbaza uzanta komandlinio, sed ne estas aparte amuza uzi tiu nigra kaj blanka stilo fenestro kaj fakte ekzekuti comandos kaj poke ĉirkaŭ via datumbazo. Grafika uzantinterfaco, aŭ GUI, estas multe pli preferinda, eble, kaj tial la ilo ni rekomendas kaj preinstalados por vi sur la aparato nomas phpMyAdmin. Ĝi estas tuta koincido ke la nomo de tiu afero havas PHP en ĝi, Ĝi simple signifas ke la popolo kiu skribis tiun programon mem skribis tion en PHP. Sed estas finfine pri administri datumbazo servilo, kiel MySQL server ke vi povus havi, kiom vi do, en la CS50 aparaton. Do estas pli detale tie ol ni bezonas zorgi pri hodiaŭ, sed kio estas ŝlosilo estas ke sur la maldekstra flanko estas listo de la datumbazoj ke vi havas en via komputilo, sur via CS50 aparaton, eniradon fina projektoj kiuj vi eble havas sur tria partio, kompanio retejon aŭ retservilo, ke Vi povus pagi por spaco. Do maldekstre estas la datumbazojn, unu el kiuj Estas pset7 kiun mi pruntis de proksima semajnoj pset, kaj poste sur la supro tie rimarki tie estas faskon de pestañas, unu el kiuj Estas datumbazoj, SQL, statuso, uzantoj, eksporto ktp. Do vi povas iri longan vojo nur rimarki ke plejparto de la uzantinterfaco estas en la supra maldekstra kolumno kaj trans la supra dekstra supren tie. Do kion ni povas reale fari kun tio? Nu, ni komencu krei bito de informo kiel sekvas. Supozi la sekvaj estas la kazo, kiel estos en nur kelkaj tagoj, Vi volas implementar retejo, nomata CS50 Financoj, kaj ĉi paĝaro lasas vin aĉetas citi unquote kaj vendi akcioj. Kaj tuj elkompreni la prezo de tiuj akcioj, fine, kiel vi vidos, parolante al Yahoo Finance. Kiu, mirinde, ĝi havas senpagan servon per vi povas pasi en stoko Ticker kiel GOOG por Google, kaj estos doni vin reen Google aktuala stoko prezon ene de la pasinteco Kelkajn minutojn almenaŭ. Do vi devos uzi tiun, fine, ŝajnigi por la uzanto aĉeti kaj vendi fakta stokoj uzante virtualan monon, sed la tre unua afero la uzanto tuj vidos Estas ĉi salutekrano kiuj petas ilin por ilia salutnomo kaj pasvorto. Do, unu el la unuaj defioj por vi en pset7 tuj estos implementar la malantaŭa fino datenbazo, la ŝtono, se vi volas, ke tuj stoki uzantoj nomoj kaj pasvortoj kaj finfine kio akcioj posedas, kaj kiom, kaj kiom mono ili havas, tiel faskon da aliaj aferoj en aliaj tabloj aux kalkultabelojn. Do ni rigardu kiel ĉi montrigxu unuavide. Mi tuj reiri al la aparaton kaj mi tuj iros al tiu URL tie phpMyAdmin localhost / phpMyAdmin kaj vi vidos ke ĝi prenas min interfaco ĝuste kiel ni vidis en la ekrankopio kaj tie mi havas aldonan datenbazo nomita prelego hodiaŭ kaj mi iros antaŭen unua kaj alklaku pset7. Mi ŝajnas havi paron de ebloj, por nova, por krei novan tablo kaj ligo al uzantoj, kiuj estas tabulo mi jam kreis. Do kio estas tablo? Do se vi uzas Excel antaŭe, kaj se vi havas uzita nombroj aŭ Google Kalkultabeloj, vi malfermas fenestron kaj vi ricevos tutan faskon de vicoj kaj kolumnoj, sed poste vi kutimas havi worksheets sur la fundo, aŭ apartajn langetoj. Vi povas pensi de ĉiu laborfolio kiel tablo tial datumbazo, finfine, estas kombinaĵo de unu aŭ pli da tabloj, Unu aŭ pli worksheets, en la mondo de normala kalkultabelo. Do lasu min iri antaŭen kaj klaku ĉi laborfolio ke mi premade, nomitaj uzantoj, a.k.a. Datumbaza tabelo. Kaj se mi rulumu malsupren tie, Lasu min malzomi iom, jen kion phpMyAdmin diras al Ni estas ene de tiu tablo nun. Ĝi estas iom konfuza unue rigardo pro la UI ne la plej bela objekto en la mondo, sed kio estas interesa estas ĉi tiu parto tie. ID, salutnomon, kaj hash. Anticipe, kaj vi estos Maldekstramana tiu en problemo starigis sep, ni donas al vi dosiero enhavanta la super malgranda datumbazo tabelo, prunteprenita reale de la hacker eldono de problemo starigis du: ene de kiuj estas ses vicoj. Unu por Belinda ĉiuj vojon malsupren al unu por Zamyla, kaj rimarki al la maldekstra de tiuj salutnomoj estas solaj IDs kiel unu, du, tri, kvar, kvin, ses, entjeroj, kaj tiam dekstren estas hashes. Kaj se, _odds_ estas, vi ne faris la hacker eldono problemo starigis du: sed kradon estas simple kiel ĉifrita Pasvorto kun kelkaj _caveats_. Kaj do, kion vi vidas tie estas la ĉifrita versiojn de ĉiuj ses niaj pasvortoj de problemo starigis du la hacker eldono. Nun maldekstren estas nur iuj GUI stuff, redakti ĉi vico, kopiante tiu vico, forigi ĉi vico. Sed kio estas interesa nun estas la jena. Mi povas reale komenci sperti kun ĉi tablo. Do se mi iros kaj alklaku la SQL langeto, mi ricevas tiun grandan tekstujon. Kaj tio ne estas kiel ni tuj fari ĝin kiam reale skribi kodon. Por esti klara, phpMyAdmin estas nur ilo tio tuj ni poke ĉirkaŭ la datumbazo kaj ni sperti kun mendoj. Tiel ekzemple, supozu Mi faros ĝuste tion. Elektu, kiu estas unu el tiuj, ŝlosilvortoj mi menciis antaŭe, stelo, kiu reprezentas ĉiuj la kolumnojn en tabelo. De kio tablo? Nu, la uzantoj. Kaj avizo tie estas tio weird konvencio en SQL kie vi vere uzas reen iksodojn, tipe, Ne sola citaĵoj kaj ne citiloj kiam vi parolas pri tabloj nomoj tiel la dorso citaĵo estas la afero pri la supro maldekstre de via klavaro plej verŝajna. Do lasu min iri antaŭen nun kaj simple lasu ke sole kaj rulumu malsupren kaj klaku Iru kaj ni fakte tuj vidas la saman aferon. Ni nur ekzekutis SQL query dirante select ĉiu stelo el tabelo nomis uzantoj, kaj kion vi reiri estas jena. Finfine, ni povos fari samon en kodo, sed nun ĉio mi volis Do estis vidi ĝin en mia retumilo. Nu ni faru ion iom malsama. Lasu min reiri al la SQL langeto, kaj ni simple diri ke kio? Zamyla perdis ĉiujn siajn mono, kaj tial ĝi estas tempo por ni forigi sxin kiel uzanto. Ŝi ne plu ensalutadon. Do mi intencis diri forviŝi from-- bone, subteni capitalización por consistencia, forigi de uzantoj kie. Kaj tiel, ni povas havi tiujn predikatoj, aŭ tiuj klasifikitaj, fine de mia aserto kie kaj kiel mi povus forviŝi Zamyla? Per sia nomo Zamyla, do la kolumno, unu el la kolumnoj estis nomata, tiel kie nomo = "Zamyla". Kaj tie mi uzas duobla citiloj aŭ apostrofoj, vi nur uzu la dorso iksodojn kiam parolas pri la nomoj, ekzemple, de tabloj aŭ kampoj. Kaj lasu min klaku Iru tien. Kaj nun, la retpaĝo estas estante iom Uptight. Aŭ, ĉu vi vere volas lanĉi forigu de uzantoj kie nomo egalas Zamyla? Jes. Do nun, se ni reiros al mia tablo klakante uzantoj, rimarki ke Hm. Mi goofed. Kaj fakte, mi ia clicked for tiel rapide Vi eĉ ne vidas la ruĝa erarmesaĝo, eble. Kion mi faru al vi? Publiko: Vi ne bezonas kapitaligi ŝia nomo. DAVID J. Malan: Jes mi majusklon ŝia nomo, sed ŝi username-- efektive mi faris paron erarojn, ĉu ne? Unu, ŝia uzantnomo estas zamyla, minuskla Z kaj la kolumno nomo estas uzantnomo, Ne mencii, do ni faru tion denove. Lasu min kaj forigi de uzantoj kie uzantonomo egalas citaĵo unquote "Zamyla". Bone? Do tio aspektas iom pli bona, lasu mi iros rulumu malsupren kaj klaku Iru. Ĝi estas ankoraŭ tuj krias al mi esti certa. Mi klaku Jes, kaj nun ni vidos, sincere tiu okazis, vere rapida, malpli ol unu dua certe, tiu Estas ekzakte la informpeto ke got ekzekutita. Konfirmi, lasu min klaku uzantoj kaj ja nun Zamyla malaperis. Nun ni faru la malon. Supozu ke Gabe volas registriĝu por la retejo. Kio estas la SQL query, kio estas la komando mi povis tajpi aldoni Gabe? Bone estas sufiĉe simpla. Enmetu en uzantoj, kaj nun ĝi akiras iom kamufla. Mi bezonas precizigi, al la servilo, kio kampoj mi volas atribui. Mi ne vere gravas kion Gabe la ID nombro estas, do mi tuj salti tio. Mi anstataŭe dironta uzantonomo, hash, kaj tiam valorojn mi volas meti tie tuj estos Gabe. Kaj tiam lia hash, mi ne scias. Do nun, mi tuj lasi ke kiel granda por fari. Ni revenos al ke en la problemo aro specifon pri kiel vi fakte faras tion. Do rimarki, denove, la sintakso. Enmetu en tabelo nomon, tiam oni interkrampa listo de la kampoj, la kolumnoj vi volas aldoni valorojn, kaj tiam simple la sama ĝusta ordo lasis al Dekstre de la valoroj vi volas aldoni, kaj ĝi estas nur ĉirkaŭvolvinte ĉar la teksto estas iom longa. Do nun mi povas klaki la Go. Unu vico enmetita. Kaj nun se mi reiros al uzantoj, kio estas interesa estas kiu ne nur estas Gabe nun en la datenbazo, kio estas ŝajne lia IRU? Bone estas sep. Kial sep kiam mi ne aldonis gxin? Tiel ĉi, ankaŭ, estas unu el la trajtojn vi ricevas el la datumaro. Multa konstruita en funcionalidad. Ĝi rezultas ke kiam kreis ĉi tablo Mi preconfigured estas aŭtomate atribui ID tiel ke pliigoj. Do se vi iam poked ĉirkaŭe, kaj rigardis, kion via Facebook ID nombro estas, ĉi tiuj tagoj estas ne vere ion fari, sed Facebook API, Apliko Programado Interface, per vi povas reiri tutan faskon da datumoj pri mem, pri viaj amikoj, kaj via rilatoj. Kaj kio kutimis esti speco de frideta reen en la tago, iris serĉi kion via Facebook ID nombro estis. Mark Zuckerberg, ekzemple, estas tri ĉar li estis la aŭtoro de la ejo. Kaj kiel la rakonto iras, li kreis du testo kontoj, uzantoj unu kaj du, kiun li tiam forigita. Kaj tiel, Zuck, kiel estas lia salutnomo en Facebook, estas ID nombro tri, kaj ni ĉiuj havas numerojn multe pli granda ol tri tiujn tagojn. Fakte, en iu punkto Facebook malproksimigis el eĉ uzante int, kiu estas 32-bita valoro, por uzi La sekva paŝo supren, esence longa longa tiel ke ili povus akomodi eĉ pli uzantoj registri. Tiel amuza iom historia fakto. Do tio estas nur la baza sintakso kun kiu ni povus ekzekuti kelkaj pridemandojn, sed ni povas reale fari faskon pli aĵoj kun SQL. Kaj vi vidos, finfine, en la problemo starigis sep ke vi devas fari numeron de dezajno decidoj, inter ili tuj estos kio datumtipoj uzi. Do ĝuste kiel en C, estas datumoj tipoj en datumbazo, kiel MySQL, kaj datumtipoj vi devas elekti el jenaj kampoj tie. Char, varchar, Mez, grandaj int, dekuma kaj dato tempo, kaj multaj aliaj. Do ni efektive faros. Ni asertas, ke ni ne mano vin ĉi uzanto tablo kaj mi iros antaŭen kaj krei, por mi mem, en la prelegoj database-- efektive mi iros antaŭen kaj delete la tablon mi havas ĉi tie jam tiel ke ni povas reale krei ĉi. Whoops. Mi tuj faligi ĉi tablo, kaj nun mi estas tuj reiru al la prelegi datumbazo tien, Mi iras al krei tablo nomita uzantoj kaj ni nur faru tri kolumnoj komence kaj klaki la Go. Nun, plejparte, denove, ĉi tiu estas nur uzante ĉi grafika ilo nomita phpMyAdmin, kaj kion ni faras nun kreas tabelon. Do ĉi tio estas kiel irante Dosiero: Nova, kaj kreante novaj Excel dosiero. Do ĝi estas demandi min kelkaj demandojn, de maldekstre al dekstre, kio estas la nomo de la unua kolumno, kaj tiam la nomo de la dua kolono, kaj la nomo de la tria. Do ni amuzi ĉi. ID, kaj tiam salutnomo estis unu, kaj tiam hash estis alia. Do kion devus la datumtipo estu nun kampon kiel ID? Jen la tuta listo de datumtipoj disponeblaj al vi en datumbazo, kaj nun ni nur iri kun int. 32-iom valoron, mi ne pensas realisme min tuj havos pli ol 4 miliardoj uzantoj en mia konto, en servado tial Mi iras teni moviĝanta al la sekva demando. Mi ne tuj entajpi longitudon aŭ valoroj, ĝi ne estas aplikebla tie por int, per. Kaj nun mi povas specifi, ŝajne, default valoro, kiun mi ne tuj specifas. Kodoprezenton, mi ne scias kio estas tio. Atributo. Nun ni efektive fari havas dezajnon decido. Do tie estas kelkaj kampoj tie, ne ĉiuj el kiuj estas aplikeblaj, sed sensigna simple signifas kion? Ke la int devas esti? Nur nenegativaj. Do ĝi devas esti 0 supren. Ne, mi ne tuj kontrolu ĉar Mi deziras ĉiun uzanton havi ID, ĝi ne povas esti nula. Kaj poste, ni atingos iun pli interesa dezajno decidoj kiel ĉi. Ni revenos al tiu, momente, sed kio alia karakterizaĵo de datumbazo estas, estas, ke oni povas diri La datumbaza servilo iri antaŭen kaj optimizar sin, sian RAM kaj via malmola disko spaco, tial kiu selektas kaj inserta, kaj forigas kaj ĝisdatigoj estas vere rapida. Kontrasto ĉi kun pset5. Se vi volas serĉi ion en via hash tablo, kiu vi pensas pri kiel datumbazo, kiuj devis fari la tutan labori por fari vian hash tablo rapida. Ĝi estas kiel, evidente, vi. Rajto? Vi devis meti en la tuta tempo fajna agordi tion, prenanta hash funkcio Bone, elŝeligi kiom multaj siteloj havi. Sed kio estas bela, denove, pri datumbazo vi nur Punt ĉiuj tio al aliaj homoj kiuj pripensis tion tra por vi, kaj kion Mi tuj diros tie sub indico estas ke mia ID kampo tuj estos la ĉefa vojo de identigi uzantojn en tiu datumbazo. Mi ne tuj pensos de Zamyla kiel Zamyla, Mi tuj pensas pri ŝi kiel la numero 6. Kial estas, eble, pli intuicie pensi kaj modelo ĉiu de viaj individuaj vicoj uzanta nombro anstataŭ io kiel kordoj, kiel la Zamyla aŭ Gabe aŭ pli kordoj ankoraŭ? Yeah? Publiko: An ID estas solaj? DAVID J. Malan: Diru denove? Publiko: An ID estas solaj? DAVID J. Malan: An ID estas unika, sed suppose-- kiel la kazo ĝenerale kun salutnomoj, supozi Mi ankaŭ diris ke povas esti nur unu Zamyla en la mondo, kaj nur unu Gabe. Mi povis postuli la unikeco Constraint sur kordojn, tro, se mi volas. Do ne estas malbona penso. Publiko: Pli sekura. DAVID J. Malan: Pli sekura, kial? Publiko: Vi ne scias kion Estas kiu, kiel en la uzanto. DAVID J. Malan: Bone, vi ne povas diri kio uzanto Estas kio do estas Privateco aspekton al ĝi, precipe se la IDs eble aperante en la URL. Certas, ke povis speco de laboro, tro. Aliaj pensoj? Yeah? Publiko: Ĝi facilas realigi operaciojn sur int. DAVID J. Malan: Tio estas la veraj kicker. Estas nur pli eficiente, aŭ pli facile por la komputilo, plenumi operaciojn sur entjero. Rajto? An int estas garantiita esti 32 bitoj, dum Zamyla Estas malmultaj signoj longa, Gabriel Estas kelkaj pli signoj longa, Davenport estas vere longaj, kaj tiel ĝi estas ne aparte efika uzi kordoj kompari valorojn kaj rigardi por kampoj, kaj ĝisdatigo kampoj, se vi povas foriri kun nur unu entjero. Nur 32 bitoj. Do salutnomoj ankaŭ tiu vojo, ne devas esti sola, kvankam ili verŝajne devus esti, kaj eĉ en tiu ĉi formo tro uzanto povis permesi ŝanĝi sian uzantnomon. Do ni nun lasu tion kiel la primara Per identiganta la uzanto. Tiu diras la datumbazo bonvolu optimizar mem tial rigardon ups sur ID estas super rapida. IA, horore nomata, simple signifas Automata pliigo, kaj tio estas la ĉeko boksi ni bezonas kontroli specifi ke la ID kampo estos aŭtomate ĝisdatigita por mi kaj tiam mi iros al rulumu dekstren tie kaj sincere mi ne vere interesiĝas en ajna pli de tiuj kampoj. Certe ne hodiaŭ. Do mi tuj iros tien, la unua kolumno, kie Mi bezonas entajpi salutnomon kaj hash, kaj ni almenaŭ fokuso sur la dua nun. Int estas probable ne rajtas nomi, do kion faras pli senco eble? Publiko: Teksto. DAVID J. Malan: Diru denove? Publiko: Teksto. DAVID J. Malan: Teksto? OK, mi aŭdis tekston. Kion alian? Ni ia havas faskon da elektoj ke estas teksta en naturo. Do kiam, kaj kial, do vi uzas iu el tiuj? Nu char, kontraŭe al kio vi povus pensas, ne estas sola karaktero. Estas specifa nombro de karakteroj. Do se ni scias, ke cxiuj salutnomoj Devas esti kiel ok karakterojn, kiel kutimis esti komuna en granda komputiloj, mi povus diri char kaj tiam mi povus diri 8 tie. Tio estas kiam la tria kolumno iĝas aplikebla kiam kreante tablo. Sed tio estas ia ĝena ĉar kelkaj homoj eble volas havi plu salutnomo ol ok karakterojn, iuj homoj povus deziri havas pli mallongan salutnomon, do kial fari mem al specifa kvanto? Kial ne havas ŝanĝiĝeman numeron de signojn kaj justa diri ke la maksimuma longo de nomo estas, mi ne scias, kiel 64 signojn. Mi ne povas pensi pri iu amikoj havas nomojn longa ol 64 karakteroj, kaj eĉ se tio estas tro mallonga vi povus certe pusxigxas ĝin arbitre. Do varchar estas variablo numeron de signojn. Teksto estas ne malbona instinkto, kaj sincere tian faras kion ĝi diras: sed teksta kampo povas esti kiel 65.000 bitokoj almenaŭ. Tio probable Overkill por kampo, kaj fakte, Yup, 65.535. Tio probable Overkill por nomon, do ni devos resti, tipe, kun varchars por teksta kampo kaj hash, tro. Hash, rezultas, ni povus fari varchar tiel aŭ iel simile, sed ni ne enfokusigi hodiaŭ sur la ĉifriko tie kaj la nombroj ke ni reale volas uzi por ĝia longo. Sed lasu min rulumi malsupren dekstren. Vi povas havi nur unu primara indico por tabeloj, sed mi volas apliki iun el tiuj, Nun al uzantonomo, vi dirus? Kio devus salutnomo baziĝi sur malprecizaj komprenon de tiuj kvar ebloj? Nur iliajn nomojn? Publiko: Sola. DAVID J. Malan: Do unika, dekstra? Do ĝi rezultas ke ne nur povis Vi rakontos datumbazo, anticipe, tio estas la ĉefa vojo identigi kampoj. Vi povas ankaŭ diri ĉi estas tuj estos unika kampo. Oni ne tuj estos la afero, kiun mi fidas, sed mi ŝatus ke la datumbazo por esence havi ke se kondiĉo, do ke se mi iam provis registri du uzantoj kun la sama nomo, la datumaron plata el ne tuj lasos min. Mi havu iom da aldona kodo en PHP kiu malhelpas tiel, sed la datumbazo ankaŭ povas sekurigi ke tio neniam okazos. Nun, kiel flanken, speciale vi opinias pri fina projektoj, teni en menso ke indico kaj plena teksto estas fakte sufiĉe utilaj. Se vi havas pli grandan datumbazon, ne per dekoj, sed kun centoj aŭ miloj aŭ eĉ milionojn da kampoj, vi povas ankaŭ diri la datumbazo anticipe tio estas kampo Mi iras esti serĉanta sur tereno. Eble lia salutnomo: eble estas Bio, se vi estas farante Facebook simila retejo kiu havas paragrafoj ke la uzanto permesita ŝpari, kaj se vi volas diru al la datumbazo anticipe Mi iras al esti serĉanta en tiu kampo multe, sed tio ne nepre unika, vi povas entajpi krei min indekso. Aŭ, vi povas diri ankaŭ permesas min fari ia arbitra serĉoj kiel Command aŭ Kontrolo F, kiel vi multobligita en Word Processor, tial vi povus rigardi arbitra kordoj aŭ Pitono en tiu kampo. En aliaj vortoj, ni ricevas al la punkto en la semestro kie vi ne devas maltrankviligi kiel implementar aferoj kompetente. Vi nur bezonas scii pri kio dezajno decidoj fari por ke vi uzanta la dekstra iloj por la komerca celo utiligi karakterizaĵoj ke aliaj homoj konstruis por vi. Do por recap, primaria devus nur havas unu, vi povas havi nur unu, Kaj ĝi estas la afero kiun vi faras al uzante por identigi kampoj unike. Unika estas ĝuste simila en spirito, sed vi eble nur foje uzas, sed vi volas la datumbazo por trudi ĝin. Indekso signifas nur preventa formo akceli aĵojn en la estonteco tiel ke mi povas serĉi aĵojn en tiu kampo. Kaj tiam plena teksto ĝenerale por paragrafojn, aŭ eseojn aŭ grandaj korpoj de teksto kie povus ankaŭ volas havi sovaĝaj kartoj kiel la ekvivalento de stelo. Dekstre. Tiel ke estis ia multe al ĉiuj samtempe. Vidu se ni ne povas distili paro de tiuj karakterizaĵoj kaj tiam konstrui ion sufiĉe simpla, sed potenca. Do inter la aliaj dezajno decidoj vi finfine tuj havos estas kune La linioj de stokado motorojn. Lasu min nur citu ĉi anticipante fina projektoj, kaj anticipante ni say-- neniu ni faros. Ni konstruu tiun iom aplikaĵo unue. Mi tuj iros en mian stacion fenestro, kaj en ĉi tie ne estas nur counter.php, kiun ni nun iras por forigi tiel ne plu germane, sed ni havas tutan faskon de dosierujoj kaj ĉi tuj estos tre simila en spirito kion vi vidos en problemo starigis sep. Do ni havas tri dosierujojn inkludas publikajn kaj ŝablonoj, kiuj Estas precize kie ni cxesis sur Lundo per niaj tutaj MVC paradigmo. Kaj recap, publike tuj iros ajna dosiero kiun mi volas uzantoj reale v povos viziti en ilia retumilo tra URL. Template. Kion ni metas en ŝablonoj? Kiajn aferojn? Ne estis multa sed paro dosierojn almenaŭ lundon. Yeah. Publiko: Header kaj Piedo? DAVID J. Malan: Header kaj Piedo. Do ni havos ion similan hodiaŭ, tro. Ni havas kelkajn pliajn dosierojn sed Footer mi vidas: Header mi vidas, kaj tiam faskon de aliaj dosieroj. Do tiu estas la ekvivalento de la V MVC vido, kiu, denove, estos iom pli klara en problemo starigis sep, sed ĉi tio estas nur dosierujo min metante multajn miajn estetiko. Multa mia HTML, multon de Miaj formoj. Dume, inkludas, estas alia dosierujo kiu havas tiujn tri dosierojn kaj ni prenos rapidan rigardon al tiuj. Mi tuj iros antaŭen kaj malfermu config.php. Kiel ĝi rezultas, multe kiel antaŭe en la limtempo, vi akraj inkludis CS50 dot h kun pset7. En hodiaŭa ekzemplo, vi tuj fari la ekvivalento de tio kun postulas deklaron efike inkluzivas tiujn pluraj linioj. Do esti klaraj, tio estas dosiero nomata config.php. Kaj rimarki kio ĝi estas faranta. Ĝi estas ŝajne faras ion kamufla, ŝaltante erarmesaĝojn por ke vi povas vidi ilin en la retumilo. Estas do ŝajne postulanta du aliaj dosieroj tial ĉi estas kiel #include en C, kaj tiam ĉi tiu ni ne vidas, kaj ni dependis, ĉi ŝaltas ke komerca veturilo kiel funcionalidad. Tio signifas biskviton volo sendita reen. Do kial estas tiu interesa? Nu, se ni reiros al tiu dosierujon kaj malfermu, ekzemple, constance.php. Rimarku ke PHP faras subteno konstantoj, tio tute ne ŝatas #define en C. Anstataŭe, vi laŭvorte diri difinita, kaj avizo ke mi stokis anticipe kvar konstantaj en tiu ĉi dosiero. Unu por la hodiaŭa datumbazo, por mian pasvorton, por mia salutnomo, kaj por la nomo de la servilo. Do tiuj estas vere tuj estos bela simila problemo starigis sep. Kaj laste, kaj ĉi tiu estas kie mi estas tuj akiri iom bela funcionalidad el la bastonon en functions.php Estas aro da kodo ni skribas, kaj mi sxtelis iun el ĉi el problemon starigis sep hodiaŭ, kiu faras faskon da aferoj kaj ni simple rigardi unu el ili aparte. Tiu funkcio ĉi tie, konsulto, tuj estos PHP funkcio ni nomas Por ekzekuti SQL. Momento antaŭ ni estis uzante phpMyAdmin, sed tio estas nur por ia lernado celoj kaj diagnoza celoj kaj forgesante vian datumbazon aro. Kiam vi vere uzas vian datenbazo, vi, la homo, evidente ne tuj esti tirante supren retejo paĝo ĉiufoje kiam iu registras. Vi tuj skribi kodon insertos kaj forigas uzantojn laŭpete, kaj ni faros ĉi tra la informpeto funkcio. Se mi nun rulumi malsupren, tie estas tuj estos kelkaj trajtoj. Alidirektado tuj esti funkcio ni skribis por vi, ke vi permesas sendu la uzanto al alia URL kaj redonu estas funkcio, tute kiel ni vidis lunde, ke reale bildigas ŝablono, sed pli en ĉi tiuj en la formo de pset7 propra promeno tra. Nuntempe, ni iru antaŭen kaj fari tion. Lasu min iri en mian prelegoj tablo kaj vidu ke ekzistas nuntempe nenio tien nur tamen, kaj mi ankaux iros en mia publika dosierujo, kie ekzistas nur unu dosieron, index.php. Ĉi tiu dosiero ŝajnas esti súper simpla Nuntempe, ĝi aspektas ĝuste tiel. Tre ŝatas kiel oni cxesis lundon. Mi postulas tiun dosieron: config.php, kio estas en ĝi inkludas dosierujon, kiun Estas en dot dot, miaj gepatroj, kaj tiam ĝi estas ĝuste la prunti tiun dosieron. Do kio estas la dosiero? Ni malfermas en mia ŝablonoj form.php, kaj ni vidos ĉi. Super simpla, ŝajne tiu formo estas tuj submetiĝi de $ _GET aŭ $ _POST. Rapida prudento ĉeko. Laŭvorte vide serĉi la dosieron. Metodo egalas post. Do estas ne tuj uzos la URL, kiel Google faras, ĝi okazas al ia kaŝi la informo malantaŭ la scenoj kaj ĝi estas tuj submetiĝi al dosiero nomata register.php, kaj tio estas la dosiero ni ankoraŭ ne skribita sed kion tiu tuj rigardi kiel estas tiu. Se mi iras al aparta paĝo Jen kio localhost / index.php aspektas. Kaj denove, la servilo nur supozante index.php. Eniri. Do tie estas kie ni estas je, kaj kion mi volas fari ĝi povos tajpi tion kiel David, kaj tiam miaj telefonnumero, kiu diras 617-555-1212 nuntempe, registri kaj nun register.php ne trovigxis. Do mi bezonas implementar ĉi. Do ni rapide vipo iu kiel ĉi supre. Lasu min iri en mia publika dosierujo kaj fari gedit de register.php, kaj nun mi estas ironta antaŭeniras kaj komenci PHP mode, kiel ni faris lunde, kaj fermi PHP la etikedo, kaj ni faras paron de aĵoj. Do unu, mi scias, de li skribis ke formo, ke mi deziras kontroli la sekvan. Se ĝi estas malplena, kio ajn la uzanto tajpita en la nomo de kampo, tiam Mi intencis diri ion kiel pardonpeti mankas nomo. Senkulpigi, dume, estas ne korpigita en PHP afero estas funkcio ni skribis en functions.php por pset7 por ke vi havas aliron al ĝi. Alie, se la alia kampo malplenas, numero, tiam mi estas tuj pardonpeti al la uzanto kaj diri mankantan numeron. Savu ĉi tiu dosiero. Nun ni reiru al mia retumilo, reiri al la forumo reprovu. Registri. OK. Nenio okazis, kio estas bona. Mi ne ricevas erarmesagxon. Sed se anstataŭe ni reŝarĝi ĉi paĝo, kaj ne provizas ion. Damn ĝin. Fari tion. Registri. Kion mi faru al vi? Se malplena, $ _POST nomo. Diru denove? Ho, kompreneble. Mi forgesis la plej gravan parton, kiu estas postuli ("../ inkludas / config.php."). Mi bezonas havi aliron al la senkulpigi funkcio, kiu Tial nenio okazis. La funkcio ne ekzistas vere. Do ni provu ĉi denove. Ni reŝarĝi la paĝon, klaku Register. OK. Tie estas tiel. Do, la eligo ni vidante jen la rezulto de vokanta al senkulpigi funkcio, súper simpla, kaj simple presas el ajn Mi donos gxin kiel argumento. Bone, do ni kunlaboru. Ni provizas mian nomon kiel David, aliĝu, mankas nombro OK Atendu havigi tio. 617-555-1212. Registri. OK. Do ĉio bonas nun, nur nenio interesa okazas. Do nun ni faru ion pli interesa okazos kiel ĉi. Lasu min iri en phpMyAdmin, kaj ni efektive krei tabulon nomita uzantoj Mi tuj donos gxin tri kolumnoj, kaj mi rapide Krei ID, kaj tiam nomo, kaj tiam numeron, kaj la ID kampo Mi foriros kiel int. La nomo kampo Mi iras forlasi kiel varchar, kaj ni diru 64, iom arbitre. La nombro Mi iras fari, vi scias kion? Ni iras al Subtenu nin nombroj ĉi tie, tial Mi faros ion kiel char kaj tiam 10 karakteroj max por prefijo kaj tiam sep ciferoj. Kaj tiam ĉi tie, mi tuj entajpi auto pliigo tiu kampo, fari ĉi primara tonalo, kaj Mi tuj iros antaŭen kaj ne kontroli ajnan de tiuj aliaj kadroj. Do kiam mi nun fine alklakas Konservi, kaj mi iros al mia uzantoj tablo tio estas kio similas se mi Nun klaku New Tab strukturo. Do tio, esti klara, Estas ĝuste phpMyAdmin vojon diri via datumbaza tabelo havas ID, nomo kaj numero kun tiuj apartaj agordoj kaj ni ignoru la reston de la kampoj tie nun. Do nun kion mi volas fari? Do se mi foriras nun en miajn fontkodo, se ĉio estas bone Mi volas lanĉi la sekvan konsulto. Enmetu en, kaj mi povas nur diru uzantoj mi ne strikte bezonas tiujn reen iksodojn se estas ne danĝeran vorton kiel uzantoj. Mi intencis diri nomon nombro, kaj tiam ĉi tie min Ne tuj forte Kodo cifero de la valoroj ankoraŭ. Mi tuj metis du demandosignojn. Kaj tiu estas konvencio en multaj lingvoj per se vi volas havi oni lokokupilon por ŝnuro vi tuj uzos la demando markoj, por kialoj ni revenu babili pri sekureco kaj tie Mi iras en tiuj du kampoj sendi nomon kaj afisxu numeron, nun savu la dosieron. Kaj nun mi iras al iri malsupren tie estas súper simple diri rendersuccess.php, kiu tuj estos alia ŝablono. Mi iras al krei vere rapida. Geditsuccess.php kaj mi simple iri diri H1 sukceso en tiu dosiero. Bone. Do nun, ni reiru al la navegador, kie mi vizitis antaŭe. Ni iru antaŭen kaj konfirmi mi skribis David, mi skribis en telefonnumero, registri. Damn ĝin. Kion mi faru al vi? Do mi vidas eraron tie, vi havas eraron en via SQL sintakso. Lasu min salti reen al gedit, lasu Mi reiros al register.php, Kaj kion mi preterlasas ke Estis grava lastan tempon? Mi bezonas tiun. Vi ŝatus scii, ke aliaj ol el havante rimarkis antaŭe, sed mi bezonas tion. Do nun ni iru returne kaj ĉi estis helpemaj vidi en la retumilo kaj tio estas kial en config.php ni kraĉis eraroj. Ni iru antaŭen kaj reŝarĝi, klaki Daŭrigu, sukceso. Do nun permesu al mi iri al mia datenbazo tie kaj alklaku Uzantoj, kaj foliumi, kaj rimarki min nun havi Davidon en mia datumbazo tie. Nun teknike ĉi paĝaro estas ne en la publika Interreto, do mi ne havas aliajn homoj en meti tien, sed se mi nun volis, por Ekzemple, sendu min mesaĝon de teksto. Ni eliru sur branĉo tie kaj vidi se tiu vere funkcias. Mi tuj iros antaŭen kaj forviŝi ĉi vico kaj ni malklarigi ĉi en la vídeo poste do ni ne havas la tuta interreto tekstmesaĝi min, kaj ni nun iru al la browser kaj ni transiru al prelegi kaj ni entajpu malsamajn numero ĉi tie, registri, sukceso. Do nun, mia propra nombro estas supozeble en la datumbazo, kaj nun la amuza parto. Ni vere uzas PHP fari io programmatically, ĉu el la komandon linio aŭ de ie ajn kaj nun mi estas nur tuj konservi ĝin simpla kaj mi tuj irus en mian dosierujo tie kaj fari la sekvan. Gedit skripto diru, ke ni nomas ĝin teksto, #! / uzanto / bin / Koverto PHP, kiel ni vidis lastan fojon. PHP. Nun mi iros al vi postuli inkluzivas config.php, kvankam tiu potenco induktas eta eraro. Kaj nun mi iras al bonvolu diri vicoj, konsulto, elektu stelon de uzantoj kaj nun jen mi faros tekniko de lasta tempo por ĉiu vicoj kiel vico. Kaj mi faros ion simplan. Printf diru nomo estas tiu, kaj nombro estas tiu, backslash n. Kaj nun mi iras al pasi en vico citu unquote nomon kaj vico citaĵo unquote numeron, kaj nun ni iru antaŭen kaj mia fina fenestro chmod tiu a + x fari tiu skripto nomita teksto plenumebla. Kaj nun ni kuros tekston. OK, do progresi. Do mi nun skribis komandlinio skripto, en lingvo nomita PHP, ke, ĉar tio postulus linio, havas aliron al ĉiuj tiuj agordo konstantaj kiu mi precizigita. La nomo de la datumbazo kaj saluton. Fakte, nur por esti klara ke tio ne bonŝancaĵo, lasu min iri antaŭen kaj enskribi, vere rapida, iu alia kiel Rob kaj transdonos lin al la 555-1212 nombro. Kaj nun se mi kuros al la skripto denove, rimarki la potencon kion ni faras kun la datumbazo. Nun mi tuj vidas, kion la aliaj du vicoj estas en mia datumbazo. Do nun ni provas fari ion eĉ amatoro interne, kaj tio estas la parto ni ne provitaj anticipe, do la lasta tempo mi faris tion io terure malbone, ni havos vídeo al tiu efiko. Efektive, jes, amuza flanko. Do la lasta fojo, en prelegi kiel du jaroj antaŭe, Ni decidis, mi decidis, ke ĉio ĉi estus granda ideo al dinamike generas mesaĝojn klaso, uzante la tuta datumbazo CS50 studentoj, kiuj estis donitaj al ni siajn numerojn kaj ilia poŝtelefono portantoj kiuj vi eble memoras de pset0, kiel rezoni, rezultas Mi havis malgrandan eraron en mia programo kaj faris paron erarojn en 2012, mi pensas. Per unu mi havis por buklo ke faris ĝuste tiu speco de afero, ripetanta super la datumbazo, prenanta nomo de la datumbazo, nomo de la datumbazo, kaj tiam ĉiu ripeto de tiu buklo Mi sendis retmesaĝon. Sed anstatau sendi unu retpoŝto, mi sendis unu retpoŝto la unua ripeto, kaj du retmesaĝoj dua ripeto, sendis tri retpoŝtojn dua ripeto, kiu kiel vi eble memoras de niaj diskuto de asimptota skribmaniero tiu granda a de malbonaj, kiel n kvadratoj estas kiom mesaĝojn mi sendis, sed ne estis eĉ retpoŝtojn estis teksto mesaĝojn. Kaj kiel vi scias, asistencia ne Super alta al la fino la semestro kaj tial mi pensis ke estus beleta je la tempo diri, "Kial vi ne klaso?" En la teksto mesaĝo mi sendis al la tuta klaso, kaj estis amuze kiel 50% de la klaso, sed la aliaj 50%, el kiuj freaked ekstere, i sendis nekredeble pardonpetan dolĉa notoj al la personaro senkulpigante por li perdis la prelego simple tiun fojon, dekstra? Por ke farus terure malbone. Do en tiu spirito, ni provu ĉi denove sed nur per mia nombro. Anticipe, en functions.php, Mi verkis tiun funkcion tie. Ĝi estas nomita teksto, kaj ĝi prenas en tri argumentojn. Kelkaj, portanto, kaj mesaĝo. Mi uzas ŝaltilo deklaro, kiu mirinde PHP preni kordoj, ne nur entjeroj, kaj mi ne implementar tuta apogo por tio ankoraux, Mi ĵus faris AT & T kaj Verizon. Ĉar ĝi rezultas ke kun tiuj portantoj ili havas retpoŝton al SMS enirejoj, per vi povas reale sendu retmesaĝon al direkto kiel telefonnumero ĉe vtext.com kaj se la uzanto ne blokita la mesaĝoj, ĝi iros per estas teksta mesaĝo. Nun fari tion, mi tuj devos aldoni unu kampo vere rapida mian datumbazon. Mi tuj iros en mian strukturon, kaj mi tuj iros antaŭen kaj aldoni kampo ĉe la fino de la tablo. Ni klaku Iru, kaj mi irante voki ĉi portanto kaj nun mi iras al forlasi tiun kiel trinkejo teksto, sed povas esti amatoro en la estonteco. Mi tuj rapide iri en mia tablo, kaj mi tuj forigi Rob, ĉar tio estas falsa numeron, Mi tuj iros en redakto tie kaj mi vestos min portanto permane esti Verizon, kiu estas, kaj nun super tie. Ni faru rapidan prudento ĉeko. Ni malfermu niajn teksto skripto, kiu aspektas kiel tiu, portanto estas% s. Ni faras multajn pli eraro kontrolanta ol mi faris en 2012, portanto. Kaj nun, mi estas ironta antaŭeniras kaj re-ruli la skripton. OK. Portanto estas Verizon, kiu signifas nun espereble mi povas fari ĝuste tion. Ĝuste tiu jaro, espereble, ĉi tie ni iras. Do ene de ĉi por buklo, mi estas tuj ne nur havas ĉi printf, Mi ankaŭ tuj nomos tekston kaj La uzado de tiu funkcio Recall Estis prenas numero, portanto, kaj mesaĝo. Do ni vidas, nombro tuj estu vico citaĵo unquote "numero" vico citaĵo unquote "portanto" kaj la lasta estis mesaĝo. Ne firmigu tiun jaron, punktokomo. OK. Fingroj transiris. Vidu se tio funkcias. Bone, do. Tie ni iras. Ni malŝlosi la telefonon, transiras la fingrojn, malbenita ĝi. Nedifinita variablo may-- ho atendu, atendu, atendu, reala rapida. Reala fasto reala rapida. Tio estas tute valoras ĝin. Lasu min kaptu, lasu min kaptu, uh-oh. Dankon, la tekstoj havas komencis de iu alia. Lasu min kaj malfermu reala rapida, dropbox.php / poŝto en ĉi tie. Standby. Plene valoras ĝin. Elŝutoj. OK, fonto src8m. OK. Bezonas pli linion tie. Ho tie ĝi estas, ĝi estas en Frosh IMS, ĝi estas en la registro ĉe tri. Ho saluton, Margo, grandan dankon. OK, mi mankis tiu lineo tie. Do lasu min rapide ekpreni tiu linio de kodo, kiu inkluzivas la poŝto aŭ biblioteko ke mi vere volas uzi, Mi tuj rapide reiru en funkcioj Mi tuj iros al la supro de tiu Arkivo kaj postulas tiun dosieron tiel, kaj nun mi iras al vere transiras fingroj kiam mi reiros al la komando linio skripto, kiu estas interne de hodiaŭa loka gastiganto dosierujo. Kuri tekston. Eniri. Poŝto. Standby. Standby. Poŝto. Ho, OK. Tie ni iras. Poŝto ricevas novan PHP Mailer. Ĉu mi faros tiun rajton? Damn ĝin. To-- Ho, atendu, atendu, atendu. Staras. Mi promesas, tiu estas tuj estos tiel valoras ĝin. Adreson. Jen kial mi ne faru la ekzemploj ĝuste antaŭ klaso. Uf. La jenaj ricevintoj malsukcesis. Ni provu unu lasta afero. SMTP metita de, aldoni adreson, la adreso estas ĝuste tiu. Ni provu ĉi lasta parto en adreson. Aw, mi estas vere malĝoja nun. Dankon. Sed mi vere dankas ĉiuj la tekstojn vi estis sendo. Vi havas tiu David. Vi blovis ĝin. Ni lasu ĝin tie kaj ni fiksos lundon. Vidi vin tiam. DAVEN Farnham: Nun Deep Pensoj de Daven Farnham. Se duuma arbo falas en arbaro kaj neniu ĉirkaŭe al C it-- [ridante].