[Музички] Дејвид Џ MALAN: Во ред. Добредојде назад. Ова е CS50. Ова е крај на 8 недела. И како што знаете, имаме прилично редовно работно време во неколку на јадење сали, вклучувајќи Annenberg. И некои од тим љубезно презеде некои слики во последно време. И во чест на Ноќта на вештерките, ние сме мислеле дека би делат една дека наместо нас фатени од страна на изненадување тука во Annenberg сала само Од друга ноќ. Твојот другар Јаков поставени за оваа слика, но беше повеќе смешен беше на Фејсбук, следеа разговор што се случи потоа. Неговиот прв пост одговор со неговата слика беше ова. Неколку минути подоцна, тој реши еден до самиот со ова. Таа отиде за потоа да се оди на ова, а потоа, дури и повеќе интересно е кога неговата мајка бога ми, потврдуваше во. А потоа на крајот, се чини дека ова беше само прекрасен измама за игра што се случува. Значи, ако сакате да се види Јаков и други, меѓу нив Синтија Менг, кој е зад сцената на CS50 зона персонал, се упатат кон овој URL и оваа игра тука. Значи без понатамошно ado, денес ние продолжи овој поглед во веб програмирање, и вистинскиот креирање на програми кои не се кандидира на вашиот командната линија, но наместо да работи во внатрешноста на прелистувачот. Веројатно сега, или многу наскоро, си оди да биде во средината на спроведување вашиот сопствен веб сервер, која е различна од веб програмирање. На веб серверот во pset6 е за сите пишување софтвер кој знае како да се HTTP барања од прелистувачот, или дури и од вас, човек, со програма наречена Телнет, и тогаш се одговори на овие барања или од плукање надвор HTML датотека, или JPEG, или GIF, или дури и .php фајл. Но со веб сервер, тоа не е треба само да се отвори PHP фајл, нешто завршува во .php, и тогаш плукаат на содржината. Тоа би требало да се направи што во таа датотека првиот? Така да се каже. Не го собира, што рековме, во понеделникот, но rather-- Значи, тоа се протолкува. PHP е препознаена јазик, и така една од клучните карактеристики во вашиот веб- сервер, иако имплементиран од нас, е оваа способност за вашиот веб сервер да се забележи, ох. Ова е податотека завршува во .php. Дозволете ми да не само да го испрати до корисникот како тоа е статична содржина, туку дозволете ми да го прочитате линија по линија, лево кон десно, и интерпретираат тоа. И да се направи, што ќе момци ќе суштина залог на програма во апаратот, и на многу компјутерски системи, само се нарекува PHP. Тоа е името на PHP на свој преведувач јазик е. Значи, тоа парче ги спроведуваме за вас, и она што останало за вас, во крајна линија, е број на парчиња, меѓу кои спроведува поддршка за статична содржина. Но, сега, и со Проблемот постави седум, ти си ќе започне да транзиција кон всушност пишување на кодот PHP кој добива се толкува во зборуваме на задниот крај база на податоци која продавници информации. Значи, да се разбере подобро прво неколку од овие superglobals и само колку енергија ви да излезат од кутијата за слободен со јазик како PHP. Работи што не треба да се спроведе. Така, видовме во понеделникот $ _GET, кој е superglobal, што е само PHP зборува за глобалната променлива можете да пристапите насекаде. И она што е внатре од $ _GET? Она што е внатре на овој superglobal кои ги гледаме? Сигурно статистички на Најмалку едно лице го знае. Она што е внатре од $ _GET? Да? ПУБЛИКАТА: Тоа е променливи ќе се стави во барањето. Дејвид Џ MALAN: Совршена. Тоа е променливи што се стави во барањето. Значи, во нашата постара пример на reimplementing Google, кога имавме URL-то, а потоа прашалник, што ја демаркира почетокот на HTTP параметри, а потоа имавме н еднакви нешто, како q е еднакво на мачки, што автоматски ќе влезе внатре на таа $ _GET супер глобален за вас, бидејќи на PHP, е клучот на П, и на вредноста на него на мачки. Со други зборови, $ _GET и сите овие работи се асоцијативни низи, хаш маси на сорти, кои продавница клучеви и вредности. Сега, назад во pset5, хаш маса што може да се спроведува, или ќе се обиде можеби се спроведува, навистина беше ефикасно асоцијативна низа, податочна структура со која можете да се дружат клучеви со вредности. Но, во pset5, вредностите биле тривијални. Вредноста во суштина беше точно или неточно. Е зборот во речникот? Значи, кога ќе hashed збор како јаболко да се види дали јаболкото е во речникот, вашиот чек функција се претпоставува дека врати точно или неточно. Значи, тоа е ефикасен начин вредност ние сме добивање назад. Но видовме во понеделникот кратко, можете да сигурно дружат поинтересна вредности од само точно или неточно со копчиња, како јаболко. Ти всушност може да се врати произволна низа, и навистина, тоа е она што _GET $ и овие други променливи да го направите. Значи $ _POST е слична и во дух, но ако поднесете форма преку пошта, различни HTTP метод, кој е користи за нешта како кредитни картички, и приватни информации, па дури и бинарни информации, како фотографии, тие работи да завршат во внатрешноста на $ _POST. А всушност за датотеките како JPEG слики и какво ли не, има дури и уште еден, тоа не е тука се нарекува $ _FILES, како и. Значи, серверот нема да се задржиме на премногу многу, но тоа ви дава пристап да се најде решение на пониско ниво детали за серверот сам по себе дека сте користење. Колаче и сесија, сепак, ние ефикасно ќе видиме сега. Последниот е што ние ги користиме за спроведување поимот на количката. А супер едноставен, но се потсетиме што имавме овој пример тука, броење колку пати сте ја посетил оваа страница пред. Но, денес, отколку само погледнете во ефектот од ова, ајде да се отвори Хром инспектор, кој можете да обично направи со десен клик или контрола клик било каде на веб страница, а потоа изберете увид елемент. Или можете да одат преку менија дека ние се опише во спец pset6 е. И јас одам да го јазичето мрежа тука, и ајде да се види за момент на HTTP сообраќај, што е ќе напред и назад. Дозволете ми прво да се оди напред и кешот јасно Хром. Па некои од вас може да биде запознаен со оваа техника веќе, и ние ќе го користите за дебагирање цели тука. Сега ние како компјутер Научниците се случува да започнете го прават тоа за дебагирање цели, при што ние ќе го исчистите кешот, обично, така што можеме може да се ослободи од работи вика колачиња. Па ти си веројатно запознаени генерално со она што се колачиња, или барем дека тие постојат, но она што е вашето разбирање на нив, како само корисник на компјутери, она што е колаче? Да. ПУБЛИКАТА: Тоа е малку of-- добро, не малку во термин на компјутерските науки. Тоа е едно парче од податоци кои веб-страница праќа до Вас, со цел да бидат во можност да ги сними статистика за вас. Дејвид Џ MALAN: Добро, добро. Така, тоа е дел од податок дека сервер, го става на вашиот компјутер, и нека си го генерализира дури повеќе, тоа е клучен value-- добро, тоа е добивање на повеќе прецизни. Тоа е едно парче од информации, едно парче на податоци, дека серверот е во состојба да се стави на вашиот компјутер и многу често, серверот не ова за да се сеќавам на кој сте. Така на пример, шансите се ти си веројатно најавени во сајтови како што се Фејсбук, или Gmail, или другите пред, и ќе се најавите со вашиот корисничко име и лозинка, а потоа после тоа, за некои број минути или неколку часа или дури и денови, серверот се сеќава дека сте, всушност, најавени. Сега, како е тоа што всушност се случува? Затоа што ти си сигурно не пречукување Вашето корисничко име и лозинка секој пат да стигнете до друга страница на Фејсбук. Значи излегува на колачињата се одговор. Колачето можете да мислам на како, вид на се допаѓа, дигитален страна печат што ќе може да се добие во забавен парк или клуб кој во суштина укажува сте биле тука пред тоа, и веќе сте прикажан вашиот проект на нешто големо, за На пример, и дека клубот или паркот сега треба да се претпостави дека го логиран веќе. Вие веќе се идентификувани од неа. Така да со тоа во предвид, ајде да се отвори контра тука. Дозволете ми да оди напред, јас само го направи, и го исчистите сите од моите колачиња. И сега што јас ќе одам да направите е држете го, само за добра мерка, и насилно вчитување на страната. Промена само бидете сигурни дека дека ништо не добива кеширани. И тука е барање што отиде напред и назад. Па овде ние имаме барање, и нека мене зумирате долу тука, и многу на овој е вид на интересни детали за сега дека прелистувачот автоматски испратени, но ајде да кликнете View Извор за да ја видите суровини заглавија. И ако сте се нурна во pset6 веќе, сигурно ќе го признае работи како овој, а можеби и некои од овие други линии тука, но она што е повеќе интересно за денес ако јас се движите надолу, а не на барање но на т.н. одговор, оваа линија веројатно изгледа познато. Тоа е добра работа кога ќе видите 200 OK. Очигледно ова е датумот и времето на серверот и има еден куп работи. Ох, ова е интересно. Излегува секогаш кога ќе го користите PHP, барем во овој сервер, серверот плука што верзија на PHP сте користење. Кои, всушност, за безбедноста цели, не е добра работа. Но, ние ќе се вратам на тоа некое друго време можеби. Но, сега тоа е сочно линија, денес, и видовме накусо некои од овие, Мислам дека со Фејсбук кога појдов околу инспектор во тоа време, сет колаче е она што е садење дека малку парче на информации на вашиот компјутер. Ова е HTTP заглавието тоа е ефикасно кажува вашиот интернет пребарувач, Хром, IE, што, еј пребарувач продавница на корисникот хард диск, или во RAM меморија на корисникот, клучен наречен PHPSESSID, што е стенографија нотација за сесија проект, и го даде вредност на 0vlk8t, точка, точка, точка. А навистина долго псевдо случаен алфанумерички стринг. Тоа е само навистина голема бројка, но тоа е кодиран со букви и броеви така што големината на тоа може да биде дури и поголем од бројот сам. И тогаш, од страна на начин, Пат = /, дека само значи дека ова куки треба да биде поврзани со интегритет на веб-сајтот, не само специфичен страница целата работа. Значи ова е тоа виртуелна рака печат. Тоа е како да на серверот, Фејсбук, или во нашиот случај апаратот, има буквално напишано 0vlk8t и така натаму, на вашата рака. Информации што на серверот, не го правам тоа не е складирање на моето корисничко име, секако не чување мојата лозинка. Наместо тоа, се чини дека е складирање на псевдо случаен информации така што никој не може да се погоди она што мојата рака печат е. На страната на серверот, Во меѓувреме, серверот се случува да се запомни, веројатно во базата на податоци или нешто, дека корисникот, кои во иднина претставува рака печат на 0vlk8t, точка, точка, точка, треба да се поврзани со оваа особено количката, така да се каже. Со други зборови, ако јас сега одиме врати тука и вчитајте ја оваа страница, како не на серверот знае што го посетив едно време? Или ако јас го направи тоа повторно, како не на серверот знаеш дека јас сум го посетил два пати? Па ако одам долу на оваа Најновите барање кое сега е трет што сум испратен вкупно забележите моето барање сега. Има уште ова побара до тука, истиот како и досега, има уште еден куп на нешта кои ние сме игнорирани како и досега, но последната насловот, ова време, бидејќи јас сум бил тука пред, е презентација на овој виртуелен рака печат. При што оваа линија тука не, во собата куки но колаче дебелото црево PHPSESSI = 0vlk8t, тоа е само мое прелистувачот автоматски презентација на оваа страна печат, така што сега на серверот, веднаш штом ќе се реализира, ooh, ова е корисник 0vlk8t точка, точка, точка, Сега можам да се сеќавам на кој тој или таа е и reassociate со тој корисник без оглед на информации што сакам да, и сите тие информации може да се чуваат од страна на вас, на програмерот, во $ _SESSION. Значи да биде јасно, ако се отвори вистински брз во gedit дека вистинските датотека, counter.php, во мојата локална домаќин јавниот именик како и досега, да се забележи дека, навистина, Јас сум на крајот чување во $ _SESSION Цитат unquote "контра" вредноста на претходниот counter која Јас се од овие линии до тука дека ние погледна во последно време, плус еден. Значи под капакот на моторот, тоа е сите колачиња. Тоа е само еден вид на дигитални страна печат ќе напред и назад, и искрено ако отворите Хром Инспектор на било кој веб-страница ќе ја посетите денес, со супер висока веројатност, си оди за да се види можеби еден, можеби половина дузина колачиња се памети од вас. И уште полошо, ако тие веб-сајт го посетувате сите имаат реклами, кои сигурно е прилично честа и денес, и ако оние реклами кои доаѓаат од некои централни партија, некој како Google AdWords или како што тие јавете се на еден од нивните производи или други такви продавачи кои продаваат реклами, она што е интересно, и искрено она што е малку загрижувачки, за тоа како HTTP работи, е дека ако имате една реклама вградени во Facebook.com, а Google.com, и Harvard.edu, било кој број на веб-сајтови, па тоа е како дека има среден човек кој отслужува up реклами за сите три од овие веб-сајтови, излегува дека колачињата се на домен. Значи, ако имате една реклама што доаѓаат од истата компанија на различни веб страници, дека компанијата не можат ефикасно да ги пратите кои сте во сите оние веб-сајтови. Харвард не може да знаат сте во посета на Фејсбук. Фејсбук можеби не знаат и сте во посета на Харвард. Но, она што огласување тие се користат, ако овој домен е присутни во двете Harvard.edu веб страници и Facebook.com веб страни, овој среден човек сигурно не знае кој сте бидејќи на овие колачиња се дели во, или подобро кажано, да, дека т.н. посредник. Па ние ќе се вратам на оваа во безбедносни импликации од него, но има многу информации се чуваат за вас во секое време ќе посета на повеќето било кој веб-страница на на интернет и тоа навистина се сведува на овој многу едноставен механизам. Што се случува, тогаш, ако ти си супер параноична и да одлучите да одите во Хром или IE или што и да го исклучите вашиот колачиња? Што се случува? Да? Вие really-- сте го направиле тоа право? ОК. Не, повелете. ПУБЛИКАТА: Одредени веб-сајтови не мора функција без неа како што се Фејсбук. Дејвид Џ MALAN: Да! Така одредени веб-сајтови само ќе престане да работи. И во повеќето веб-сајтови овие денови што во основа се потпира на колачиња, особено ако тие имаат да се најавите во, тие се само случува да се пробие. Бидејќи сметаат дека алтернатива, ако на веб-сајтот нема начин за помнење кој сте, и затоа вашиот веб прелистувач не е претставува со секој HTTP барање на оваа страна печат, ефикасно веб-сајт како ќе Фејсбук што морам да Ве прашува за најавите во секој ебам време го промените страници, или кликнете на линкот, кој сигурно не е особено добар корисник искуство. Така што, исто така, е меѓу трговија добиени. Значи без понатамошно ado, ајде да ги здраво за готово дека со веб програмирање, во јазици како PHP, можете да се запамети информации, како што во проблемот поставени седум, кога ќе спроведе своја Е * трговија како веб-сајт со што да се купи и продаваат акции, ќе се сеќавам точно она што корисникот го купуваат и продаваат и кој тој или таа е по пат на оваа сесија. Но, ние се случува да треба еден познавач начин од е-мејл да се започне чување на информациите наоколу. Нели? Во понеделникот, ние разговаравме за Frosh инстант пораки и како во верзијата една од оние веб-сајт, пред неколку години, сите што правевме беше е-маил на Проктор кој е задолжен за интрамурален спортови програмата, името и полот, и дали или не тие се капетан, и дом на некој кој е регистрирање за интрамурален спорт. Па тоа не е лошо, но тој или таа, тогаш мораше да трол преку е-маил, направи табела или нешто слично тоа, да се задржи сето организирани. Па сигурно ние како програмери може да го стори тоа за што Проктор. И така влезе во SQL, Структурно јазик за пребарување, кој се случува да изгледа прилично различни за двете C и PHP, и ќе се нурне во многу повеќе раце на PHP и проблемот постави седум, но, исто така, SQL, или SQL, ова е јазик кој го користите да се разговара со база на податоци. Но она што е база на податоци? И ќе се сетам на база на податоци, барем за сега, како само да биде како датотека Excel, или ако сте корисник Mac броеви датотека, или ако сте во Google Apps корисникот табела на Google, тоа е ефикасно базата на податоци, или навистина посебно на релациона база на податоци. А релациона база на податоци е само нешто што има редови и колони, а вие може да се сместат било каков вид на информациите во овие редови или колони. Но, она што е убаво за SQL и за вистински бази на податоци, а не само табеларни пресметки или Google табеларни пресметки, е тоа што можете да го користите јазикот да се всушност извршување пребарувања за внесете податоци, да се отстранат на податоци, да се погледне за податоци, дури и најважно, а вие не мора да го користи прилично рачно Како што може да обично на Google табела како оваа. Значи во SQL, има еден куп на основните искази или парчиња на функционалноста изградена во. Има многу повеќе од овие, но може да се оди огромна далечина само со знаејќи дека овој јазик наречен SQL има најмалку четири изјавите можете да потпора. Избришете, за отстранување на податоци, Вметнете, за додавање на редови, Ажурирање, за менување редови, како и изборот, за добивање назад редови и тоа е навистина она што SQL прави тоа. Таа работи во целост на редови, така дека кога ќе го вметнете или отстраните, или ажурирање, или одберете она што си добивање назад како т.н. резултат во собата, како низа на редови. Еден куп на редови од табелата. Па назад во текот на денот, па дури и до денешен ден, можете да комуницирате со база на податоци со користење на командната линија, но тоа не е особено забавно да се користи оваа црна и бела стил прозорец и всушност извршување на команди и ѕиркаат низ вашата база на податоци. А графички кориснички интерфејс, или GUI, е многу повеќе препорачува, веројатно, и така алатка ви препорачуваме и преинсталиран за вас на апаратот се нарекува phpMyAdmin. Тоа е вкупно коинциденција што името на оваа работа има PHP во неа, тоа само значи дека на луѓето кој ја напишал оваа програма се напиша тоа во PHP. Но, тоа е во крајна линија за администрирање база на податоци на серверот, како MySQL серверот што би можеле да имаат, како што се направи, во CS50 апаратот. Значи има повеќе детали тука од ние треба да се грижи за денес, но она што е клучот е во тоа што на левата страна е листа на базите на податоци кои ги имате на вашиот компјутер, на вашиот CS50 апаратот, или да се конечните проекти кои може да имаат на трета страна, на компанијата веб-сајт или веб сервер, дека може да се плаќа за просторот. Така, на левата страна е бази на податоци, од кои еден е pset7 која јас позајмени од следната недели pset, а потоа на врвот таму се забележи постои куп на јазичиња, од кои една е бази на податоци, SQL, статус, корисници, извоз и така натаму. Па може да оди долго начин само со реализација дека повеќето од кориснички интерфејс е во горниот лев колона и во склопот на врвот во право, таму горе. Значи она што може да ние всушност правиме со ова? Па, ајде да започне создавање на малку информации како што следи. Да претпоставиме дека на следните е случај, како што ќе биде во само неколку дена, сакате да се спроведе веб-страница, наречена CS50 финансии, и овој веб-сајт ви овозможува да се купат Цитат unquote и продаваат акции. И тоа се случува да дознаам цената на тие акции, на крајот како што ќе видите, од разговорот со Јаху финансии. Кои, прекрасно, има бесплатна услуга при што може да се помине во акции тикер како GOOG за Google, и ќе ти го врати моменталната залиха на Google цена во рок од минатото неколку минути во најмала рака. Па ќе го користите дека, во крајна линија, да се преправам за корисникот да купуваат и продаваат вистински акции користење на виртуелни пари, но многу првото нешто корисникот се случува да се види е ова најавниот екран кој ги прашува за нивното корисничко име и лозинка. И така, една од првите предизвици за вас во pset7 ќе биде за спроведување на задниот крај база на податоци, табеларни пресметки ако сакате, што се случува да се сместат корисниците имиња и лозинки и на крајот она што акции што ги поседуваат, и колку, и колку пари имаат, па еден куп други работи во други маси, или табеларни пресметки. Па ајде да ги разгледаме во тоа како оваа може да се појави на прв поглед. Одам да се врати во апаратот и јас сум случува да одат на овој URL тука phpMyAdmin localhost / phpMyAdmin и ќе видите дека тоа ме носи до интерфејс точно како што видовме на екранот, и тука јас имаат дополнителна база на податоци наречен предавање за денес и дозволете ми да оди напред Првиот и кликнете на pset7. Јас се чини дека имаат неколку опции, еден за нов, за создавање на нова табела, и линк до корисниците, кои е на маса веќе создадени. Значи она што е на маса? Значи, ако се користат Excel пред, и ако сте користени броеви или Google Табеларни пресметки, ќе се отвори прозорец и ќе добиете еден куп на редови и колони, но тогаш обично имаат работни листови по дното, или посебен јазичиња. Може да се мисли на секој лист како табела така што базата на податоци, во крајна линија, е комбинација на еден или повеќе табели, една или повеќе работни листови, во светот на нормален табела. Значи, дозволете ми да оди напред и кликнете на овој лист дека јас premade, наречен корисници, a.k.a. База на податоци табела. И ако се движите надолу тука, дозволете ми да одзумирате малку, тоа е она што phpMyAdmin кажува нас е во внатрешноста на оваа табела во моментов. Тоа е малку збунувачки на прв поглед, бидејќи на графичката околина не е најубаво нешто на светот, но она што е интересно е овој дел тука. Проект, корисничкото име и хаш. Однапред, и ќе бидете раце ова на проблемот постави седум, ние ви даде фајл кој ги содржи супер мала база на податоци маса, позајмени всушност од хакер издание на проблемот поставени две, во внатрешноста на кои има шест реда. Еден за Белинда сите пат до една за Zamyla, и ќе забележите од лево на оние кориснички имиња се единствени лични карти како еден, два, три, четири, пет, шест, цели броеви, а потоа на правото се хашови. И ако, шансите се, ќе не направи на хакерите издание проблем постави два, но хаш е исто како шифрирана лозинка со неколку ограничувања. И така, она што го гледате тука се шифрирана верзии на сите шест на нашите лозинки од проблемот поставени два е хакер издание. Сега на лево е само некои GUI работи, уредување на овој ред, копирање на овој ред, бришење на овој ред. Но, она што е интересно сега е следново. Јас всушност може да започне експериментирање со оваа табела. Значи, ако јас одам и кликнете на SQL јазичето, да се добие овој голем текст. И ова не е како ние ќе го прават тоа кога всушност пишување на код. Да биде јасно, phpMyAdmin е само инструмент, кој е случува да ги споделите со нас ѕиркаат наоколу во базата на податоци и нека експериментира со прашања. Така на пример, да претпоставиме Јас изврши токму тоа. Одберете, кој е еден од оние клучни зборови што споменав порано, ѕвезда, која ги претставува сите колоните во табелата. Од она маса? Па, корисници. И информации има оваа чудни конвенција во SQL каде што, всушност, се користи назад крлежи, обично, не единечен наводник а не двојни наводници кога се зборува за маси имиња, па назад понуда е нешто на горниот лев на Вашата тастатура повеќето веројатно. Значи, дозволете ми да оди напред сега и само го оставиме тоа сам и движете се надолу и кликнете оди, и ние сме всушност, се случува да се види истото. Имаме само извршил SQL пребарување велејќи изберете што ѕвезда од маса наречена корисници, и она што го добивате назад е ова. На крајот на краиштата, ќе бидете во можност да го направи тоа истото во кодот, но сега за сега сите што сакав да не беше се види тоа во мојот интернет пребарувач. Па ајде да направи нешто малку различен. Дозволете ми да се вратам на јазичето SQL, и ајде да речеме дека она што? Zamyla ја изгуби сите нејзини пари, а со тоа тоа е време за нас да ја избришете како корисник. Таа повеќе не е влезете во. Па ќе одам да се каже избришете from-- добро, одржување капитализација за конзистентност, избришете од корисници каде. И така, може да имаме овие предикати, или овие квалификациите, на крајот од мојата изјава каде и како може да се избрише Zamyla? Со нејзиното име Zamyla, па колона, еден од столбовите беше именуван, па каде име = "Zamyla". И тука јас се користи двојно наводници или единечен наводник, го користите само на задната крлежи кога зборуваме за имиња, на пример, на табели или полиња. И дозволете ми да кликнете Go тука. И сега, на веб страната е да се биде малку престорен во грч. Или, дали навистина сакате да се изврши бришење од корисници каде име е еднаква на Zamyla? Да. Па сега, ако ние се вратиме на мојата маса со кликнување на корисниците, да се забележи дека Хм. Јас goofed. И всушност, јас вид на кликнавте далеку толку брзо што не си го видат црвена порака за грешка, можеби. Што направив погрешно? ПУБЛИКАТА: Вие не треба да профитираат нејзиното име. Дејвид Џ MALAN: Да јас капитализирани нејзиното име, но нејзиниот username-- всушност јас направил неколку грешки, нели? Еден, нејзиниот корисничко име е zamyla, мали Z, и името на колоната е корисничко име, не се именува, па ајде да го направите ова повторно. Дозволете ми да оди напред и да избришете од корисници каде корисничко име е еднаква цитат unquote "Zamyla". Сите нели? Така што ова изгледа малку подобро, нека ме да си одам движете се надолу и кликнете на Оди. Сè уште нема да се развикам мене да бидам сигурен. Кликнувам Да, и сега гледаме, искрено ова се случило, навистина брзо, за помалку од една Вториот, секако, ова е токму пребарување кои добија погубен. Да се ​​потврди, дозволете ми да кликнете на корисниците и навистина сега Zamyla е нема. Сега ајде да го прават спротивното. Да претпоставиме дека Габе сака да се регистрирате за веб-сајт. Што е SQL пребарување, она што е команда можев да напишете за да додадете Габе? Па тоа е прилично јасна. Вметнете во корисниците, а сега тоа добива малку криптичната. Јас треба да се одреди, до серверот, она полиња Сакам да го доделите. Јас навистина не се грижат што Габе е проект број е, па ќе одам да го прескокнете тоа. Јас сум наместо случува да се каже корисничко име, хаш, а потоа вредностите Сакам да се стави таму се случува да биде Габе. А потоа со хаш, јас не знам. Па сега за сега, јас ќе одам да го оставиме тоа како голем да се направи. Ние ќе се вратам во дека во проблемот поставени спецификации за тоа како, всушност, ќе го направите тоа. Значи забележите, повторно, синтакса. Вметнете во табелата име, а потоа parenthesized листа на области, колоните сакате да додадете вредности, а потоа само исто точно нарачување лево кон правото на вредности што сакате да го додадете, и тоа е само за завиткување, бидејќи текстот е малку долго. Па сега дозволете ми да кликнете на Оди. Еден ред вметната. И сега, ако јас се вратиме корисници, она што е интересно е дека не само што е Габе сега во база на податоци, она што е очигледно неговиот проект? Па тоа е седум. Зошто е седум, кога јас не го додадете? Така што ова, исто така, е еден од карактеристики добивате од базата на податоци. Многу вграден во функционалноста. Излегува дека кога создаде оваа табела, Јас преконфигуриран тоа е автоматски додели на проект на таков начин што чекори. Значи, ако некогаш сте појдов наоколу, и го погледна она што вашиот Фејсбук проект број е, овие денови тоа не е навистина нешто да се направи, но на Фејсбук како API-то, Пријава Програмирање интерфејс, при што може да се добијат назад целиот куп на податоци за себе, за вашите пријатели, и вашата врска. И она што се користи да се вид кул, назад во текот на денот, беше да се погледне до она што вашите Фејсбук ID број е. Марк Цукерберг е, на пример, е три бидејќи тој е автор на сајтот. И како што оди приказната, тој создаде два тест сметки, корисниците еден и два, кои потоа избришани. И така, Zuck, како што е неговото име на Фејсбук, е матичен број три, и сите од нас имаат броеви многу поголем од три, овие денови. Всушност, во некој момент Фејсбук се иселија од дури со помош на int, што е 32-битна вредност, за користење следниот чекор, во суштина долго долго така дека тие би можеле да се сместат дури и повеќе корисници се регистрирате. Така забавна малку историски факт. Па тоа е само основната синтакса со кои ние може да се изврши неколку прашања, но ние всушност може да направи еден куп работи со SQL. И ќе видите, во крајна линија, во проблемот постави седум дека треба да се направи број на одлуките, меѓу нив ќе биде она што типови на податоци за употреба. Значи исто како и во C, постојат податоци видови во базата на податоци, како MySQL, и типови на податоци мора да се избере од вклучат овие полиња тука. Char, varchar, инт, големи int, децимални и датумот време, и многу други. Значи, да всушност го направите тоа. Ајде да се преправаме дека ние не страна ви табела на овој корисник и дозволете ми да оди напред и да се создаде, за себе, во предавањата database-- всушност дозволете ми да оди напред и да го избришете масата имам тука веќе така што ние, всушност, може да се создаде ова. Whoops. Одам да се откажат од овој маса, и сега сум ќе одат повторно на предавање база на податоци овде, Одам да се создаде маса наречен корисници и ајде да само го прават три колони на почетокот и кликнете на Оди. Сега, во најголем дел, повторно, ова е само користење на оваа графичка алатка наречена phpMyAdmin, и она што го прави сега си е создавање на маса. Значи ова е како ќе датотеката, нов, и создавање на нови Excel датотека. Па тоа ме прашуваат неколку прашања, од лево кон десно, она што е името на првата колона, а потоа името на вториот столб, и името на третиот. Значи, да се рекреираат ова. Проект, а потоа корисничко име беше една, а потоа хаш беше друг. Значи она што треба тип на податок да сега за поле како проект? Тука е целата листа на типови на податоци на располагање на вас во базата на податоци, и сега за сега ајде да одиме со INT. 32-битна вредност, јас не мислам реално сум ќе има повеќе од 4 милијарди корисници во мојот профил, во мојата служба, па ќе одам да се движат за да на следното прашање. Јас не одам за да се определи должина или вредности, тоа не е се применуваат тука за int, сама по себе. И сега можам да се определи, очигледно, стандардно вредност, која јас не одам да се определи. А споредба, јас не знам што е тоа. Атрибут. Сега ние всушност не имаат дизајн одлука. Значи има неколку полиња тука, не сите на кои се применуваат, но непотпишана само значи што? Дека int мора да биде? Само не-негативен. Па тоа мора да биде 0 на до. Не, јас не одам да се провери, бидејќи Сакам секој корисник да има лична карта, тоа не може да биде нула. И тогаш, ние се дојде до некои повеќе интересен дизајн одлуки како оваа. Ние ќе се вратам на оваа во еден миг, но она што уште една карактеристика на база на податоци е, е тоа што може да се каже база на податоци на серверот оди напред и оптимизирате себе, за својот RAM и вашиот хард диск простор, така што избира и инсерти, и брише, и надградби се навистина брзо. Спротивно на ова со pset5. Ако си сакал да се погледне до нешто во вашиот хаш табелата, која мислите како база на податоци, кој мораше да се направи сите работа за правење на вашето хаш табелата брзо. Тоа е како, очигледно, вас. Нели? Ти мораше да се стави во секое време парична казна подесување работи, добивање на хеш функција право, да пронајдат начин многу кофи да го имаат. Но, она што е убаво, повторно, за базата на податоци е можете само залог сите ова на други луѓе кои се смета дека тоа преку за вас, и она што Одам да се каже тука под индексот е дека мојот проект поле се случува да биде примарен начин на идентификувањето на корисници во оваа база на податоци. Јас не одам да се мисли на Zamyla како Zamyla, Одам да се мисли на неа, како бројот 6. Зошто е ова, можеби, подобро интуитивно да се мисли на и модел секој од вашите индивидуални редови користење голем број, наместо на нешто како стринг, како Zamyla или Габе или повеќе стринг за уште? Да? ПУБЛИКАТА: Еден проект е уникатен? Дејвид Џ MALAN: Кажи повторно? ПУБЛИКАТА: Еден проект е уникатен? Дејвид Џ MALAN: Еден проект е единствена, но suppose-- како што е случајот во целина со кориснички имиња, да претпоставиме Јас, исто така рече дека не може да има само еден Zamyla во светот, а само еден Габе. Би можел да наметне посебност Ограничување на жици, исто така, ако сакав. Па не е лоша мисла. ПУБЛИКАТА: Повеќе безбеден. Дејвид Џ MALAN: Повеќе безбедно, зошто? ПУБЛИКАТА: Вие не може да се каже кои е што, како во на корисникот. Дејвид Џ MALAN: Океј, ти не може да каже кој корисникот е што па постои приватноста аспект на тоа, особено ако лични карти можеби се појавува во адресите. Толку сигурен, кои би можеле вид на работа, исто така. Други мисли? Да? ПУБЛИКАТА: Тоа е полесно да се вршење на операции на една int. Дејвид Џ MALAN: Тоа е вистинската критикар. Тоа е само поефикасен, или полесно за компјутер, за вршење на операции на цел број. Нели? На int е загарантирана да биде 32-битна, додека Zamyla е долг неколку ликови, Габриел е долга уште неколку ликови, Девенпорт е навистина долго, и така тоа е не е особено ефикасно да го употребите жици да се споредуваат вредностите и да бараат за полињата, и ажурирање на полиња, ако може да се извлечат со само еден број. Само 32 бита. Па кориснички имиња, исто така, на овој начин, не мора да биде уникатен, иако тие веројатно треба да биде, па дури и на овој начин исто така на корисникот може да им биде дозволено да промени неговиот или нејзиниот корисничко име. Па ајде сега ја напушти оваа како основно средство за идентификација на корисникот. Ова се кажува во базата на податоци оди напред и да се оптимизира себе така што изглед и прозорци на проект се супер брзо. АИ, ужасно име, само значи Авто зголемување, и ова е проверка кутија ние треба да се провери да се каже дека на полето за проект на да се ажурира автоматски за мене, а потоа јас ќе одам да дојдете до тука и искрено јас не сум навистина заинтересирани во повеќе од овие области. Сигурно не денес. Па ќе одам да се вратам тука, до првата колона, во која Јас треба да наведете корисничко име и хаш, и нека е најмалку фокус на Втората, за сега. Int веројатно не е вистинскиот повик, па што го прави повеќе смисла можеби? ПУБЛИКАТА: Текст. Дејвид Џ MALAN: Кажи повторно? ПУБЛИКАТА: Текст. Дејвид Џ MALAN: Текст? Добро, слушнав текст. Што друго? Ние вид на имаат еден куп на избори кои се текстуалните во природата. Значи, кога, и зошто, дали го користите некои од овие? Па знак, спротивно на она што може да мислам, не е еден лик. Тоа е одреден број на карактери. Значи, ако се знае дека сите кориснички имиња мора да биде како осум карактери, како што се користи да биде заеднички кај постарите компјутерски системи, можам да кажам знак а потоа можам да кажам 8 овде. Тоа е кога третата колона станува применливи при создавањето на маса. Но, тоа е вид на досадни поради тоа што некои луѓе би можеле да сакаат да имаат подолг корисничко име од осум карактери, некои луѓе можеби ќе сакате да имаат пократок корисничко име, па зошто да се посветат себеси на одреден број? Зошто да не имаат променлива број на знаци и само велат дека максималната должина на име е, јас не знам, како 64 знаци. Не можам да смислам ниедна пријатели кои имаат имиња подолго од 64 карактери, па дури и ако тоа е премногу краток би можеле секако тоа се судрат произволно. Па varchar е променлива број на карактери. Текстот не е лоша инстинкт, и искрено тој вид на прави она што го кажува, но во полето за текст може да биде како 65.000 бајти барем. Тоа е веројатно overkill за поле, и всушност, То, 65.535. Тоа е веројатно overkill за името, па ние ќе се држиме, обично, со varchars за текстуална поле и хаш, исто така. Хаш, што излезе, ние би можеле да се направи varchar како добро или нешто слично, но ние нема да се фокусираат денес на криптографија има и броеви дека ние би можеле, всушност, сакате да го користите за неговата должина. Но, дозволете ми да дојдете долу десно. Можете да имате само една примарна индекс за на маса, но сакам да се примени кој било од овие, сега, да корисничко име, што би рекол? Што треба корисничко име да биде врз основа на нејасни разбирање на овие четири опции? Само со нивните имиња? ПУБЛИКАТА: Единствен. Дејвид Џ MALAN: Значи уникатен, нели? Значи излегува дека не само што ви кажам една база на податоци, во однапред, ова е примарен начин на идентификување на области. Вие исто така може да се каже ова е ќе биде единствена област. Тоа нема да биде Она што се потпрат на, но јас би сакал на базата на податоци во суштина имаат дека ако состојбата, па дека ако јас некогаш сте се обиделе да се регистрираат две корисници со истото име, база на податоци рамни надвор нема да ме пушти. Јас би можеле да имаат некои дополнителни код во PHP што спречува многу, но на база на податоци, исто така, може да се обезбеди дека тоа никогаш не се случува да се случи. Сега, како настрана, особено како мислите дека за конечниот проекти, имајте на ум да ја индексира и целосна текстот се всушност доста корисни. Ако имате поголема база на податоци, а не со десетици, но со стотици или илјадници или дури и милиони на области, може да исто така, му кажете на базата на податоци во однапред Ова е поле Одам да се бараат на многу. Можеби неговата корисничко име, можеби тоа е био, ако сте правење на Фејсбук како веб-сајт кој има ставовите дека корисникот е дозволено да се спаси, и ако сакате да каже на базата на податоци во однапред Одам да се бараат во оваа област многу, но тоа не е нужно единствен, можете да наведете создаде ме индекс. Или, можете да се каже, исто така, дозволете ми да се направи вид на произволно пребарувања како команда или контрола Ф, како тебе можеби со еден збор процесор, па може да се погледне произволни низи или поднизи во оваа област. Со други зборови, ние сме добивање до точка во семестар каде што вие не мора да се грижите за како да се имплементираат работите ефикасно. Вие само треба да знаете за она што дизајн одлуки да се направи така што ќе се користење на правото алатки за трговија со цел да се потпора карактеристики дека другите луѓе имаат изградено за вас. Значи да повториме, основно треба само има една, може да имаат само еден, и тоа е нешто што го извршување на користење на идентификување полиња уникатно. Уникатен е само слични во духот, но можете само повремено да ја користите, но сакате базата на податоци да го наметне. Индекс само значи превентивно забрзаат работите во иднина така што јас може да пребарувате за работи во оваа област. А потоа целиот текст е генерално за ставовите, или есеи, или големи тела на текст, каде што исто така, можеби ќе сакате да се има диви картички како еквивалент на ѕвезда. Во право. Така што беше вид на многу на сите одеднаш. Ајде да видиме ако не можеме да го дестилираат неколку од овие карактеристики а потоа се изгради нешто прилично едноставна, но моќна. Па меѓу останатите дизајн одлуки сте на крајот ќе мора се заедно линиите на складирање мотори. И дозволете ми само да се спомене од овој во очекување на конечните проекти, и предвидување на ајде say-- нема ајде да го направите тоа. Да се ​​изгради оваа мала апликација прво. Одам да одиме во мојата терминал прозорецот, и тука не е само counter.php, кои ние сме сега се случува да се ослободи од како не соодветен, но ние имаме еден куп на директориуми и ова се случува да биде многу слични во духот на она што ќе видите во проблемот постави седум. Значи имаме три директориуми вклучува јавноста и шаблони, кои е токму каде што застанавте на Понеделник со нашите целиот MVC парадигма. И да повториме, во јавноста се случува да одам секоја датотека што сакам на корисниците да всушност v да биде во можност да ја посетите во нивниот интернет пребарувач преку URL-то. Дефиниција. Што ќе стави во шаблони? Каков вид на работи? Немаше многу, но неколку додадени фајлови: најмалку во понеделникот. Да. ПУБЛИКАТА: заглавјето и подножјето? Дејвид Џ MALAN: заглавјето и подножјето. Значи имаме нешто слично и денес, исто така. Имаме уште неколку датотеки, но Footer гледам, насловот гледам, а потоа еден куп други датотеки. Значи ова е еквивалент на погледот V MVC, кои, повторно, ќе биде малку повеќе јасно во проблемот постави седум, но ова е само една папка Јас сум ставање на многу од моите естетика. Многу од моите HTML, многу од моите форми. Во меѓувреме, вклучува, е уште еден директориумот, која има овие три датотеки и ајде да се земе брз поглед на овие. Одам да се оди напред и се отвори како config.php. Како што се испоставува, многу како претходно во текот на рок, можете остар вклучен CS50 точка h со pset7. Во денешниот пример, си оди да се направи еквивалент на тоа со бара изјава кои ефикасно вклучува овие неколку линии. Значи да биде јасно, ова е датотека со име како config.php. И се забележи она што таа го прави. Тоа е очигледно прави нешто криптичната, претворајќи на пораки за грешки така што ќе може да ги види во прелистувачот. Тоа е, тогаш, очигледно бара две други датотеки па ова е како # Include во C, а потоа ова ние не се види, и ние се потпираа на, ова се врти околу дека количката како функционалност. Ова значи колаче волја да бидат испратени и назад. Значи, зошто е тоа интересно? Па, ако се вратиме на ова директориум и се отвори, на пример, constance.php. Забележете дека PHP подржува константи, тоа не е сосема како #define во В. Наместо тоа, вие буквално велат дефинирани, и известување дека јас сум се чуваат во однапред четири константи во оваа датотека. Еден за денес база на податоци, за мојата лозинка, за моето корисничко име, и за името на серверот. Значи овие се всушност ќе биде доста слични во проблемот постави седум. И на крај, и ова е местото каде што јас сум ќе добиете некои убави функционалност од редот на вработените, во functions.php е еден куп на кодот ние сум напишал, и го украдов некои од овие од проблемот постави седум за денес, што го прави еден куп работи и ајде да се погледне во еден од нив а особено. Оваа функција овде, пребарување, ќе биде функцијата PHP ние го нарекуваме со цел да се изврши SQL. Пред момент бевме користење phpMyAdmin, но тоа е само за вид на цели за учење и дијагностички цели и заборавање вашата база на податоци во собата. Кога ќе всушност го користите вашиот база на податоци, можете, на човекот, очигледно не се случува да се влече до веб- страница секој пат кога некој ќе регистрира. Сте ќе треба да се напише код кој инсерти и се брише корисниците на побарувачката, и ние си оди за да се направи ова по пат на барање функција. Ако јас сега се движите надолу, има ќе биде уште неколку карактеристики. Пренасочување се случува да биде во функција пишувавме за вас, кои ви овозможува да испрати на корисникот на друга адреса, и ја даде е функција, сосема како видовме во понеделникот, кои, всушност, го прави дефиниција, но повеќе за овие во форма на свој прошетка pset7 преку. За сега, ајде да одиме напред и да го направите тоа. Дозволете ми да одат во моите предавања маса и види дека има во моментов ништо тука само уште, и дозволете ми, исто така, одат во мојот јавниот именик, каде има само еден фајл, index.php. Оваа датотека се чини дека е супер едноставен во моментов, изгледа исто како и оваа. Многу слично како ние застанавте во понеделникот. Јас сум бараат оваа датотека, config.php, која е во еден вклучува именик, кој е во точка точка, моите родители, а потоа тоа е само давање на оваа датотека. Значи она што е оваа датотека? Ајде да се отвори во мојот шаблони form.php, и ние ќе го гледаат ова. Супер едноставен, очигледно оваа форма е ќе поднесе од страна на $ _GET или $ _POST. Брзо разумност проверка. Буквално визуелно пребарување на датотека. Метод еднаква на пост. Па тоа не се случува да го користите URL-то, како Google го прави тоа, тоа се случува да се најде на сокриј информациите зад сцената и тоа е ќе се достават до фајл наречен register.php, и тоа е на датотека ние се уште не е напишана но она што тоа се случува за да изгледаат како е ова. Ако одам во посебна страница Ова е што localhost / index.php изгледа како. И повторно, на серверот само под претпоставка index.php. Enter. Така што каде сме во, и она што сакате да го направите е да биде во можност да напишеш работи како Дејвид, а потоа мојот телефон број, кој ќе каже 617-555-1212 за сега, се регистрирате и сега register.php не беше пронајден. Па јас треба да се спроведе тоа. Па ајде брзо камшик нешто како ова. Дозволете ми да одам во мојата јавниот именик и не gedit на register.php, и сега ќе одам да се оди напред и да започне PHP на владата, како што правевме во понеделникот, и ознака блиску PHP, и ајде да направиме неколку работи. Значи еден, знам, од напишани таа форма, што сакате да се провери за следново. Ако тоа е празен, без оглед на корисникот внеле во полето за име, а потоа Одам да се каже нешто како извинувам недостасува име. Извини, пак, е не е изградена во PHP работа, тоа е функција пишувавме во functions.php за pset7 така што ќе имаат пристап до неа. Друго, ако другата поле е празен, број, тогаш јас сум ќе им се извинувам на корисник и да каже што недостасува број. Зачувај оваа датотека. Сега ајде да се вратиме на мојот интернет пребарувач, се вратиме на форумот обидете се повторно. Регистрирај се. ОК. Ништо не се случи, што е добро. Јас не се добие порака за грешка. Но, ако наместо тоа, ајде да вчитајте ја оваа страница, а не обезбеди ништо. По ѓаволите. Направите тоа. Регистрирај се. Што направив погрешно? Ако се празни, $ _POST име. Кажам уште еднаш? О, се разбира. Го заборавив најважниот дел, кој е бараат ("../ вклучува / config.php."). Ми треба да имаат пристап до извини функција, која Затоа ништо не се случуваше. Функцијата всушност не постои. Па ајде да се обидеме тоа повторно. Ајде да ја превчитате страницата, кликнете на Register. ОК. Ете го. Значи, на излез сме гледате тука е резултат на повик на извинат функција, супер едноставен, и тоа само отпечатоци од она што Јас го даде како аргумент. Сите права, па ајде да соработуваат. Ајде да обезбеди моето име како Дејвид, се регистрираат, недостасува број ОК ајде обезбеди дека, исто така. 617-555-1212. Регистрирај се. ОК. Значи се е во ред сега, само ништо интересни се случува. Па сега ајде да се направи нешто повеќе интересни се случи вака. Дозволете ми да одат во phpMyAdmin, и нека е всушност се создаде маса наречена корисници, Одам да го даде три колони, а јас ќе брзо се создаде проект, а потоа името, а потоа бројот, и поле на проект Јас сум ќе заминат како int. Поле име Одам да ја напушти како varchar, и ние ќе се каже 64, на некој начин произволно. Бројот Одам да се направи, знаеш што? Ние сме одење во поддршка на бројот на американските тука, па ќе одам да се направи нешто како знак, а потоа 10 карактери Макс за површина кодот а потоа седум цифри. И тогаш овде, јас ќе одам да наведете авто прираст оваа област, направи ова основно клуч, и Одам да се оди напред и да не провери било кој од овие други кутии. Значи, кога јас сега конечно, кликнете на Зачувај, и јас се вратам во мојата корисниците маса, ова е она што изгледа како ако јас сега кликнете на структура нов таб. Така што ова, да биде јасно, е само начин phpMyAdmin е на велејќи вашата база на податоци маса има проект, име, и голем број со оние кои се особено конфигурации и ние ќе го игнорираат остатокот од полињата има сега за сега. Па сега што сакам да направам? Значи, ако јас одам сега во мојот изворниот код, ако се е во ред Сакам да се изврши следнава побарување. Вметнете во, и можам само велат корисници јас не стриктно треба оние назад крлежи, ако тоа е не е опасно зборот како корисници. Одам да се каже името, број, а потоа тука сум нема да тешко го кодот на цифра од вредностите уште. Одам да се стави две прашалници. И ова е конвенција во повеќе јазици при што доколку сакате да имате случаеви за низа ви се случува да го користите на прашањето знаци, причини ние ќе врати за да разговарате за безбедност, и тука Одам да се помине во оние две полиња пост името, а потоа пост број и сега ја зачувам датотеката. И сега ќе одам да одат надолу тука е супер едноставно велат rendersuccess.php, која се случува да биде уште една дефиниција. Одам да се создаде навистина брзо. Geditsuccess.php и јас сум само ќе да се каже Н1 успех во таа датотека. Сите во право. Па сега, ајде да се вратиме на прелистувачот, каде што го посети порано. Ајде да одиме напред и да потврди напишав во Давид, напишав во еден телефонски број, зачленете се. По ѓаволите. Што направив погрешно? Па јас гледам грешка тука, има грешка во вашиот SQL синтаксата. Дозволете ми да скокне назад gedit, да се навратам register.php, и она што никако не можев да ја изостави дека беше важно последен пат? Ми треба ова. Сакате да знаете дека освен од има забележано пред, но ми треба тоа. Па сега ајде да одиме назад, и овој беше корисна за да ја видите во прелистувачот и тоа е причината зошто во config.php, ние плукаат грешки. Ајде да одиме напред и да ја превчитате, кликнете Продолжи, успех. Па сега дозволете ми да одам во текот на мојот база на податоци тука и кликнете на корисници, и пребарувате, и ќе забележите сега имаат Дејвид во мојата база на податоци тука. Сега технички овој веб-сајт е уште не е на јавната интернет, па не можам да имаат и други луѓе во ставање тука, но ако јас сега сакав да, за пример, испрати мене текст порака. Ајде да се излезе на ногата тука и види дали ова всушност се работи. Одам да се оди напред и да го избришете овој ред и ние ќе се замаглат ова надвор во видео подоцна па ние немаме целата интернет ме СМСи, а ние сега ќе одат до прелистувачот и ќе одиме во текот на предавање и ние ќе тип во различни број тука, се регистрираат, успех. Па сега, мојот број е веројатно во базата на податоци, и сега на забавата дел. Ајде да всушност го користите PHP да се направи нешто програмски, или од командната линија или од друго место, и сега за сега јас сум само ќе биде едноставно а јас ќе одам да си во мојата Директориум тука и го направите следново. Gedit скрипта да речеме, ние ќе го нарекуваат текст, #! / корисник / bin / env PHP, како што видовме последен пат. PHP. Сега ќе одам да се бара вклучува config.php, иако ова моќ предизвика мала грешка. И сега ќе одам да се оди напред и да се каже редови, пребарување, изберете ѕвезда од корисниците, а сега тука јас ќе одам да направите техника од минатиот пат за секој редови како ред. И јас одам да се направи нешто едноставно. Printf да речеме име е ова, и број е ова, обратна коса црта n. И сега ќе одам да помине во ред цитирам unquote име, и ред цитат unquote број и сега ајде да одиме напред и мојот терминален прозорец chmod + x ова да се направи оваа скрипта наречена текст извршна. И сега ајде да се кандидира текст. Добро, така напредува. Па јас сега напишано командната линија скрипта, на јазик наречен PHP, кои, поради кои се бара согласност, има пристап до сите оние конфигурација константи што е одреден. Името на базата на податоци и така натаму. Всушност, само за да биде јасно дека ова не е среќа, дозволете ми да оди напред и да се регистрирате, навистина брзо, некој друг како Роб и ќе му даде 555-1212 број. И сега, ако јас се кандидира на сценариото повторно, се забележи на власта на она што го правиме со базата на податоци. Сега сум веднаш се гледа она што други два реда се во мојата база на податоци. Па сега ајде да се обидеме да се направи нешто дури и познавач внатрешноста на, и ова е дел ние сме не се тестирани во однапред, па последен пат го направив ова работите отиде ужасно криво, имаме видео за таа цел. Всушност, да, смешно настрана. Значи последен пат, во предавање како пред две години, решивме, решив, да биде сето ова ќе биде одлична идеја да се генерираат динамички пораки во класа, со користење на целата база на податоци CS50 студентите, кои ни ги даде своите броеви и нивниот мобилен телефон превозници кои вие може да се сети од pset0, како да се причина, што се испоставува Имав мали грешки во мојата програма и направив неколку грешки во 2012 година, си мислам. При што, еден имав за јамка дека направија токму овој вид на работа, процесирањето над базата на податоци, добивање на име од базата на податоци, име од базата на податоци, а потоа и на секој повторување на таа јамка Пратив е-маил. Но, наместо испраќање на еден е-мејл, јас испрати еден е-мејл прв повторување, и две пораки втор повторување, испрати три пораки втор повторување, кои како што може да се сети од нашите дискусија за асимптотска нотација овој голем О лоши, како n квадрат е колку многу пораки пратив, но тоа не беше дури и пораки тоа беше текстуални пораки. И како што знаете, присуство не е супер висока кон крајот на семестарот и така јас мислев дека ќе биде симпатична на време е да се каже, "Зошто не сте класа?" Во текстуална порака јас испрати на цела класа, и тоа беше смешно да се допаѓа 50% од класа, но останатите 50%, од кои некои исполнет надвор, јас испрати неверојатно апологетски слатка белешки за вработените се извинува за ја пропушти предавање само ова уште еднаш, нели? Така што би ужасно криво. Па во тој дух, да се обидеме ова повторно, но само со мојот број. Однапред, во functions.php, Јас го напишав овој функцијата тука. Таа се вика на текст, и тоа зема во три аргументи. Голем број, превозникот, и порака. Јас сум користење на префрлување изјава, која прекрасно PHP земе конците, а не само цели броеви, и јас не се имплементира сите поддршка за ова сеуште, Јас сум само направено на AT & T и Verizon. Затоа што се покажува дека со овие превозници тие имаат e-mail на SMS портали, при што може да се, всушност, испрати е-маил на адреса како телефонски број на vtext.com и ако корисникот не го блокираше пораките, тоа ќе оди преку е текстуална порака. Сега да го направите тоа, јас ќе одам да мора да се додаде едно поле навистина брзо во мојата база на податоци. Одам да одат во мојата структура, и јас сум ќе се оди напред и да додадете област на крајот на масата. Ајде да кликнете оди, и јас сум случува да се јавите оваа превозникот и сега за сега јас ќе одам да се оставам ова како еден бар текст, но можеме да бидеме познавач во иднина. Одам да брзо одат во мојата маса, и јас сум ќе се ослободи од Роб, затоа што тоа е лажен број, Одам да одат во уредување тука и јас сум ќе се смени мојот оператор рачно за да биде Verizon, која го е, и сега овде. Ајде да го направите брзо разумност проверка. Ајде да се отвори нашите текст скрипта, која изгледа вака, превозникот е% s. Ние сме прави многу повеќе грешки проверка отколку што го направив во 2012 година, превозникот. И сега, јас ќе одам да се оди напред и повторно стартување на скрипта. ОК. Превозникот е Веризон, што значи сега се надевам дека можам да го прават токму тоа. Правилно оваа година, се надевам дека, тука ќе одиме. Па во внатрешноста на оваа за телефонска линија, јас сум случува да имаат не само тоа printf, Јас сум исто така се случува да се јавите на текст и користењето на оваа функција се потсетиме беше тоа трае број, носач, и порака. Да видиме, бројот се случува да биде ред цитат unquote "број" ред цитат unquote "носител" а последниот беше пораката. Не зафркнам оваа година, точка-запирка. ОК. Прстите поминува. Ајде да видиме дали тоа функционира. Добро, така. Еве ќе одиме. Ајде да го отклучите телефонот, премине прстите, по ѓаволите. Недефиниран променлива may-- ох Чекај, чекај, чекај, вистински пост. Реал брзо, во реално брзо. Ова е целосно достоен за тоа. Дозволете ми да го дофати, дозволете ми да го дофати, УХ-О. Ви благодарам, текстовите имаат започната од некој друг. Дозволете ми да оди напред и да се отвори вистински брзо, dropbox.php / пошта тука. На мирување. Целосно достоен за тоа. Преземања. Добро, извор src8m. ОК. Треба уште една линија тука. Ох таму е, тоа е во Frosh ИСП, тоа е во регистарот на три. Ох здраво, Марго, ви благодарам многу. Добро, и јас бев недостасува оваа линија тука. Значи, дозволете ми брзо грабне оваа линија на кодот, која ги вклучува пошта или библиотека дека јас всушност сакате да го користите, Одам да брзо се врати во функции, Одам да одиме на врвот на оваа поднесе и бараат оваа датотека, како и, и сега ќе одам да навистина се премине мојот прста кога ќе се вратам во командната линија скрипта, која е во внатрешноста на локалните денес домаќин директориум. Стартувај текст. Enter. Пошта. На мирување. На мирување. Пошта. О, во ред. Еве ќе одиме. Пошта доби нова PHP писмото. Направив ова право? По ѓаволите. To-- Ах, чекај, чекај, чекај. Стојат од страна. Ветувам, ова е ќе биде толку вреди. Адреса. Ова е причината зошто јас не го прават примери право пред класа. Ugh. Следниве примателите не успеа. Ајде да се обидеме едно последно нешто. SMTP поставени од, да додадете адреса, адресата е навистина тоа. Ајде да се обидеме овој последниот дел во адресата. AW, јас сум навистина тажно моментов. Ви благодарам. Но, јас навистина го цениме сите текстовите сте биле испраќање. Имаш овој Давид. Ти си го дува. Ајде да го оставиме таму и ние ќе се поправи во понеделникот. Се гледаме тогаш. DAVEN Farnham: И сега Длабоко Мисли од Daven Farnham. Ако бинарен дрво паѓа во шума и никој не е околу да Ц it-- [смееш].