Даг LLOYD: Значи во нашата видео на PHP синтаксата, ние зборуваше многу за тоа како PHP може да се користи во командната линија да се кандидира програми, на начин што ние сме прилично запознаен со од В. Но, како што, исто така спомна во тоа видео, PHP првично беше развиена за да се спроведување на веб програмирање, веб-сајтови. И така во ова видео, ние сме одам да се зборува за тоа како ние го користите PHP во контекст на веб развој. Ние знаеме, веќе, од нашата видео на HTML, дека веб-сајтови се изградени од еден сет на HTML тагови кои го дефинираат семантички структурата на веб-страница. Но, веб-сајтови кои се изградени со чист HTML страдаат од многу, многу сериозно ограничување. И за да се илустрира ова ограничување, ајде да се разгледа на следниве. Па сега сакам да се изгради една веб страница дека, секогаш кога корисникот го посети, тоа ми дава моменталната време во Кембриџ, Масачусетс., прикажување на најновите минута. Ако јас го правев ова право сега, Јас може да се каже нешто како ова. Моменталното време во Cambridge-- па морам HTML тагови, главата тагови, наслов тагови, тело tags-- тековната време во Кембриџ е 14:08, печатење на воена време. Што се случува ако тоа е сега 02:09, 14:09? И досега, со HTML, имам да се движат во и измени го 14:09. А потоа една минута подоцна, Морам повторно да ја смените. А потоа една минута подоцна, Морам повторно да ја смените. И како што може да се замисли, тоа е Веројатно најлошата работа било кога. Сте вебмастерот за веб страница, и секоја минута, 24 часа на ден, што треба да се ажурира на тековното време од страна на рачно отворање time.html и менување само дека програмка на код за да се каже моменталното време во часови и минути. Тоа веројатно не многу добро користењето на нашите ресурси, човечки и пресметковни. Веб-сајтови, кои се сите HTML се сосема статични. Единствениот начин на кој можете да го ажурирате содржина, како што ние сме само гледа, е рачно да се отвори извор на оние датотеки, да ги уреди и да ги зачувате. И тогаш кога корисникот освежува страница, или посети страната за прв време, тие ќе добиете најновите содржини. Но само затоа што ние сме рачно да го промениле. Ако почнеме да се меша некои PHP во таму, нашиот код може да добие многу пофлексибилен. И ние може да имаат начин за нашите страници да биде динамичен, или да се ажурираат, без да се бара нашите кутри вебмастерот во претходниот пример да биде рачно ажурирање работи. Тие може да го направи тоа автоматски. Ние не треба да се интервенира. Ние може да се добијат некои спијат. Што е веројатно добра работа, ако правиш многу веб програмирање. Па во CS50 ИРО, ние се кандидира веб сервер наречен Апачи. Тоа е многу често се користат, софтвер со отворен код веб сервер систем. Овој систем има капацитет да се толкува PHP, кој се случува да биде корисно ако што сакате да направите било PHP програмирање. И во CS50 ИРО, имаме заповед да се направи ова е многу лесно да се направи, apache50 започне. И тогаш таа црта патека, да се црта, коса црта реж, тоа е само многу заеднички начин на што укажува на она што сте се наведени тука е пат кон одредена директориум дека сакате да биде коренот сајт, или коренот страница, или фолдерот од кој вашиот веб сервер ќе започне да се испита и да им служи на датотеки нив до клиентите, кои ги побара. Значи, да се појави во текот на CS50 IDE, само за да ти покажам, навистина брзо, како тоа функционира. Па тука во CS50 ИРО, јас сум во директориумот наречен недела нула Девет. И имам two-- имам извршила команда ЛС само погоре, за да ти докажам дека имам два директориуми овде, PHP, која е група на датотеки што се користат во PHP синтаксата видео, а потоа и на PHP веб-, која е група на датотеки што би сакале да ја користите во оваа видео. И јас би сакал да почнам веб сервер пример со содржината на PHP веб-папката како датотеки кои се сервира. Значи она што сум јас ќе направам? Се случува да напишеш apache50 простор почне, простор PHP, цртичка веб. Тоа е патот кон директориум од каде што во моментов сум. Јас тогаш притиснете Enter. Тоа се случува да се направи малку работи тука. А потоа тоа се случува да се каже, Apache започна успешно. Вашиот сајт е сега се достапни и at-- потоа, тука е URL-то за на сајт. Значи она што сум јас ќе направам? Одам да брзо да го копирате овој. А јас ќе одам да се отвори up-- и Ќе се оддалечите малку here-- Одам да се отвори ново јазиче во Хром. А јас ќе одам да ја посетите оваа адреса. Одам да притиснете Enter. Тоа се случува да се вчита. А јас ќе се оддалечите повторно. И може да се види тука е содржината на мојата PHP веб директориум. Па сега што е во основа се случува тука е, мојот пример на CS50 ИРО се наоѓа на издржување на овие датотеки на секој кој ги бара. И во текот на ова видео, ќе се најде решение за да ги разгледаме во еден куп од нив различни датотеки во контекст. За да ја тестирате дека вашиот Apache серверот е на работа, која е генерално се случува да биде случај во CS50 ИРО, но ако го направите ова поопшто, и ќе почнете да Градење на вашата веб сервери, таму е навистина заеднички вид на аналогно, "Здраво", тоа е обично искористени за PHP веб развој. Што е да се има на датотека која се состои од само оваа code-- PHP, раздвојувачот поставена со PHP инфо, загради, запирка помеѓу. Кој во основа е посебен PHP функција која ви кажува која верзија на PHP ќе се работи. Па во CS50 ИРО, имам кои се достапни само на датотеки да ви покаже што ова ќе изгледа. Па јас сум во потрага на индексот ми од мојот PHP пример. Мојата Апачи пример работи на содржината на PHP-Веб. И имам датотека тука наречен info.php. Одам да кликнете на неа, ја намалите. Тоа е она што ви се случува за да ја видите, доста. Ова е само да ми каже дека мојата Apache сервер работи. А тоа е, очигледно, верзија на PHP дека јас се кандидирам. Ова е мојот аналогна на "Здраво светот." Па знам дека работите се во функција. Значи ние сме добро да отидевме. Ние може да се продолжи од овде. Па ајде да го ревидираш таа пример пат бевме зборува за со нашите сиромашни вебмастерот кој мораше да се ажурира страницата постојано. Ова може да биде лек за тоа како Јас ќе се имплементираат работите така што на вебмастерот не Мора да се задржи ажурирање на време. Само што би вид на се случи автоматски. Подолу надолу, HTML, тоа е прилично слични, со еден исклучок. Но, тука имам некои PHP на врвот. Јас сум, очигледно, го нарече овој date_default_timezone_set функција. И ние не зборуваме за сите овие функции во CS50, затоа што се PHP е веројатно десетици илјади. Тоа може да биде малку на претерување, но тоа не може да биде. Тоа е мора многу функции изградена во. Па така ова е очигледно функција поставува мојата временска зона како САД / Источна, која е временската зона во која сум Во моментов во донесувањето на оваа видео. Јас тогаш се јавам во функција наречена, датум. И, очигледно, јас сум чување на Неговата нешто што се нарекува, време. Значи она што се случува овде? Па, во основа она што е се случува, јас сум правење на повик до одреден сервер кој ќе да ми кажете што во моментов е време. И јас сум со конвертирање на тоа во некој друг формат на часови, минути, секунди. И причина што тој е главниот град H е ова се случува да ми даде 24 часа на времето, не 12 час време, што ќе биде со мали букви ч. И јас сум само зачувување на таа во променлива наречена, време. Така што втора линија на PHP таму, на повик на функција, денес, е само добивање на некои стринг, што е случува да ми даде датум, а време, и еден куп други информации. И првиот аргумент таму, дека неговата, е само вадење на важен дел кои што се грижат за за овој пример, кој е на час, минута и секунда. Значи тоа е сите што се случува. Па јас ја запази дека во променливата $ време. А потоа и одредување на самото дно таму, јас имаат таа кратенка за печатење на тековното време. Па јас сум само ќе се печати дознаете што е на денешното време. Значи, да се погледнеме во овој CS50 ИРО и да видиме како ние сме сега заштеда дека вебмастерот многу проблеми. Добро, па еве ме повторно назад во root директориумот од моите Апачи пример. И имам датотека тука наречен time.php. Јас сум само ќе кликнете на тоа. А јас ќе се движите нагоре, бидејќи ние сме се zoomed во прилично далеку. Тековното време е 14:20:34. Па јас сум тоа го правам часа, минути и секунди. И можам да се освежи страница и добијте новото време. --41. Одам да се освежи страница и да добијат ново време, 44, 46, 47. Значи, јас очигледно не сум се менува ништо себе. Јас сум тука за да ја освежите страницата. Па не можам да се вратам таму да ја уредувате. И јас ви ветувам, јас не имате било какви конфедеративците кои се уредување на датотеката во мое лично име на страна. Јас сум само со користење дека PHP функцијата, време, за да ја генерира време за мене автоматски. Така што дури и ако сум спиел, и мојот веб серверот се извршува, корисникот кој го посетува таа страница е се уште ќе го добиете токму на денешното време. Значи тоа е прилично добар. Јас го направив мојот сајт повеќе динамичен со не премногу PHP код. Тоа беше само две линии на код и потоа малку на изјавата на печатење. И веќе имам многу повеќе динамичен сајт од тоа што го видовме првиот пример на почетокот на видео. Значи, да се потсетиме од видео на PHP синтаксата дека кога PHP преведувач тече нашата програма, тој го игнорира сето што не е во внатрешноста на Раздели PHP, тоа плукање. Во тој пример, она што на работа дека тоа е плукање беше HTML. И ова значи дека јас сега може да едитирате HTML и PHP заедно. Бидејќи преведувачот ќе само игнорира HTML и буквално ја излез. Што е добро, нели? Бидејќи веројатно, на крајот на денот, Сакам мојот сајт да се биде изграден на HTML. Така што било кој веб пребарувач може да ги интерпретира тоа, или да се разбере на HTML на страницата и тоа го направи како нешто што ние всушност, може да се разбере како луѓето. И јас да го користите само на PHP за делови од мојот сајт Потребен динамизам, кои бараат од мене да има работи кои се ажурира постојано. На статички информации може да остане иста. Добро, така што тоа е во ред. Но, зошто би го направил тоа? Зошто би се меша HTML и PHP? Јас само може да се печати од сите HTML, со помош на функцијата PHP за печатење. Зошто не можам тоа да го направам? Размисли за тоа за една секунда. Затоа, кога јас само може да се печати out-- јас би можеле да имаат линии на PHP што да кажам, печати HTML таг, главата за печатење. Зошто не можам тоа да го направам? Зошто сум мешање на PHP и HTML? Па, ако мислите за тоа за една секунда. PHP, толкувачот има за да го протолкува тоа што го гледа. И така тоа се случува да имаат да се изврши една линија код. Испечатите HTML. Испечатите отворена глава таг. Испечатите отворен наслов таг. Тоа се случува да треба да се изврши и интерпретираат дека секој чекор од патот. Зошто едноставно не ги споделите со преведувач само притајуваат работите што не го разбира и направете го тоа автоматски? Тоа се случува да ме спаси многу време за да се измеша мојот HTML и мојата PHP заедно. И така тоа е причината зошто ние не само има отворени PHP раздвојувачот а потоа само да се печати од целиот содржината на нашата страница како еден гигант на PHP повик на функција, печатење, и потоа блиску PHP раздвојувачот и сме подготвени. Па тоа е причината зошто ние ги измеша заедно. Досега не сме виделе премногу разлика од општите PHP синтаксата. Тоа е прилично јасна. Ние веќе видено на прашалник, еднакви. Видовме неколку нови функциски повици, но ништо не навистина фенси случува. Ајде можеби се направат работите малку познавач. Што ако сакаме да помине информации помеѓу различни PHP датотеки, така што можеби и корисникот може да достави информација до мене. И тогаш би можел да направи нешто со тоа на друга страница. Па PHP има поддршка за нешто што се нарекува Супер Глобал Променливи, што звучи прилично страшно. Тие се навистина само гигант асоцијативни низи која помогне во спроведувањето на овој функционалноста на минување информации помеѓу PHP датотеки што се што постои на нашиот веб сервер. Првиот од овие супер глобални се нарекува $ _GET. И тоа е веројатно наједноставно да се разбере. Што се случува со $ _GET? Па, во основа, на корисникот е случува да напишеш дополнителни информации на крајот од нашите адреси. И што и да напишеш, претпоставувајќи тоа е форматирана на одреден начин наречен низа за пребарување, што е само збир на клучни вредност парови одделени страна ampersands. Оние клучните вредност парови ќе биде се чуваат во $ _GET асоцијативна низа. И од нашата видео на PHP синтаксата, знаеме како да работат со асоцијативни низи веќе. Значи тука е пример за некои PHP, каде што можеби и јас сум извлекување на сите клучните вредност парови дека корисникот дадени во URL-то. Па имам Отвори PHP раздвојувачот. Имам foreach јамка. Јас сум во процесирањето низ Супер Глобалната низа наречен $ _GET. И сакам да се биде во можност да се однесуваат за двете клучни и вредност. И јас сум само ги печатење надвор, секој на очигледно свој став таг овде. Јас сум да ги отпечатите некои HTML и interpolating вредностите на клучот и вредност во таа изјава. Па ајде да ги погледнеме како оваа всушност, ќе работиме на нашата развојна средина. А можеби и ова ќе ви помогне илустрира малку на она што го добиваме е всушност прави. Па јас сум повторно тука во мојот веб корен. А јас ќе зумирање во малку да ви го покаже дека имам фајл наречен, get1.php. Па ајде да кликнете на get1.php. И јас не гледам било каква содржина. Тоа е чудно, нели? Па, не баш, всушност. Бидејќи јас не снабдување ништо во URL-то. Одам да get1.php, но јас не ги дадат сите клучните вредност парови како дел од мојот барањето. Па ајде да додадете стринг за пребарување и да видиме што може да направи оваа датотека. Да почнат да ви пребарување стринг само напишете прашалник. Тогаш можеби и јас ќе кажам име = Даг & година = 2015. А потоа ќе притиснете Enter. Сега се забележи она што се случува. Јас сум сеуште во get1.php. Но сега јас сум се испорачува клучните вредност парови, а јас сум печатење нив надвор на сопствените paragraph-- име, Doug-- година, 2015 година. Тоа е токму кодот ние само видов на слајд пред еден миг. И ако сакам да можеби додадете друг пар клучеви вредност, и класа = CS50. Сега имам уште една клучна вредност пар кој се отпечатени кога ќе се враќате повторно URL-то. Сега, можеби тоа не е форматирана страшно добро. Па имам уште една верзија на get.php. Тоа е get2.php. Разликата во овој еден е имам CSS датотека, и формати на нештата малку повеќе убаво за мене. Ова можеби не е најмал убава CSS во светот. Но, тоа е само уште еден начин да се направи тоа. Па јас се уште може да се добие пристап во мојата променливи со користење $ _GET. И во овој случај, јас сум само вид на донесување на CSS малку повеќе фенси. А ако се појави во текот на мојата околина за една секунда, Јас ќе ви покажам во мојата PHP веб Директориум тука, get2.php. Ние ќе го отвори, некои HTML тука. Очигледно јас сум поврзување во тој CSS датотека зборувам. Ја отворам таг маса. А потоа тука е моето foreach јамка. Тука е дека, она што можам покажа на слајд порано. Единствената разлика е што има овој клуч и вредноста на CSS стајлинг дека јас сум се однесуваат на него. Но, тоа е се што правам е јас сум процесирањето низ $ _GET да ги добиете сите на клучните вредност парови. И јас сум ги отпечатите како масата. И, очигледно, јас сум форматирање на клучеви на еден начин, со