[Powered by Google Translate] [Недела 8, Продолжува] [Дејвид Џ Malan] [Универзитетот Харвард] [Ова е CS50.] [CS50.TV] Ова е CS50, така што ова е крај на недела 8 тука. Ние секако имаше малку ураган претходно оваа недела, па сега тоа е навистина само тебе и мене во овој аула, но денес ние продолжуваме нашите разговори за PHP и за веб програмирање поопшто, и ние исто така, воведе идејата на бази на податоци, особено оној нарекува MySQL, кој е доста популарни овие денови, во голем дел, бидејќи на своите приспособливост, како и поради тоа што е бесплатен и отворен код. Но, прво, погледнете каде што застанавте последен пат. Да се ​​потсетиме дека бевме во потрага по неколку Frosh инстант пораки примери, и тоа беше страшна форма што дојдов до пред некои 15 + години со цел да имаат студенти на кампусот регистар за Новак интрамурален спортови без всушност морале да Trek веќе низ дворот да Wigglesworth да слајд физичка парче хартија под вратата некои Проктор е. Наместо тоа, ние се пресели се на интернет, но да го стори тоа ни е потребно да се направи употреба на неколку технологии, па, ние потребни HTML, HyperText Markup Language, кој повторно е ова маркап јазик со кој ќе се направи веб-страници структурно. Користејќи малку на CSS овие денови, Cascading Style Sheets, при што ние ги користиме стилизации на веб-страница со помош на малку поинаков синтакса, додека HTML е сите за структурата него. Ние, исто така, треба да се воведе веб програмски јазик. Во овој случај, ние ќе го користите PHP, и PHP ќе ни овозможи да се динамички излез содржина, како и направите програмски работи како испраќање на пораки, како што беше случај на белешка ние замина минатата недела. Потсетиме дека кодот за ова е во 2 дела. Еден, имавме froshims3.php, а ова беше во голема мера Селектирај со HTML форма во него, мал малку на CSS се тука во стилот атрибути така што во форма себе ќе биде центрирана на страницата, но надвор од тоа имавме некои репрезентативна форма влезови, текст поле, полето, некои радио копчиња, изберете Мени и копче поднесе. И преку оваа форма, ние доставени до датотеката која очигледно беше наречен register3.php, која се погледна малку нешто како ова. Сега, повеќето од кодот во register3.php, се потсетиме, беше за сите е-мејл. Тоа го правеше малку валидација на форма која е поднесена за да бидете сигурни дека полиња се всушност обезбедени од кои се очекуваше. Тогаш ние наречен некои PHP функции со користење малку нови синтакса, иако тоа е позајмена од В Ова arrow оператор ни овозможува да се направи употреба на нешто што се нарекува објектно-ориентираното програмирање. Ние не би навлегувал во тоа во било детали тука, но знам за сега тоа е начин на постоење функции поврзани со предмети, кои се посебен вид на структура, како што видовме во C. Но, за сега, само да потрае на верата дека ова е точно синтаксата за употреба кога се користи библиотеката како оваа библиотека PHPMailer. А потоа до крајот на оваа датотека имавме динамички генерирани е-маил кои добија испратени до моите jharvard@cs50.net сметка од мојот jharvard@cs50.net сметка, и ние го извести корисникот за тоа дека биле регистрирани за овој спорт. Тоа е доста што Frosh инстант пораки сајт не сите тие години кога го спроведува, готово, во различен јазик, но тоа ви покажува можеби моќ што ја имаат сега дека можете да се изразите себеси не само програмски на ниско ниво на јазик како C, но на многу повисоко ниво со овие многу реалниот свет апликации како е-мејл за да всушност се реши некои проблемите со реалниот свет. Сега, се разбира, иако јас го користам оваа скрипта за да генерирате некои пораки динамички од jharvard@cs50.net, што е навистина сметка дека имам пристап до, да биде доста внимателен за испраќање пошта само од сметки, кои се всушност свој, да не работи што се во малку топла вода во животот. Со тоа, вели, ајде сега транзиција кон решавање на различни проблеми заедно, дека на задржување на држави. Сега, она што го прави ова всушност значи? HTTP, овој хипертекст трансфер протокол, е всушност без државјанство протокол, и што тоа значи е дека кога ќе се повлече од нешто како Google.com, а потоа притиснете ентер обично вашиот прелистувач има некој вид на предење икона која потоа резултати во некои веб страница се симнува, а потоа таа мала икона запира врти, и дека навистина укажува дека HTTP има завршено некаква врска со серверот и тоа е тоа. HTTP е без државјанство во смисла дека тоа не се одржи постојана врска со серверот на ист начин Skype не или Gchat не затоа што со HTTP претпоставката е дека откако ќе Земени веб страница, која е тоа. Сега, во реалноста овие денови на сајтови како Фејсбук и Google Maps и Твитер и слично, има многу повеќе динамика при дури и по таа икона ќе престане да се врти вие всушност може да се добие повеќе надградби од серверот, повеќе твитови, повеќе ажурирање на статусот на Фејсбук и слично. Но, дури и дека е со користење на техника која ние ќе зборуваме за една недела или две познат како Ајакс со користење на јазик наречен JavaScript, но на крајот на денот, HTTP е сеуште без државјанство. А сепак, ако сакате да некако се сетам на работите за корисникот дури и откако ќе се исклучи од вашиот сервер PHP не ви даваат средства за тоа затоа што, како што видовме последен пат, PHP има голем број на superglobals, и superglobal е, пак, посебна глобалната променлива што е предаден на вас од веб серверот и од страна на PHP себе. Вие не треба да се направи нешто да се стави вредности во него, и меѓу superglobals видовме досега се добие и пост, која е местото каде полиња се стави автоматски за вас, како и неколку други кои не сме виделе досега. Внатрешноста на $ _SERVER некои посебни променливи поврзани со серверот себе. Што е IP адресата, што протоколот, HTTP или HTTPS не го користите, она барање метод го користите и како, па има некои интересни, сочни детали за сервер, и всушност, на корисникот во таму, како и. Има $ _COOKIE, која е местото каде овие работи вика колачиња се чуваат. Ние нема да трошат време на колачиња се денес, но знам за сега тоа колаче е само мал дел од информациите дека веб серверот може да посади на веб прелистувачот и пак неговата RAM меморија или хард диск својот компјутер да ја запази информацијата за корисникот, на пример, нивното корисничко име така што тие не треба да ја внесете во секое време тие се најавите или некои единствен број или ознака за кои корисникот така што ќе не мора да ги закача со истите видови на прашања во врска со параметри во иднина, но повеќето од интерес сега е $ _session. Ова superglobal, која, како другите, е предаден на вас автоматски од страна на PHP кога сте пишување PHP базирани веб-сајтови може да се сместат нешто што сакате, стрингови, броеви, лебдечки точки, вредности, низи, предмети, навистина нешто што сакате, и тоа ви овозможува да ја складира на таков начин дека дури и ако корисникот ќе посети сега и тогаш се враќа една минута од сега или 5 минути од сега, бидејќи тие се земе своето време пред да кликнете на некои други врската PHP ќе се осигура дека она што ќе се стави во таа седница superglobal една минута или 5 минути се уште ќе биде таму кога корисникот враќа. И под хаубата овој superglobal се спроведува по пат на оние нешта наречени колачиња, но сега за сега, тоа е само апстракција при што е еден вид на програмски еквивалент на количката. Што и да, програмер, стави во таа superglobal асоцијативна низа ќе биде таму некои број на минути подоцна додека не го избришете или додека корисникот поднесе оставка неговиот или нејзиниот пребарувач заедно. Ајде да ги погледнеме еден пример за тоа како ова нешто е, всушност, се користи. Во counter.php меѓу парчиња денес на кодот имаме следнава линија. На почетокот од оваа датотека имаме еден куп сини коментари, кои се неинтересни за сега. Но, во линија 13 имаме нова линија, session_start, и кои, всушност, го прави токму она што го кажува. Таа започнува сесии. Тоа ви овозможува да го користите дека голем superglobal $ _session, и тоа е толку едноставно како што. Сега, ако продолжи да се погледне на линија 16, да се обиде да дознаам што оваа веб страница се случува да се направи. Ако (isset ($ _SESSION ["контра"]) па ќе одиме напред и продавница во контра променлива, мали контра, $ _SESSION ["Контра"]. Ова се чини дека прогласување на локална променлива наречена контра внатрешноста на кој тоа е ставање на копија на она што е внатре на superglobal наречен седница на локацијата "контра". Друго, очигледно, оваа мала локална променлива контра, се иницијализира на 0. Но потоа неколку линии подоцна во 26 забележите дека копија на седницата на шалтер, нејзините клучни, има нова вредност доделен која е неговата сегашна вредност плус 1. На кратко, оваа датотека се чини дека е ажурирање контра која е зачувана во внатрешноста на сесијата superglobal преку зголемување него од 1, но за прв пат го задржува копија од претходната вредност од чување на тоа во една локална променлива наречена $ контра, а потоа надолу тука да видиме што останува. Излегува дека е доста само HTML. На дното на оваа страница гледаме во согласност 37 што јас го посетиле овој сајт контра број на пати, така што неколку интересни опции тука. Еден, ова е јасно променлива, но тоа не е доволно само да се стави $ Контра во телото на вашиот HTML бидејќи секако ако тоа е само таму кај вашиот HTML PHP се случува да се претпостави дека е само HTML. Вие буквално сакате $ контра да се печатат на екранот. Но, наместо од намалувањето на PHP на владата со овој дел од синтаксата ние динамички да внесе вредност тука многу слични во духот со она што го правевме последен пат со вметнување вредности во низи. Всушност, ова е само стенографија нотација за велејќи нешто како ова буквално, печати ($ контра) или дури и нешто како printf (% s, контра), или дури и како може да се види онлајн или во учебниците, има функција во PHP наречен ехо што го прави истото, и сите оние кои се само не досаден начини да се каже