[Powered by Google Translate] [Tjedan 8, Nastavak] [David J. Malan] [Sveučilište Harvard] [Ovo je CS50.] [CS50.TV] Ovo je CS50, tako da je ovo kraj tjedna 8 ovdje. Mi, naravno, imao malo uragan ranije ovog tjedna, pa sad to je stvarno samo ti i ja u ovom predavaonici, ali danas ćemo nastaviti naš razgovor o PHP i oko web programiranja općenito, a također smo uvesti ideju baza podataka, posebno jedan zove MySQL, koji je vrlo popularan ovih dana, velikim dijelom zbog njegove skalabilnosti, kao i zbog svoje biće besplatan i open source. Ali prvo, pogledajte gdje smo stali zadnji put. Sjetite se da smo bili u potrazi na nekoliko Frosh IMS primjera, i to je bio strašan oblik koji sam došao do nekih 15 + godina kako bi se studenti na kampusu registar za brucoš intramuralnog sportova bez da zapravo putovati više preko dvorišta do Wigglessworthovoj slajd fizički komad papira ispod neke Proctor vratima. Umjesto toga smo se preselili sve online, ali za to trebamo iskoristiti od nekoliko tehnologija, tako da se, trebamo HTML, Hypertext Markup Language, što je opet to Označni jezik s kojim ste napravili web stranice strukturalno. Koristeći malo CSS ovih dana, Cascading Style Sheets, pri čemu ćemo koristiti stilizacija na web stranici pomoću malo drugačiju sintaksu, dok HTML je sve o strukturi istih. Također je potrebno uvesti jezik web programiranje. U tom slučaju, mi ćemo koristiti PHP, i PHP će omogućiti nam Da biste dinamički izlazni sadržaja, kao i to programske stvari poput slanje e-pošte, kao što je to bio slučaj na umu smo ostavili prošli tjedan. Sjetite se da je kod za to bio je u dva dijela. Jedan od njih, imali smo froshims3.php, i to je uglavnom za označavanje s HTML obliku unutar nje, komadić CSS ovdje u stilu atribute tako da je forma sama bi biti usredotočena na stranici, ali dalje od toga imali smo neke reprezentativne obrasca ulaza, tekst polja, kućicu, neke radio tipke, odaberite izbornik, a submit gumb. A putem ovog obrasca, mi poslali na datoteku koja je navodno zove register3.php, koji je i sam gledao malo nešto ovako. Sada, većina koda u register3.php, podsjetimo, bio je sve o e-maila. To je malo validacije u obliku koji je dostavljen kako bi bili sigurni da su polja su zapravo pod uvjetom da su očekivali. Tada smo nazvali neke PHP funkcije pomoću blago novu sintaksu, iako je posudio od C. Ova strelica operater omogućuje nam da se iskoristi nešto što se zove objektno-orijentirano programiranje. Nećemo ulaziti u to u bilo kojem detaljno ovdje, ali znam za sada to je način da funkcije povezane s objektima, koji su posebna vrsta strukture, kao što smo vidjeli u C. No, za sada, samo se na vjeri da je to ispravna sintaksa za korištenje kada koristite knjižnicu ovako PHPMailer knjižnici. I onda do kraja ove datoteke smo dinamički je generiran e-mail koji je dobio poslao na moj račun jharvard@cs50.net iz mog jharvard@cs50.net računa, i mi obavijestio korisnika u skladu da su bili registrirani za ovaj sport. To je ljepušan velik dio onoga stranica Frosh IM učinio prije svih tih godina kad sam ga provodi, odobren, na drugom jeziku, ali to pokazuje možda moć da imate sada da možete izraziti sebe ne samo programski na niskoj razini u jeziku poput C, ali na mnogo višoj razini s tim vrlo stvarnim aplikacijama kao što su e-mail zapravo riješiti neki pravi svjetski problemi. Sada, naravno, iako sam koristiti ovu skriptu generirati neke e-mail dinamički iz jharvard@cs50.net, što je doista račun da imam pristup, nemojte biti vrlo oprezni poslati mail samo od računa koji su zapravo sami, da se stvari dobiti u malo tople vode u životu. Sa taj je rekao, hajdemo sada prijelaz na rješavanju drugačiji problem uopce, da od potpornih država. Sada, što to zapravo znači? HTTP, ovaj protokol hypertext transfer, je zapravo državljanstva protokol, i što to znači da je kada podići nešto poput Google.com, a zatim pritisnite enter obično vaš preglednik ima nekakav vrti ikone koje zatim Rezultati za neke web stranice se skinuti, i onda da se malo ikona prestaje predenje, i da doista sugerira da HTTP je završio nekakvu vezu s poslužiteljem i to je to. HTTP je bez državljanstva, u smislu da se ne održi uporni veza s poslužiteljem na isti način Skype radi ili Gchat radi jer s HTTP Pretpostavka je da nakon što ste je dohvatio web stranicu koja je to. Sada, u stvarnosti ovih dana na stranicama poput Facebooka i Google Maps i Twitter i kao da je puno više dinamika kojom čak i nakon toga ikona prestaje predenje možete zapravo dobiti više ažuriranja od poslužitelja, više tweets, više statusa ažuriranja na Facebooku i slično. No, čak i da se tehnikom da ćemo razgovarati o u tjedan ili dva poznat kao Ajax koristeći jezik zove JavaScripta, ali na kraju dana, HTTP je uvijek apatrid. Pa ipak, ako želite da se nekako sjetiti stvari o korisniku čak i nakon što sam isključen iz vašeg poslužitelja PHP čini vam priuštiti sredstva za to jer, kao što smo vidjeli zadnji put, PHP ima niz superglobals, i superglobal je, opet, posebna globalna varijabla koji je predao na vas od strane web poslužitelja i PHP sama. Ne morate učiniti ništa staviti vrijednosti u njoj, a među superglobals smo vidjeli dosad su dobili i postavljati, što je gdje polja obrasca su stavili automatski za vas, kao i nekoliko drugih koje nismo vidjeli još. Unutar $ _server su neke posebne varijable odnose na samom poslužitelju. Što je IP adresa, što protokol, HTTP ili HTTPS ste koristili, Što Zahtjev metodu ste koristili i slično, tako da je neke zanimljive, sočni detalji o poslužitelju, te u stvari, korisnik u kao i tamo. Tu je $ _cookie, što je, gdje su te stvari zove kolačići spremljeni. Nećemo trošiti vrijeme na kolačića se danas, ali znam za sada da kolačić je samo mali dio informacije da web poslužitelj može posaditi na web-preglednik i okrenuti RAM ili njegovi tvrdi disk računala za pohranu informacija o korisniku, na primjer, svoje korisničko ime tako da oni ne moraju ga upisati svaki put kad se prijavite ili neki jedinstveni broj ili identifikator za tog korisnika tako da ne morate ih gnjaviti s istim vrstama pitanja o preferencije u budućnosti, ali većina od interesa Trenutno je $ _SESSION. Ovo superglobal, koji, kao i ostali, je uručio vas automatski PHP kada pišete PHP-based web stranice Možete pohraniti sve što želite, žice, integers, plutajuće točke, vrijednosti, polja, objekti, stvarno sve što želite, a to vam omogućuje da ga spremiti na takav način da, čak i ako korisnik posjeti vas sada i onda vrati minutu od sada ili pet minuta od sada, jer oni uzeti svoje vrijeme prije nego što kliknete neku drugu vezu PHP će osigurati da ono što ste stavili u toj sjednici superglobal Minutu ili pet minuta prije će i dalje biti tamo kad se vraća korisnika. A ispod haube to superglobal se provodi putem te stvari se zove kolačiće, ali za sada, to je samo apstrakcija pri čemu je vrsta programskog ekvivalent košarici. Što god, programer, staviti u to superglobal asocijativni niz će biti tamo neki broj minuta kasnije dok ga ne izbrišete ili dok korisnik zatvara svoj preglednik uopce. Idemo pogledati primjer kako ta stvar zapravo koristi. U counter.php među današnjim komada koda imamo sljedeću liniju. Na početku ove datoteke imamo hrpu plavih komentarima, koji su neinteresantni za sada. No, u skladu 13 imamo novu liniju, session_start, te da zapravo radi upravo ono što kaže. Ona počinje sjednice. To vam omogućuje da koristite taj veliki superglobal $ _SESSION, a to je kao jednostavan kao taj. Sada, ako smo nastavili gledati na liniji 16, pokušajmo shvatiti što ova web stranica će to učiniti. Ako (isset ($ _SESSION ["brojač"]), a zatim ići naprijed i trgovina u suprotnom varijable, mala brojač, $ _SESSION ["Brojač"]. To čini se da je proglašenje lokalnu varijablu nazvanu brojač unutar kojih je stavljajući kopiju god je unutar superglobal zove sjednicu na lokaciji "pulta". Inače, očito, ovaj mali lokalni varijabla brojač, inicijaliziran na 0.. Ali onda nekoliko redaka kasnije u 26 obavijesti da sjednici je kopija pulta, njegov ključ, ima novu vrijednost dodijeljena, što je njegova trenutna vrijednost plus jedan. Ukratko, ovu sliku čini se da je ažuriranje brojač koji je pohranjen unutar sjednice superglobal ga povećavanjem po jedan, ali je prvi zadržava kopiju prethodne vrijednosti ga spremanje u lokalne varijable nazivaju $ brojač, i onda ovdje ćemo vidjeti što dalje. Ispada da je prilično puno samo HTML. Na dnu ove stranice vidimo u skladu 37 koje sam posjetio ovu stranicu brojač broj puta, tako da je prije par zanimljivih značajki ovdje. Jedan od njih, to je jasno promjenjiva, ali to nije dovoljno da se samo stavi $ Brojač u tijelu vašeg HTML jer naravno ako je to samo tu među HTML PHP će pretpostaviti da je samo HTML. Vi doslovno žele $ brojač koji će se ispisati na zaslonu. No, umjesto toga pada u PHP modu s ovom komadu sintakse mi može dinamički umetnuti vrijednost ovdje vrlo slični u duhu onoga što smo radili zadnji put s umetanja vrijednosti u nizovima. U stvari, to je samo stenogram notacija za reći nešto ovako doslovno, ispis ($ brojac) ili čak nešto poput printf (% s, counter), ili čak, kao što ste vidjeli online ili u udžbenicima, postoji funkcija u PHP zove jeka koja čini istu stvar, a svi oni su samo više načina vjetru govoreći