>> [Музички]
>> Дејвид Џ MALAN: Во ред.
Ова е CS50.
Ова е почеток на осум недела.
И може да се потсетиме дека ние застанавте последен пат во потрага на нов јазик
заедно.
Всушност, еден кој е прилично лесен и тоа не е дури
програмски јазик.
Тоа е Селектирај јазик, кој ни овозможува всушност структура и да се направи веб-страници.
И вие, кога нешто друго во врска со this--
или наскоро ќе, ако веќе не сте.
Ние сме случува да се користи Каскадни Стилски листови, или CSS, која
е уште еден тип на јазик со својства и вредности
што се случува да ги споделите со нас работи како промена на бојата
и промена на позицијата и овие видови на измени.
Но, денес и натаму, ние почнуваме да се фокусира на повеќе моќни јазици,
вистински програмски јазици како PHP.
>> Па PHP е околу за некое време.
И како што ќе видите, тоа е наменета пред се
рано за вистински користат во веб развој
и всушност генерирање на веб страници.
Значи она што видови на карактеристики го прави јазик
треба со цел да се направи веб страници динамички со неа?
>> Со други зборови, ако сакате да се генерираат содржина dynamically-- како Фејсбук
Newsfeed, која постојано се менува, или инстант пораки кои се појавуваат од време
да time-- како што е клучна фигура на функционалност
ви треба во програмски јазик што ќе ви ги споделите со динамички
печати нови информации на екранот?
>> СТУДЕНТСКИ: законик.
Дејвид Џ MALAN: законик.
ОК.
Ние ќе се земе дека.
А малку попрецизен.
Мислам, ние може да го направи ова со C, искрено.
Тоа ќе биде болка во вратот.
But-- е оваа обврска?
>> СТУДЕНТСКИ: Да.
Променливи, можеби?
Дејвид Џ MALAN: варијабли.
Добро, сигурно.
Променливи сигурно може да ни помогне.
Па дури и нешто поедноставно.
Ние тоа го користат во првиот програма на првиот ден
кога ние всушност рече: "Здраво светот."
>> СТУДЕНТСКИ: Печати.
>> Дејвид Џ MALAN: Печати, нели?
Печатење, или printf во светот на C. Значи сето ова време,
имавме во нашата располагање language-- Ц,
во particular--, па дури и Нула, за тоа прашање што
може да се генерира низи на текст.
>> Па, ако HTML, како што видовме минатата недела, е само еден куп на низи на текст
иако со отворен загради и затворени загради и некој вид на рима
и причината зад неа, и тогаш ние би можеле навистина
започне генерирање веб страници или рачно ќе ги внесете во gedit
или во Microsoft Word, за тоа matter-- ние само треба уредувач на текст.
>> Или би можеле да се напише код, вашиот предлог
порано, кој ќе ги споделите со нас динамички генерира HTML,
и тоа е она што ние ќе за да почнете да го правите со PHP
и на крајот дури и со јазик наречен JavaScript,
е да се користи еден јазик да се генерираат друг.
И навистина, ова е она што на Фејсбук и многу, многу други сајтови
направите за да всушност динамички прикажување на нови информации за вас.
>> Значи, да почнеме со тоа this-- на криптичната потрага линија, но еден
тоа е всушност прилично моќна.
Досега, ние сме биле користење C, која е составена јазик.
И само еден брз recap-- Составувач јазик го има она што карактеристика?
Ти очигледно треба да се компајлира тоа, но она што значи тоа?
Да?
>> СТУДЕНТСКИ: Тоа треба да биде состави во машински код.
>> Дејвид Џ MALAN: Добро.
Тоа треба да се состави во машински код.
Така ќе се земе вашата изворниот код, кој е вид на англиски-како.
Вие конвертирате дека нешто пониско ниво,
кој е во крајна линија се нарекува објект code-- 0 и 1 е.
И тоа е оние 0 и 1 е дека процесорот, како и оние кои се направени од страна на Интел,
всушност се разбере.
>> Сега, PHP и Python и Ruby и JavaScript и гроздовете на други
јазици не се составени јазици, но се толкува јазици,
што значи дека можете само да ги напишеш и потоа не ги претвори во 0 и 1 е.
Ти наместо само да обезбеди, а не како влез на програмата на некој друг,
наречен преведувач.
И тоа лице Програмата е дизајнирана
да се разбере она што секој и секој симбол во Python или PHP
или Руби или било кој број на други јазици значи.
>> И така сите ние треба е нешто како ова.
Така, всушност, јас ќе одам да преминеш во апаратот
тука, само во било кој стариот прозорец, и ние сме
ќе се оди напред и отворен датотека со име, да речеме, здраво.
Сега претходно, би можел да се спаси ова дури и со наставката на датотеката,
но јас ќе одам да се направи нешто уште поедноставно тука.
Одам да се оди напред и да почне оваа датотека со овој криптичната синтакса.
Па "корисник, бин, env, за животна средина, PHP. "
>> Ова е едноставно една линија од код кој е ќе кажам мојот оперативен систем,
одат најдете во вашата локална животната средина што и да е,
каде и PHP is-- на interpreter-- и да оди напред и ја користат таа преведувач
да го протолкува на следниов код.
Сега, ова е вид на грда карактеристика на PHP.
Но, во овој јазик, било пат кога ќе се напише PHP код,
треба да имате една од овие грди PHP тагови одбележувањето на почетокот
на вашиот code-- <? php.
>> Но под тука, јас сега може да се направи нешто прилично едноставна, како printf здраво запирка
светот обратна коса црта n блиску понуда, блиску заграда.
А потоа само за добро мерка, јас одам
да се оди напред и блиски мојата PHP таг овде
така што сè изглед убаво убаво испечатени.
>> И штом ќе кликнете на Зачувај, gedit е доволно, всушност паметни
да се погледне во тоа што многу првата линија и се реализира, ох, сте пишување PHP код.
Дозволете ми да синтаксичко со боите
тука, така што таа се залага само малку повеќе.
Но сега јас ќе одам да се оди одредување на мојот терминален прозорец.
Јас ќе зумирате.
>> Оваа програма беше наречен "Здраво" па јас ќе одам да направите точка коса црта здраво,
но дозвола негираше.
И баш.
Ние всушност слушнале дека Пред нешто неколку недели
во контекст на Shellshock, еден од оние грешки.
>> Но забранет пристап видовме пред, можеби во различен контекст.
Дали некој се сети како може да поправи нешто
каде дозвола е одбиен како тоа?
Што е команда, најмалку?
>> СТУДЕНТСКИ: chmod.
Дејвид Џ MALAN: Да, chmod, за промена на начинот на датотека.
И ќе добиете сè повеќе и повеќе се користи за да овој следната недела со подоцнежно проблем
во собата.
Но, за сега, јас ќе одам да се промени на владата да не може да се чита,
туку да им даде на сите executeability привилегии, способноста
да ја извршите оваа датотека.
И јас одам да се додели дека во датотеката здраво.
>> Ако јас сега го прават точка коса црта здраво влезат, ќе види, всушност, мојата програма, здраво свет.
И она што чекор не јас јасно прескокнете заедно?
Составувањето.
Па јас само истрча оваа програма многу едноставно.
>> И излегува можете да го направите ова со многу синтакса потсетува на Ц.
Дозволете ми да одат во денешниот код, што го ставам во мојот vhost директориум
тука, за вистински причини ние ќе се врати на.
И јас одам да одат во, да речеме, условите 1.
>> И ќе видите тука, прво и основно, целиот куп на коментари.
Но, ова е, всушност, ре-креација во PHP
на програма што го правевме во недела еден вика услови 1.в
каде што целта во животот на оваа програма
очигледно е да се побара на корисникот за цел број
а потоа направи некои меки анализа на тоа што
ви каже дали тоа е позитивно или негативен или еднаква на нула.
И го обелоденам ова само затоа што, освен можеби еден мал детал,
тоа е не се разликува толку далеку од В.
>> Која е една карактеристика тука дека можеби скокнува
во тебе како малку различен?
Можеби две работи.
Да?
>> СТУДЕНТСКИ: долар знак n?
>> Дејвид Џ MALAN: Да.
Така знакот за долар n е присутен.
И доларот знаци, како Ќе видиме, се случува
да биде лек на почетокот на која било променлива во PHP.
Тоа е и добро и bad-- добро во дека тоа е вид на очигледни што е
променлива, лошо во тоа што е уште една работа што треба да напишеш.
И има една друга нешто што не се сосема
види, барем со овој правопис. Да?
>> СТУДЕНТСКИ: Readline.
>> Дејвид Џ MALAN: Readline.
Readline ние не го види, само по себе, во Ц, иако постои нешто
слични, но ние сме се користи getstring, и ова е неговиот колега.
Значи, ако јас одам во овој директориумот, која се случува да биде,
како што јас ќе објаснам малку во мојата vhost директориумот и мојот извор директориумот,
и јас одиме напред и да го направи точка коса црта conditions-- whoops-- точка коса црта
услови 1, ќе видите, повторно, исто issue-- дозвола негираше.
>> Значи, дозволете ми да зумирате и не chmod плус x на услови, точка коса црта услови.
Би сакал цел број, ве молам, 50.
И ние може да се игра оваа игра на целиот ден.
Тоа се случува да се однесуваат токму како што направи во една недела.
>> OK, па не сите што се разликува, освен не само што мал малку на синтакса,
но на врвот, јас повторно имаа оваа линија која
ми дозволи да се создаде нешто што изгледа како C програма наречена здраво,
наречен услови 1.
Но тоа не е 0 и оние Јас сум извршување директно.
Тоа е, наместо да работи ова преведувач чие име
се случува да биде идентична со јазик.
На програмата се нарекува PHP и мојот код под линијата од нив се донесени во него.
>> Можеме да направиме уште еден прилично едноставен пример потсетува на нешто
ние го сторивме пред неколку недели.
Повторно, ова е еден вид на произволни парче од код
дека очигледно не што кога ќе го стартувате?
Што е ова се случува да се печати, веројатно?
>> Значи на почетокот на линијата 16, тоа е случува да се каже x е сега 2, веројатно.
% D е иста како $ i за printf.
Па тогаш тоа е местење Рубикова коцка, дот, точка, точка, во согласност 17.
А потоа 18 се појавува линија да се јавите на функција на коцки.
И каде што е дефиниран коцки?
>> Па, тоа изгледа во линија 25, па тоа не е сите што се разликува.
Јас имам некои коментари погоре тоа, но во најголем дел,
тоа е прилично јасна пренесување или конверзија
од програмата C до верзија на PHP.
Но, сега постојат неколку разлики кои можеби треба да скокаат.
Што друго е различно за тоа како можете би можеле да ја напишам оваа иста програма во C?
>> СТУДЕНТСКИ: [нечујни].
>> Дејвид Џ MALAN: Има постои прототип до врвот.
Па PHP-- и искрено, многу модерни languages--
се многу попаметни и повеќе корисни од C компајлери во која можете
може да се стави во функција до тука, може да се стави во функција овде,
и преведувачот се случува да го направите корист на читање
целата датотека пред да одлучи дека некоја функција не постои.
Толку убаво подобрувања години подоцна.
Но, таму е исто така нешто друго различно или отсутен тука.
Да?
>> СТУДЕНТСКИ: [нечујни].
Дејвид Џ MALAN: Ние не треба да се прогласи типови на променливи,
па ќе видиме пред долго време дека постојат различни видови во PHP,
но вие не треба да ги определи, кој исто така е и добро и лошо.
И има една друга работа што недостасува.
>> СТУДЕНТСКИ: Нема библиотеки.
>> Дејвид Џ MALAN: Нема библиотеки.
Добро, па тоа е убаво.
Да добиеме многу повеќе надвор од кутијата.
Па таму е всушност многу повеќе работи отколку што мислев се различни.
Како за начинот на грбот?
Што е тоа?
Велат дека тоа уште еднаш?
>> СТУДЕНТСКИ: Покажувач.
>> Дејвид Џ MALAN: Не совети.
Добро, барем во овој пример, бр.
Тоа е фер.
Па не постојат совети во PHP, всушност, воопшто.
Постојат нешто што се нарекува референци, но ние нема да потрошите многу време таму.
И што друго?
>> СТУДЕНТСКИ: Главни.
Дејвид Џ MALAN: Главни.
Значи ова беше biggie Јас мислев на.
Забележете нема главна влезна точка.
Вие едноставно почнете да пишувате вашиот код.
И ова е, всушност, ќе биде поволна
кога транзиција моментално да всушност користење
овој ист јазик за веб-базирани програмирање, за кои ние
не сакаат да имаат само една влезна точка.
Ние би сакале да имаат еден куп на Адреси, еден куп на различни датотеки
сите се во корисник влез и производство на излез.
>> Но, тука е многу ужасен на теренот пример што ветив последен пат,
имено, во оваа папка тука, грешките во правописот.
Значи во оваа датотека правопис, кој ние не ќе потроши премногу време на, постои
во суштина porting-- P-O-R-T. Тоа е само зборот даден кога, да речеме,
ќе се конвертира од еден јазик на друг рачно обично.
>> Ова е пренесување на PC верзија на правопис од PSET 5.
И јас во суштина се обиде да го конвертирате го линија по линија колку што можам.
Значи, ако ви се допаѓа овој вид на работа, тоа всушност е во вредност од некој момент
извлекувајќи ги двете до рамо до страна и види што е истиот
и она што е различно.
Но тие се прилично ебам слично.
Ако се сеќавате што правопис дури изгледаше како,
иако не сте мора да се промени оваа датотека,
тоа е прилично слични структурно со само неколку
на промени тука и таму.
>> Така што ова е само да се каже дека тоа е прилично лесно да ги конвертирате правопис
од C во PHP.
Но, речник, има нешто уште повеќе привлечни.
Дозволете ми да оди напред и да се создаде моето dictionary.php датотека.
Па малку различни во тој ние ќе го наречеме .php наместо .c.
Бидејќи ова е PHP фајл, јас do-- малку annoyingly-- имаат
да започнете на датотеката со на PHP таг како што.
И јас одам да се оди напред и да ги дефинира неколку функции.
Функција наречена чек, што е случува да се земе со еден збор како порано.
Но, овој аргумент е случува да имаат еден долар
потпише, бидејќи ние, повторно, со користење на PHP.
Друга функција од dictionary.c беше оптоварување
и го зеде во името на речник, па јас ќе добие таа функција подготвени да одите.
>> Уште еден во dictionary.c беше она?
Големина беше еден од најубавиот оние, во барем ако се чуваат некои променлива наоколу.
па големината едноставно мора да се врати на променлива.
И потоа се случи бриши.
>> Па имаше овие четири функции во проблемот поставени 5
дека е потребно да се спроведе со некои податоци структура или структури.
Па јас вети дека во PHP, можеме да се изјасни
хаш табелата, на пример, сето тоа полесно.
Всушност, ако сакам хаш табелата, Јас сум само ќе се оди како што
и таму е мојата хаш табелата.
И тоа е забелешка, ужасен на теренот, дека ние застанавте на минатиот пат.
И знаете што, ако сакав варијабла за големина, добро,
ова не е сè што се разликува од C,
но јас ќе одам да се оди напред и да го направите тоа.
И ќе забележите без тип на податоци.
И јас ќе се вратиш подоцна и всушност додадете некои коментари тука.
Но, она што за товар?
>> Ако знакот за долар речник е името на мојата датотека
и јас всушност сакате да се вчита зборовите во оваа табела сега,
Јас всушност може да го стори нешто прилично едноставна.
One-- и ова е minorly annoying-- во PHP,
што треба да се определи во на функција, ако
сакате да пристапите некои глобални променлива која е дефинирана надвор.
>> Но тоа не е особено Интересно, токму сега.
Што е поинтересно е тоа за секој изградба што ги спомнав минатиот пат.
И излегува дека PHP има функција наречен датотека, чија цел во животот
е да отворите датотека и да прочитате во сите нејзини линии во низа
и ги предаде назад кон.
>> Кој е да се каже што можам да направам речникот што сега ефективно кога ќе се јавам датотека,
тоа се случува да ме предаде назад низа на зборови од датотека.
Тоа не е на сите дека добрите.
Тоа е се уште ќе биде во линија на зборови, нешто линеарна.
Но, можам да оди напред и да iterate над секоја од овие зборови користење
дека синтакса видовме накусо последен пат.
И ќе го видам повеќе во наредниот PSET.
>> Но сега имам еден циклус процесирањето над секој збор во речникот.
И на секој повторување, да се потсетиме Јас сум повикување на тековниот збор "збор".
И сето тоа се случува да се земе да се стави зборот во речникот е
ќе биде зборот погоди "вистина".
Тоа е мојот вметнете функција.
Тоа е мојот оптоварување функција за мојот речник.
Сега е малку измамник, бидејќи, знаеш што, таму е всушност
обратна коса црта n на крајот на зборови дека јас веројатно ќе треба да се ослободи од,
но тоа не е проблем затоа што PHP има функција наречена сека кои буквално
рифови исклучи еден карактер на самиот крај.
Па нема проблем таму.
Ние нема напред и, всушност, скратена дека само ова.
И сега јас веројатно ќе треба да ги пратите на големината, па ајде барем не this--
големина ++.
Можам да го направите тоа како порано.
И тогаш ова е веројатно нема да работат само парична казна, така што се вратиме вистина.
Направи.
PSET 5.
>> [Смеа]
>> Дејвид Џ MALAN: Добро.
Ние ќе го направи тоа повторно со следниот PSET, исто така.
Значи она што за големината?
Па, ова се надевам дека е околу како што би очекувале последен пат,
иако јас треба да направите овој глупав глобалната работа.
Тоа е само еден артефакт од дизајн на јазикот.
>> Но проверете е малку поинтересна.
Значи, ако јас помина во долар потпише збор, јас прв пат
сакате да имаат пристап до дека глобалната променлива маса.
И сега ако сакам да провери ако зборот е таму,
Јас едноставно може да се каже дали е вистина дека Следниве е поставена во табелата,
па ќе одиме напред и да се врати вистина; друго, return false.
Направи.
Другата половина од PSET 5.
>> Сите права, па уште еднаш, јас сум сечење неколку агли.
Во праведноста, јас треба веројатно поминат уште неколку секунди
на оваа имплементација.
И јас веројатно не треба да се потсмеваат на сите часа ќе се стави на PSET толку многу.
Па strtolower е во функција.
Нешто слично егзистенцијалист во C, барем за карактери,
но PHP доби цела низа верзија.
>> Тоа ќе го присили што во мали букви, а некои од вас
би можело да се направи за да canonicalize што сте биле ставање во вашиот речник.
И сега можете да го направите ова во C, исто така.
Ова нема никаква врска со PHP.
>> Но, секој пат кога ќе треба Булова состојба,
како нешто на линија 10 таму, што е само
ќе се оцени да е точно или лажни, и вашата ако друго јасно
се враќа точно или неточно, можев едноставно навистина го прават овој посекси
и само се направи нешто како ова.
Така што не ми е проверка функција.
Право, ако Булова враќа точно или неточно,
ајде да го врати веднаш.
>> И има неколку други измени Јас може да се направи тука и таму.
Load-- бриши, патем, тоа е направено.
Ништо да се направи таму.
Од сите на меморија во PHP и многу други јазици
е, всушност, успеа за вас.
Значи додека во Ц, како што сте научиле болно,
нешто што Примерок или calloc или realloc, ќе мора да се ослободи.
Нешто што fopen, ќе мора да запишам, така што средствата се конечно ослободен
и алатки како Valgrind не забележи и не се жалат,
која е добра работа да се кандидира на нив.
>> Но сигурно, мора да има некои фати, нели?
Инаку, ние вид на залудно потрошени целиот куп на недели.
Така што било кој број на причини Затоа ние вид на искористам оваа траекторија,
но постои трампа.
Право, ова е тематски.
>> Па што би можеле трампа тука се движи од Ц во PHP?
Се чувствува како сите победи досега, освен малку грдоста тука или таму.
Да.
Што е тоа?
>> СТУДЕНТСКИ: [нечујни] меморија.
Дејвид Џ MALAN: брзина.
ОК.
Па, мојата брзина беше прилично брзо.
Нели?
Но брзината на извршување на програмата?
Добро, така што е фер точка.
>> Па како тоа ќе се случи, јас однапред наместени до двете ми обид решение, еден
Имав на големиот одбор беше да се проба-базирани решенија,
и имам дека во овој директориум тука.
Па јас во еден момент, можам да одам напред и ја извршите оваа на Кралот Џејмс Библијата,
притискање на Enter.
И тоа е се надевам дека правилно спроведувањето на крајот,
ми дава време во вкупно на 0,38 секунди за тоа
еден донекаде произволна пример.
>> И ако јас сега одат во овој Вториот терминален прозорец
тука каде што првпат беше отворен gedit, да ми се оди во денешниот code-- кои, повторно,
е во овој директориум here-- и дозволете ми да оди напред и да ја стартувате правопис.
Па само да бидат јасни, ова е верзија на PHP.
Јас сум само покажува на врвот на тоа тука.
>> Значи, ако јас се направи правопис на тилда CS50 PSET 5 текстови, кралот Џејмс, влезе.
Тоа е уште побрзо отколку пишување тоа во C, но вкупното време
е, известување, 0,93, додека мојата Ц-базирана имплементација беше 0,38.
Така, тоа е не-тривијални разлика.
>> И ова е само на една датотека.
Ако сте биле да се кандидира на две програми наспроти големите одбор
и имаат целиот куп на влезови тестирани, ова сигурно ќе се додаде.
И дали сме се дури и поголеми сетови на податоци, ова, исто така, ќе додаде уште повеќе.
Така да, да плаќаат некои цена на брзина е навистина така.
Што друго?
Да?
>> СТУДЕНТСКИ: Износ на RAM меморија употреба.
>> Дејвид Џ MALAN: Износ на RAM меморија употреба.
Па јас не даде една секунда мисла кога го пишувам овој PHP
верзија за тоа како многу меморија бев користите.
Јас сум целосно одложување дека во PHP себе и кој напиша дека програмата.
И дека може да биде во ред, но ако јас всушност навистина
се грижат за стегајќи колку перформанси од мојата програма или надвор од мојот веб-сајт
или надвор од она што алатка Градам, можеби
PHP, навистина, не е вистинскиот јазик.
>> И всушност, тоа е причината зошто, за На пример, многу веб servers--
вистински програми кои сервираат веб content--
не се напишани во PHP или во Пајтон или Руби.
Тие се напишани, како сега ќе се прави со PSEt 6,
во C, така што ќе може да се притисне секој малку на перформанси од него
и навистина се вежба фино зрно контрола над она што е
случува под хауба и не само да го земе
здраво за готово некои повисоки податоци на ниво на структура.
>> Сметаат дека, по сите, кој во PHP спроведува
дека идејата за хаш table-- тоа е, всушност, повеќе
правилно се нарекува асоцијативна array-- Дали тој или таа имаат било каква идеја каков вид
на влезови ви се случува да биде пуштање во структурата?
Значи очигледно не е, нели?
Тоа е генерички алатка во раководство што е
предвидени за секој кој сака да го користат, и така сигурно тоа
не може да биде оптимизирана на крајот за што точно сакате да направите.
>> Па трговски offs-- развој време можеби се разликуваат, перформанси може да се разликуваат,
сложеноста или употребата на меморијата може да се разликуваат.
И така што ќе најдете повеќе е дека има
случува да се биде различен алатки за трговија.
А всушност за супер мнозинство на конечна проекти на луѓето во оваа класа,
верувале или не, Ц не се случува да биде вистинскиот јазик да го користите.
>> И всушност, еден од takeaways на крајот за која било класа вака
е да се мислиш за, добро, она што треба да отсвират
полицата кога сакате за решавање на некој проблем.
И навистина, ние ќе премине овој мост дури и повеќе како што изгледаат на повеќе јазици
дури и надвор денес.
>> Па ајде транзиција сега да можеби повеќе запознаени контекст
за користење на јазик како PHP.
Тоа е малку заеднички да се користи во на командната линија, пишување скрипти
како што го направив, но тоа е многу, многу повеќе заеднички.
И тоа беше наменета да се користи во форма на датотеки кои обично завршуваат
во .php-- но тоа е не prerequisite--
кои се генерираат веб содржина.
>> Значи, дозволете ми да оди напред и да се отвори неколку примери јас подготвени однапред.
И тие се всушност вид на вистинско приказни во кои една од првите работи
Јас некогаш си направи по завршувањето на CS50, а можеби и, мислам,
Пред CS51 години е мојот цимер и јас се помага
да се кандидира на Новак интрамурална спортски програма, која, во тоа време,
го Новак регистрирате за различни спортски со пополнување на парче хартија,
како што беше наречена, одење низ дворот на Wigglesworth,
и паѓајќи во некои капка врата Проктор е.
И тогаш тој или таа ќе оди преку нив, а потоа всушност ни е-мејл рачно
дека се регистрирани за некои спорт.
>> Па јасно, можност за подобрување.
Овие денови, може да се сврти кон само Гугл форми, но во тоа време,
моравме да всушност достигне for-- ова не беше дури и дека долго ago-- достигне
за програмирање јазик кој не е PHP.
Во тоа време, тоа беше нешто што се нарекува perl,
кој излезе од мода, бидејќи.
Но, идејата е иста.
>> И јас во суштина седна да се обиде во пристаништето оди Perl верзии на PHP,
но во целосна одрекување, не даде каква било помисла на естетика само уште.
Па овде е веб-страница.
Ова е податотека.
Ако јас зумирате, нејзините очигледно наречен froshim0.php
само затоа што е нашата прва пример во оваа серија.
И ќе забележите дека има она што се појавува да се биде многу грда HTML форма,
но формата е интересно бидејќи тоа им овозможува
мене да се обезбеди корисник влез на прелистувачот.
>> Сега последен пат кога имавме форма, за да се Кому ја поднесуваме нашата параметар,
редот параметар како што беше наречена?
Па на Google, нели?
Ние целосно punted на идејата за прави ништо со што влез.
>> Но, денес, ние почнуваме производство на излез.
И однесувањето Одам да се види тука на почетокот е прилично тривијална.
Дејвид, јас ќе се провери надвор родова тука, велат Метјуз тука.
Јас нема да биде капитен.
Одам да кликнете на Register.
И ќе забележите дека URL има промени да се регистрирате-0.php,
А потоа, тука е оваа грда текст тука.
Дадов не помислуваат форматирање на ова.
>> Но, она што е интересно е дека три вредности беа очигледно помина во.
Ова е PHP е вид на еквивалентно на printf--
ќе видиме што тоа е навистина наречен во bit-- дека само отпечатоци од
она што го помина во неа.
Значи ова укажува на тоа дека таа форма имаше најмалку три полиња на него,
а ти ме виде пишувате во.
Една од нив беше моето име, еден беше пол, еден беше дом.
И капитенот дури и не се испрати на на серверот, бидејќи јас не го провериш.
>> Значи ова е да се каже, очигледно, кога ќе ја поднесете работи на интернет,
не само што ја URL адресата понекогаш change-- понекогаш тоа не го прави.
Всушност, името на датотеката се промени, но она што е отсутен од URL-то
дека ние сме виделе последен пат со Google.
Да?
>> СТУДЕНТСКИ: Не барањето
>> Дејвид Џ MALAN: Нема барањето.
Нема прашалник нешто.
Нема прашалник н е еднаква на мачки, како што направивме последен пат.
И таму е, секако, нема прашалник име е еднаква на
Дејвид или dorm еднаква Метјуз, па каде е тоа што сите се случува?
>> Па, дозволете ми да се врати во gedit тука и ќе отвори прв од оние датотеки
во мојот vhost, локалниот компјутер, јавни Директориум тука и да одат во froshim0.
Значи излегува дека речиси сите на оваа страница е само HTML.
И ова може да биде непознато за вас, но тоа наскоро ќе биде повеќе, па со PSET 6
и PSET 7 и PSET 8.
Но, ова е само една HTML страница.
>> И интересни нешта се чини дека е овде.
Една форма таг чија акција атрибут има вредност од регистарот 0.
Тоа е причината зошто, кога ќе го поднесе ова, таа оди на таа датотека.
Но методот е различен today-- пост.
Значи излегува дека е најмалку два методи на веб се користи
да се испрати информации од прелистувачот на серверот.
Земете го става во URL-то.
Пост го става на друго место.
И кога и зошто може да ви всушност сакаат веб-сајт
да ги користат пост тогаш наместо на се, само интуитивно?
Било која веб страница.
Каков вид на податоци треба да се донесе само од страна на инференција сега преку пост што е спротивно
да се добие, ако ние сме виделе двете разлики?
СТУДЕНТСКИ: [нечујни] обезбеди.
Дејвид Џ MALAN: Ако сакате нешто да се биде безбеден.
Па можеби ќе напишете лозинка во веб-сајт, кредитна картичка
во веб-сајт ќе вид на овие неоптимална
ако на прелистувачот стави тоа вредност внатрешноста на URL-то.
Зошто?
Можете да ги види, што не се чини дека се толку голем договор,
но шансите се прилично често одам далеку од вашиот компјутер или употреба компјутер
лаборатории, и така некој друго, па дури и цимер
може лесно да одиме и да видиме дека приватните информации.
Кога ќе испрати е-маил преку интернет, веројатно
не сакаат дека податоците крај во URL-то, како и.
И така има било кој број на причини Затоа ние можеби ќе сакате да го стави тука.
Дури и photos-- право, не можам сосема замислите како ќе се земе графички,
како JPEG, и го стави во URL-то.
Вие би можеле да го направи тоа.
Има начини на кодирање тоа, но тоа е само не е лесно како што.
>> Значи се регистрирате 0 е всушност многу underwhelming.
Вели дека сето тоа буквално е ова.
Тоа отпечатоци од внатрешноста на некои HTML тагови следново.
Јас имам PHP таг тука вгнездени во внатрешноста на пред таг.
"Пред" само значи пред-форматиран текст, моно-интервал, како на машина за пишување.
>> Printr е печати рекурзивен функција.
А потоа, тука е ова интересна работа тука.
А ние ќе се вратам на оваа затоа што има други,
но знакот за долар црта пост се чини дека е
променлива во PHP во која ништо ви испрати од прелистувачот на серверот
добива чуваат за вас.
И ќе видиме како да се добие на тие информации пред долго.
>> Но прво, да се вратиме на малку поинаков пример.
Одење во register-- или а, froshims1.php,
кој изгледа малку различен.
Зедов малку повеќе напор со форматирање,
иако тоа е сè уште прилично грда.
Но јас ќе одам да се оди напред и внесете "Давид" сега.
Машки.
Ние ќе се провери "капетан" тоа време.
Ние ќе се Метјуз.
И да се регистрирате.
>> И овој пат го кажува, хм, навистина не.
Добро, па што е регистрираат 1?
Дозволете ми да одат во отворен Регистрирај 1 and-- хм.
Добро, така што ова е интересно, а тоа
е отскочна штица сега кон повеќе интересни програми.
>> Обрнете внимание на врвот од оваа датотека има PHP таг како и некои коментари.
И овие се, сега за сега, одвраќање па да се ослободи од оние коментари
исто како и тие се во C. И тврдам со ова парче од код со коментар
дека овој код е оценување на поднесување.
>> Па, излегува дека варијабли како знакот за долар
подвлечено пост се наречен супер глобални.
Тие се како овие специјални глобални променливи
дека се само omni-во моментов на располагање во рамките на својата програма.
И можете да го користите квадратни загради нотација да индексира во не ги користи броеви
како 0, 1, 2, 3, но вистинските зборови.
>> Па можете да мислам на знакот за долар подвлечено пост како еден вид на хаш табелата
дека може да помине на клучот во, на пребарување збор во-помеѓу загради,
и тоа се случува да ви даде вратам на вредност, која на корисникот всушност се предвидени.
PHP има функција наречен празен дека само
вели да или не, ова променлива е празна или не.
Имаме овие двојно барови, што само значи или, како во В.
>> Така што во сила, оваа линија 4 е само велејќи дека ако корисникот не даде име
или не даде пол или не даде дом, оди напред и да се пренасочи него
или неа преку оваа линија тука.
Значи ова е малку криптичната, но тоа само значи буквално
се врати на оваа локација, па тоа punts на корисникот
назад кон каде тој или таа дојде од.
Но, тоа е малку без вкус во што е тешко кодирана.
>> Но, што ако ова ако состојба не се оцени да е вистина?
Што ако корисникот не ми даде својот или нејзиното име и студентски дом и пол?
Дека ако состојбата не е ќе се оцени на true,
па јас не се погоди излез од алинеја 7.
Значи она што се случува?
И тоа е она што е интересни за PHP.
>> Можете да капка во и надвор на PHP на владата, така да се каже.
Ако сакате некои код да се изврши, можете да отворите и затворите PHP таг
и го стави код таму како што го направив тука.
Веднаш штом ќе се затвори на PHP таг, серверот
е само ќе плукаат она што ќе го стави таму.
И навистина, ова беше дел од на оригиналниот дизајн на PHP,
за подобро за полошо, беше ова commingling на кодот и за Селектирај
јазик.
И ние ќе видите дека ова многу брзо devolves во хаос.
И така ние ќе го направи подобро од ова во крајна линија, туку само
забележи од леснотијата со која јас сум во можност да се изврши некоја логика.
>> Но сепак малку underwhelming.
Ајде да се отвори верзија две од Frosh ИСП, кои
очигледно доставува до register2.php.
Значи оваа датотека е всушност се случува да се погледне скоро исти.
Одам да се оди на Frosh инстант пораки 2.
Но, во Frosh инстант пораки 2, ајде да видиме што се случува.
>> Давид, кликнете на копчето за радио, како се вика; Метјуз, без капетан.
Регистрирај се.
Сте се регистрирале.
Не, навистина.
О чека, ние само го направи дека пример, не ние?
Сите права, стојат од страна.
Ние ќе направиме три.
Јасно нешто е за да се случи со Gmail.
Ќе одам таму.
>> Па Frosh инстант пораки 3 изгледа вака.
Не се разликува.
Но, кога ќе го направите Дејвид, машки, Метјуз и регистрираат, оваа трета и последна верзија
тврдења, доста едноставно, се регистрирани навистина.
Тоа е вид на нематеријална.
Но тврдам со овој третата и последна верзија
Имам сега пресоздава точно она што ми цимер и јас го изградивме за Frosh инстант пораки
Пред програмата години.
И тоа беше едноставно.
Немаше база на податоци, нема Excel табела.
Но, уште поважно, нема повеќе на хартија
бидејќи она што го правевме со оваа програма беше да се, всушност, е-маил на Проктор, кои
претходно беше добивањето овие работи преку форми.
>> И очигледно ние сме програмирани ова на таков начин што кога некој регистрира,
Сметка пораки Џон Харвард на proctor-- или себе, во овој случај,
Џон Harvard-- со следниве text-- "Овој човек само регистрирани."
Име е Давид, капетанот не е празно; пол, машки; и студентски дом, Метјуз.
>> Значи она што се случило таму?
Па, на датотеката во прашање очигледно е register3.php.
И ако ја отворите оваа, ќе видите и моќта на кодот како овој
и, исто така, искрено, несигурноста на системот како е-мејл.
Имам само ефикасно се преправал дека ги биде Џон Харвард во следниот начин.
>> Имам отворен PHP таг до врвот, кои само вели тука доаѓа некои PHP код.
Овде долу, се врти таму се библиотеки во PHP.
Вие само не треба да се вклучуваат заглавието додадени фајлови колку.
Можете да добиете повеќе со кујна со мијалник, така да се каже.
>> Но овој пат во алинеја 4, јас не сакате да посебна библиотека наречена
PHP писмото, кое е нешто што може да се инсталира бесплатно во многу системи.
Овде сум оценување поднесување само
со проверка се даде на корисник ми име, пол, и студентски дом.
И ако е така, повелете и показ за писмото.
>> Можете да мислам на тоа како да се биде линија на кодот кој само доделува.
Тоа е како Примерок, но тоа е малку посекси
со тоа што не се спомене само Примерок а некои генерички број.
Велиш да ми дадеш еден од овие, дај ми еден нов еден од нив.
>> И ако сте програмиран во Java или C ++ или други јазици,
што може да се види тоа.
Но помалку од тоа, ако непознат, оваа линија
става во знакот за долар пошта посебна struct наречен
објект кој има вградено во е-мејл функционалност.
И всушност, информации и слични синтакса.
>> Ова не е покажувач, сама по себе.
PHP само ја користи истата синтакса.
Оваа линија е велејќи употреба SMTP-- Едноставна пошта трансфер
Протоколот, кој е само на протокол се користи за испраќање пошта.
Ова е специфицирање на употреба Харвард SMTP сервер, која
е некаде тука на кампусот.
>> Ова е велејќи дека она што TCP бројот на портата за да се разговара,
и јас само сфатиле дека од страна на Googling или со поставување на помош на бирото.
А потоа, бидејќи Харвард користи некои системот за безбедност на пошта server--
барем да го криптирате сообраќајот меѓу вас и тоа,
иако секој може да се испрати на it-- Одам да го вклучите на TLS
за одржување на оваа безбедна.
>> Но, ова е местото каде што работи добие малку страшно.
Можам само произволно кажам дека сум jharvard,
и можам само произволно е-мејл мене тука.
А потоа можам да се определи предмет со оваа линија тука.
>> И тоа само изгледа грдо, но тоа е само еден куп на конкатенација.
Излегува PHP има супер корисни симбол, како некои јазици, операторот точка,
кои само буквално concatenates низа по низа по низа,
а вие не мора да Примерок или личност од вкупната должина на стрингот.
Вие само го направи тоа.
И навистина, бидејќи јас сум concatenating во сите овие работи со овие точки,
тоа е зошто го внесувачот на Е јас испрати изгледаше како го направив тоа.
>> А потоа на крај тука, јас сум праќање на електронска пошта.
Затоа, ако тоа е неточно, Јас сум само ќе умре,
која е функција која само отпечатоци на екранот некои порака за грешка.
Но, тоа е, всушност, повик за испраќање функција.
Инаку, ако сето ова не успее, тоа ме пренасочува назад тука.
>> И зошто гледам дека Јас сум регистриран навистина?
Па, што се случи овде.
Па јас донесе оваа за неколку причини.
>> Еден, ова е токму онака како ако се изгради некои веб-сајт за завршен проект
или за реалниот свет, ова е како ви испрати е-мејл потсетници
до вашите клиенти или вашите претплатници.
Ова е како ќе испрати лозинката потсетници.
Ова е како да испрати луѓе пораки дека тие имаат нова Фејсбук
порака во тек или нешто слично.
>> Но, тоа, исто така, зборува за фактот дека тоа може да
биле многу добро од Davin или некој друг.
И јас се каже овој вид на со насмевка, бидејќи јас сум
сосема сигурни што се случува преку неколку од вашите мисли во овој момент.
Но, ова е една од оние направи како што велат, не како јас вид на работи,
бидејќи лесно е да се фалсификува пораки како оваа.
Но, како што може да се види или да прочитате во Кримсон,
на крајот тоа е, исто така, прилично тривијални за луѓето
да ги трага назад кон некои потекло.
И ме прашуваат некое време, можеби на CS50 ручек, како јас прв
се запознаа многу тесно речиси до ед одборот многу години
Пред кога дознав како интернет работел.
Така што во секој case-- малку по ед одбор не.
>> Значи во секој случај, постои куп супер глобални,
како што тие се нарекува тука, од кои една ние saw-- знакот за долар црта слики.
Има еден колега наречен ГЕТ, која е местото каде работи од URL-то
завршува оди.
И има еден куп на другите, too-- седница и сервер и куки.
Ние ќе се вратам во колаче некое друго време,
но седницата е вид на кул бидејќи во now-- до now--
сè што го направив со веб прелистувачот е вид на лице без државјанство, така да се каже.
Можам да кликнете наоколу, пристап додадени фајлови на серверот, нешто
се случува на екранот, но тогаш врската затвора.
На Internet Explorer или Firefox икона запира врти
а ти само да видиме што што содржи web страницата.
>> Па HTTP е без државјанство во таа еднаш тоа го прави смисла,
добива некои податоци, тоа е тоа.
Нема повеќе конекција, за разлика од Skype, за разлика од FaceTime, за разлика од Gchat, која
одржува константна конекција до серверот.
На веб е фундаментално исклучени, иако ние ќе
види пред долго колку ние може да се симулира работи
како што се Фејсбук разговор и Gchat, кои се одржи на illusion--
или, всушност, го прават одржување на постојана врска со користење на
повеќе модерната технологија.
>> Но, ако одам со, да речеме, counter.php, ова е уште еден едноставен пример,
како што ќе видиме, дека во моментов мисли Јас го посети местото нула време.
Но, ако јас едноставно вчитување на страната, некако знае бев овде.
Ако јас ја превчитате повторно, знае бев овде.
И повторно и повторно и повторно и повторно.
>> Значи има некои плус plussing случува, но најава
малку нешто се врти некогаш толку накратко до врвот и потоа прекинува,
па тоа не е како јас имаат постојана врска со мојот апарат.
Па, ако одам во counter.php, забележите како едноставна е.
Јас прв пат се јавите оваа специјална функција која ние наскоро ќе
започнете преземањето здраво за готово наречен сесија почеток.
Започне сесија.
>> И на седница отсега е само ќе биде кофата, како шопинг
количка во која може да се стави вредности и вид на доверба како програмер
дека тие се случува да се биде тука кога што корисникот доаѓа back-- втор
подоцна, еден час подоцна, па дури и една година подоцна, се додека тој или таа го прави не е јасно
нивните cookies, како што на крајот ќе видиме.
И сега јас само треба АКО состојба тука.
Па ако на следните клучни, наречен контра, се поставува внатре
на овој супер global-- овој хаш маса, ако will-- наречен сесија,
па ќе одиме напред и го имате на вредност од session-- тинк
на ова како шопинг cart-- и чувајте го
во привремена променлива наречена шанкот.
>> Инаку, ако таа вредност контра беше не е поставена во т.н. количката,
само да го иницијализира на 0.
И на крај, овде долу, одат и да го врати во шопинг коли или на сесија
вредноста на шалтер 1.
Значи излегува дека овој специјален сад here--
која, пак, е еден од овие поврзани низи, низа што ќе може да индексира
во зборови наместо numbers-- продолжи дури и по корисникот оди.
Повторно, јас ќе се вратиш на страницата сега.
Тоа е една минута или така.
Но се сеќава дека јас сум тука 19 пати пред тоа.
Ова е мојот 20. посета.
>> И така ова ќе биде клучен за извршување на било кој веб-сајт кој се сеќава
дека сте најавени, што ќе се стави нешто буквално во вашата шопинг кошничка
да се купи или дека имате некои број на пораки во тек.
Во секое време сакате да се се сетам на информации,
ќе видиме дека PHP, како неколку други јазици,
ни обезбедува со оваа илузија на државните иако, како што ќе видите во PSET 6,
како сте правење на HTTP барања од клиентот до серверот, тоа е тоа.
Откако ќе го добиете назад дека одговор, нема ништо повеќе
се враќаат од серверот стандардно.
Но ќе видиме како да се работи околу тоа.
>> Па сега, ајде да се обидеме да чистење ова до малку.
Видовме неколку различни примери таму.
О, и како настрана, за оние кои се запознаени или непознати,
од причина што Frosh инстант пораки пример отиде
од гледање навистина грдо да slightly-- добро,
уште ugly-- благо помалку грди иако сеуште грди
е затоа што ако се погледне на изворниот код овде
излегува дека имам оваа во самиот врв на датотеката.
>> Излегува дека bootstrap е еден од многуте слободно достапни библиотеки таму
дека не постојат за програмски јазици секогаш, но за CSS или го вклучите Javascript-
или HTML или било кој број на јазици.
>> И овие луѓе here-- првично излезе
на Twitter-- само треба целиот куп на стилови.
Тоа е масовен датотека тука дека некој напишал,
или некој напишал, со текот на времето дека одредува бои и форматирање
и какво ли не, така што можам вид позајмуваат своите синтакса
и не мора да дознаам како да се постават мојата форма.
Ова е, исто така, minified така што компјутерот може да
разбираат тоа, но не нужно човек.
Па тоа е само зошто стилизација има промени.
>> Но, ајде сега да го направи подобро во смисла на дизајн,
бидејќи ако остане долу овој пат премногу долго,
нашиот код се случува да добие неуредна и messier.
Значи, да се фокусира на овие примери овде.
Последен за денес.
>> Па овде е супер едноставен 1.0 верзија на веб-сајтот CS50 е.
Тој има само линкови до предавања и наставната програма,
и тоа е со користење дека неподреден список tag-- на UL таг кои што се користат последен пат.
И ако во Всушност, ако јас отвори Аватарот на страница код,
ќе видите дека ова е навистина, навистина едноставни HTML.
И всушност, иако ова е на PHP фајл под капакот на моторот,
тоа е сепак само плукање надвор само HTML за сега.
>> Значи, ако јас кликнете на предавања, ние гледаме тоа да се случи.
И ако јас кликнете на неделата нула, ние гледаме тоа.
И ако јас кликнете на Среда, гледаме ова.
И ова очигледно беше во PDF на слајдови од тој ден.
Сите што го направив е врската со сидро таг за да овој URL тука.
>> Така што ова е само да се каже ова е прилично едноставна верзија на веб CS50 е.
Ајде да видиме како е имплементиран.
Ако одам во mvc0 директориум, ќе видиме неколку датотеки.
Една од нив е README, па ако некои од ова е премногу брзо,
можете само да ѕиркаат наоколу повеќе лежерно подоцна.
И информации тука е index.php датотеката.
Излегува дека ако ти самиот, човекот,
не определи конечниот име во URL-то, на веб серверот обично
infers некои стандардното име за вас.
Индекс точка нешто генерално е стандардно.
>> Па тоа е причината зошто пред еден миг кога го посетив овој URL тука,
без името на датотеката, нема датотеки продолжување, нема период во URL-то.
Тоа само знаеше некако магично да се погледне за index.php.
Тоа е само конвенција.
Може да се нарече ништо.
>> Значи, ако јас сега одат во index.php, ќе видите
дека, indeed-- ајде се ослободи од коментари
тука, бидејќи има навистина ништо интересно да се it--
ова е само хард кодирани HTML.
Па тоа е во согласност, сепак, со моето тврдење
дека можете да смесвам HTML и PHP.
Нема вистински програмирање логика тука.
>> И други датотеки се прилично многу исто како неинтересни.
Тоа е само хард-кодирани една недела тука до недела еден м и недела еден W,
за понеделник и среда.
И тогаш да се отвори недела нула, забележам дека е речиси идентични.
>> И тоа е еден вид на клучни готова брза.
Забележите колку непотребни оваа.
Овие датотеки едвај се промени, а сепак јас влечат еден од овие copy / paste работни места
каде Зедов една file-- веројатно во недела zero-- го копирале
кога недела еден дојдоа околу, и tweaked неколку вредности.
Ние веројатно ќе треба да биде во можност да го направите подобро од ова.
>> Значи, да се вратиме до MVC и да си одат во верзија еден.
И ќе забележите имам неколку датотеки, затоа што она што
беше заеднички за сите оние датотеки само момент ago-- ако одам назад кон верзија 0,
да се вратиме во индекс, и само postulate--
еднаш бев се ослободи од comments-- она што дел од оваа страница
е веројатно во секој еден од моите датотеки?
Само да го довикувам.
Која линии се удвои веројатно во сите од овие страници?
Да?
>> СТУДЕНТСКИ: [нечујни].
>> Дејвид Џ MALAN: 1 до 9.
Да, апсолутно.
Од 1 до 9, со исклучок можеби 8 менува малку, бидејќи CS50
станува предавања или недела нула или нешто.
Но речиси идентични.
Значи сите овие работи е само вид на копирани и атипичен.
И има неколку други линии можам да мислам
на кои се најверојатно идентични низ сите датотеки.
>> СТУДЕНТСКИ: 12 и 13.
Дејвид Џ MALAN: Да.
Секако, 12, 13, и 14, најверојатно, само затоа што на интересни нешта
се случува на линии 11 и 10, па тоа ќе изгледа.
Значи, да се погледне во верзија 1, која се обидува да се подобри на ова.
Во верзија 1 на овој MVC example-- ние ќе објасни што MVC средства во moment--
ако одам во индекс, тој вид на изгледа малку збунувачки сега.
Тоа не е толку едноставно како порано.
>> Но, штом еднаш ќе почнете да Прочитајте го внимателно, тоа е
прилично јасна она што таа го прави.
Очигледно алинеја 1 и алинеја 8 се заменува
сите работи само identified-- иако само за добра мерка,
Јас заминав на ЕЛС постојат само во случај некои дена не имаат листа на работи.
И така треба е вид на како фунта се вклучат во В. копии и пасти
содржината ефикасно токму овде во оваа датотека.
>> Значи во header.php, како што би можеле да заклучиме од своето име,
ќе биде насловот на страницата.
Тоа е вид на сираче тука.
Таа има само на врвот на тоа, но нема повеќе содржина подолу.
>> И ако јас се погледне во подножјето меѓувреме, кој беше друга датотека mentioned--
ова ми е дури и помалку интересни, но повторно, тоа е заеднички да се.
Значи ова е подножјето.
Ова е насловот.
Ова е датотека која е се менува, па зошто да не
обидете се да се фактор надвор од заеднички со овие две линии тука?
>> Но, ние може да се исчисти овој до малку понатаму.
Одам да се оди напред и да отвори верзија двајца каде
ќе видиме дека има нова датотека, helpers.php.
Ќе видиме што е тоа во еден момент.
Ајде да одиме во индекс, како влезна точка како порано.
>> И сега забележите сум се бара helpers.php, не заглавието или подножјето.
Но помагачи е вид на како helpers.c и helpers.h од PSET 2
или PSET 3 одамна кога ќе всушност се бара и најде за таа PSET,
и сте имале сите ваши код за сортирање и пребарување во посебен фајл.
Тоа е она што се случува овде.
>> И сега алинеја 3 изгледа малку поинаква.
И тоа е само една линија.
Да се ​​направи ова, дури и повеќе јасен, можев само
не ова да биде стилски доследно и со сè друго што го направиле.
Но, тоа не е навистина промена на функционалноста.
Тоа е само една линија на недвижен код.
>> Очигледно, има функција некаде наречен даде насловот,
и ова е местото каде што работи се добие прилично моќна.
Забележи дека во внатрешноста на нејзината загради е она што другите парче синтакса?
Тоа е веројатно малку тешко да се каже, но забележите there's-- јас ќе се стави некои бел
простор.
Има квадратни загради.
>> И квадратни загради видовме пред малку во контекст на асоцијативни низи,
кои се, повторно, како хаш маси.
И ако мислите дека сега Ц, цел на аргументи во функција
има секогаш да биде ист.
Мора да се запамети она што нареди is-- x, y, z или z, y, x--
и треба да секогаш им се обезбеди во истиот редослед или да барате за нив
ако си заборавил.
>> Но, ова се чини дека е паметен начин на полагање на произволен клучните вредност
парови со што титулата е името на аргумент во овој случај
и CS50 е неговата вредност.
И фактот дека имам овие квадратни загради
тука значи дека можев исто така, поминуваат во нешто
како една недела е 1 или 0 или 2 или 3.
Значи ние сме параметрира оваа функција на таков начин
дека тоа може да потрае повеќе влезови, но сега за сега тоа е само еден.
>> Ако јас сега одат во helpers.php, се забележи она што таа го прави.
Ова е малку на нова функционалност,
но сега за сега само се на верба дека ова е
синтаксата со која можете дефинираме функција во PHP.
Вие буквално велат функција.
Не одредите враќање тип, и тоа е во согласност
со променлива детали порано каде што не навистина силно пишувате.
>> Ова само одредува дека, по дифолт, ова
зема асоцијативна низа како аргумент.
И знаете што?
Ако корисникот не поминува еден во, се претпостави стандардна вредност.
>> Ова е карактеристика која Ц не мора за нас, што е убаво, бидејќи сега
податоци, дури и ако не се дава ништо,
се случува да биде низа, но празен еден.
И како настрана, екстракт само не нешто фанки
каде што е потребно сите клучеви од овој асоцијативна низа, сите од работите
може да се стави во квадратни загради, и создава променливи од нив
така што можеме на крајот да имаат пристап на нив во footet.php и header.php.
Тоа е малку апстрактен, па да ми укаже ова.
>> Во index.php, забележуваат дека сум поминува во клучна вредност пар на титулата
со вредност од CS50.
Ако јас сега гледам helpers.php, забележите дека RenderHeader
е извлекување на податоците дека јас сум поминува во, а потоа се бара header.php.
Она што го направив е вид на лош имплементација сега од следниве.
>> Ако јас се отвори header.php, известување дека јас сум повеќе не е тешко
кодирани зборот CS50 во оваа хедер датотека.
Сум се стави ова значително atrociously именувана функција, HTML специјални знаци,
во таму.
Но, забележи она што го направив.
Имам отворен HTML.
Јас тогаш има отворени главата и отворен титула.
>> А потоа во внатрешноста на титулата е отворен и блиску тагови, имам малку PHP код.
И ова е убаво, но на синтакса, што само значи ехо надвор.
Тоа буквално значи this-- ехо на following--
но ова е посекси да пишувам.
Ехо надвор титулата тоа е се помина во.
>> Но, што мислите HTML специјален знак е за сите,
особено ако имате некои претходно HTML искуство?
Што карактери може да биде опасно да се помине во на страница
каде сте динамички генерира веб-страница со код, како тоа?
Дозволете ми да одат на оваа датотека, верзија две, и види дали јас не може да предизвика ова.
>> Верзија двете е тоа.
И ќе забележите што е е во ред, работи добро.
Но, претпоставувам дека оди во index.php и Јас утврдени дека насловот на мојата страница
не е CS50.
Таа е отворена заграда скрипта алармирање Здраво светот, во близина една понуда,
блиску заграда, запирка, отворена заграда, коса црта скрипта.
>> Сценариото, како што ќе на крајот да се види, е таг
дека можете да го користите да се користи на друг програмски јазик наречен
Го вклучите Javascript внатрешноста на веб-страница.
И сега забележите логиката тука.
Тука е клучот вика насловот.
Тука е тоа е лудо долг вредност сега.
>> Но, ако јас одам на помагачи page- или, поточно, насловот страница,
Апелирам оваа функција на таа титула во прв план.
Значи, ако јас сега вчитајте ја оваа страница, јас види овој, кој изгледа смешно,
но тоа е безбедно.
Тоа само изгледа глупаво.
>> Но, да претпоставиме, наместо Јас го заборавил ова.
И ознака на моите зборови, nonzero број од вас ќе заборават да го направите тоа
и ќе добиете некои прилежен студент или пријател доаѓа
за вас во фер CS50 или анонимно ноќе ѕиркаа наоколу на вашиот сајт
и во суштина инјектирање код непознат за вас во вашиот сајт
некако.
>> Затоа што ако јас едноставно плукаат од насловот тука и насловот
there-- добро, ако насловот буквално изгледа вака и PHP
како јазик што може да плукаат други јазици текст,
ова е буквално ќе да го замени овој таг со,
Се разбира, она што јас го стави на друго место.
>> Значи, ако јас сега оди тука и повторно по расипувајќи оние безбедносни механизми,
сега имам здраво свет тука.
Сега тоа не е сè е толку голема за се занимаваат, но може да се направи нешто
малку повеќе малициозен овде, како таму е
други tags-- како што ќе видиме откако ќе поминат повеќе време во JavaScript-- како локација
точка href добива, понуда, unquote, HTTP business.com, но и спротивно на тоа
од другиот ден.
И сега може да предизвикаат веб- страница да се, всушност, оди веднаш
на оваа веб страница овде.
>> А всушност, не сакам дури и да одат на business.com
бидејќи јас не сакам да се знае што е тоа.
Но, тоа, исто така, ќе предизвика код да се инјектира во оваа страница.
Така што ова е само да се каже дека иако ние сме за воведување супер почетокот на некои
од овие повеќе комплексни структури, сето тоа е кон крај на што си сигурен
дека вашиот код не е експлоатирачки.
>> Па сега трета верзија тука.
Станува малку познавач.
Јас навистина не like-- аналниот страна од мене
беше добивање малку караше со фактот дека имав функција наречена
RenderHeader и RenderFooter кои беа речиси идентични.
Па тоа се случи со мене, зошто да не го направите Јас parameterize овие функции
во само еден вика направат, го донесе вториот аргумент
како името на образецот, конечниот да render-- или заглавие или подножје?
А потоа може, ако сакам да помине во некои клучни вредност парови
како да направам за титулата за глава, но не и за подножјето,
Јас би можеле да го направите тоа.
>> Па сега ако одам во helpers.php, тоа е малку посложена.
И јас ќе се бранува моите раце на детали, но тоа е само една функција.
Значи тоа е чекор кон подобар дизајн.
>> Можеме да ја искористам оваа еден чекор понатаму.
Ако одам во мојата четврта верзија на ова, информации сега
дека јас сум прави нешто дури и повеќе вид на криптичната.
И знам дека ова е многу да се апсорбира одеднаш,
но ние сме само вид за чистење на работите.
Сега јас сум ставање мојата помагачи датотека во папка наречена
includes-- само произволна именува каде што сакате да се стави нешта
дека сакам да include-- и потоа го остатокот од овој е иста.
>> Но, ако гледам сега во gedit, известување дека сум добил ослободи
на сите оние други датотеки и јас сум се пресели нив, на пример, во тука.
А потоа во шаблони, Имам тука, исто така.
И така ова е за сите сега кон чекор на користење на многу подобро дизајн шема.
И ние сме многу брзо случува да се движат подалеку
од PHP е стандардно функционалност, што почнавме тука со,
каде што само смесвам PHP, и вашите HTML, и вашиот CSS,
а ти само да го плукаат и одите за вашиот начин.
Тоа не се случува да биде многу одржување.
Исто како и во C, почнавме користење повеќе датотеки и повеќе функции
и факторинг работи тоа.
Ние ќе го стори истото овде.
И всушност, во петтата и последна верзија тука, јас не една друга работа.
Можете дури да го користите точка точка, кои, повторно, е само главниот директориум.
Да биде дури и повеќе безбедност свесни, затоа што ако јас се погледне на слушање
тука за петтата и последна верзија, известување дека имам еден директориум тука се нарекува
јавноста, а потоа на исто ниво, така да се каже,
Јас имам вклучува и шаблони и тогаш тоа текстуална датотека Прочитај ме.
>> А причината што сум структурирани се допаѓа this-- и толку многу веб-
домаќини, особено на оние 5 $ месец оние или $ 10 месечно оние,
ако некогаш сте имале еден од овие services-- што толку многу од нив го прават
е дека тие очекуваат да шутнат сите на вашите датотеки во еден директориум,
како што правевме веќе со овој прв пример.
>> Но, веднаш штом ќе започне изградба на повеќе софистицирани веб-сајтови кои само се сместат
податоци што се грижат за и датотеки се грижат за, всушност, организирање на работите
правилно и со повеќе безбедност свест во умот може да
ние почнуваме да се брани против сите на пријатели
дека имате или во или надвор од оваа класа, кои,
веднаш штом ќе почнат да прават програми се на интернет,
се случува да започне подигање за вас и за нив.
>> И така ние ќе се погледне на крајот на овој дизајн.
Ова е само слика што го опишува следниве.
Ние сме случува да се стави сите наши програмирање логика во една или повеќе датотеки,
и ние ќе се само почеток повикувајќи оние контролери.
Тоа е каде што мозокот на нашата веб-сајтови навистина се.
Тогаш ние ќе треба да имаат ставови и погледи
се толку едноставно како што само одделни files-- наречен шаблони, често.
Тие само имаат естетиката на мојата страница,
она што сакам страницата да се погледне like-- боите и изгледот
и ставовите на сите променливи.
>> А потоа поинтересна дека ние на крајот ќе дојдеме до
е модел, кој се случува да биде само зборот ние шамар на други технологии
дека ние донесе во слика, како вистински бази на податоци,
така што кога ќе сакате за да ја зачувате информации,
не само да испрати е-маил на вашиот Проктор или за себе,
што всушност се чува во база на податоци користење на друг јазик познат како SQL.
И така ќе им го оставиме тука денес и собереш со оваа во средата
и да се воведе бази на податоци тогаш.
>> [Музички]