[Powered by Google Translate] [8 Linggo, ipinagpatuloy]
[David J. Malan] [Harvard University]
[Ito ay CS50.] [CS50.TV]
>> Ito ay CS50, kaya ito ay ang katapusan ng Linggo 8 dito.
Namin siyempre ay isang bit ng isang unos mas maaga sa linggong ito,
kaya ngayon ay talagang lamang sa iyo at sa akin sa lecture hall na ito,
ngunit ngayon ay patuloy namin ang ating pag-uusap tungkol sa PHP
at tungkol sa web programming mas pangkalahatang, at din namin ipakilala ang ideya
ng mga database, lalo na ang isa na tinatawag na MySQL, na medyo popular na mga araw na ito,
sa malaking bahagi dahil nito kakayahang sumukat pati na rin dahil ang pagiging libre at open source.
>> Ngunit una, isang pagtingin sa kung saan kami tumigil huling beses.
Manariwa sa diwa na namin hinahanap sa ilang mga halimbawa ng Frosh IMs,
at ito ay ang kakila-kilabot na anyo na ako dumating na may ilang 15 + taon na ang nakakaraan
upang magkaroon ng mga mag-aaral sa campus rehistro para sa presman nasa loob ng lunsod sports
walang aktwal na pagkakaroon sa paglalakbay na ito sa kabuuan ng bakuran sa Wigglesworth
sa slide ng isang pisikal na piraso ng papel sa ilalim ng pinto ilang Proctor.
Sa halip inilipat namin ang lahat ng online, ngunit upang gawin na kailangan namin upang gamitin
ng ilang mga teknolohiya, kaya isa, kailangan namin ang HTML, hypertext markup language,
na muli ang markup language na ito na gumawa ka ng mga web page structurally.
>> Paggamit ng isang bit ng CSS mga araw na ito, cascading ng mga style sheet,
kung saan namin ang stylizations ng web page gamit ang isang bahagyang naiiba syntax,
samantalang ang HTML ay ang lahat tungkol sa istraktura nito.
Kailangan din namin upang maipakilala ang isang web programming wika.
Sa kasong ito, makikita namin ang PHP, at PHP ay upang payagan sa amin
sa dynamic na nilalaman sa output pati na rin ang gumawa ng mga program bagay tulad ng
pagpapadala ng mga email, tulad ng kaso sa tandaan na iniwanan namin noong nakaraang linggo.
>> Manariwa sa diwa na ang code para sa sa 2 bahagi.
Isa, nagkaroon kami froshims3.php,
at ito ay higit sa lahat markup sa isang HTML form sa loob nito,
isang napakaliit na bit ng CSS dito hanggang sa ang mga katangian ng estilo
sa gayon ay ang form mismo ay nakasentro sa pahina, ngunit lampas na
nagkaroon kami ng ilang mga kinatawan form na input, isang patlang ng teksto, isang checkbox,
ilang mga radio button, piliin ang menu, at isumite pindutan.
At sa pamamagitan ng form na ito, kami ay isinumite sa isang file na tila tinatawag register3.php,
kung saan mismo ang tumingin ng isang maliit na bagay tulad nito.
Ngayon, karamihan ng code sa register3.php, manariwa sa diwa, ay ang lahat tungkol sa email.
Ginawa ito ng kaunting pagpapatunay ng form na isinumite upang matiyak
na ang mga patlang ay aktwal na ibinigay na inaasahan.
Pagkatapos namin tinatawag ilang PHP function gamit ang bahagyang bagong syntax,
kahit na ito ay hiram mula sa C.
>> Arrow operator na ito ay nagbibigay-daan sa amin upang gumawa ng paggamit ng isang bagay na tinatawag na object-oriented programming.
Hindi namin pumunta sa na sa anumang detalye dito, ngunit alam sa ngayon
ito ay isang paraan ng pagkakaroon ng mga function na nauugnay na may mga bagay,
kung saan ay isang espesyal na uri ng istraktura, tulad ng nakita natin sa C.
Ngunit sa ngayon, lang ang dadalhin sa pananampalataya na ito ay ang tamang syntax upang gamitin ang
kapag gumagamit ng library tulad PHPMailer library na ito.
At pagkatapos ng dulo ng file na ito dynamic na namin nabuo ng isang email
na Nakakuha ipinadala sa aking jharvard@cs50.net account
mula sa aking account sa jharvard@cs50.net,
at aming pinaalam sa user naaayon na sila ay nakarehistro para sa sport.
Na ay medyo magkano kung ano ang site Frosh IMs ginawa lahat ng mga taon na ang nakakaraan
kapag naipatupad ko ito, ipinagkaloob, sa isang ibang wika,
ngunit ito ay nagpapakita sa iyo marahil ang kapangyarihan na mayroon kang
ngayon na maaari mong ipahayag ang iyong sarili hindi lamang sa programa
sa isang mababang antas sa isang wika tulad ng C ngunit sa isang mas mas mataas na antas
may mga tunay na mundo application tulad ng email sa aktwal na malutas
ilang totoong mundo problema.
>> Ngayon, siyempre, kahit gamitin ko ang script na ito upang bumuo ng ilang
email dynamic mula jharvard@cs50.net, na kung saan ay sa katunayan ng isang account
na mayroon akong access sa, huwag maging maingat upang magpadala ng
mail lamang mula sa mga account na aktwal na ang iyong sariling,
baka bagay na makakakuha ka sa isang bit ng mainit na tubig sa buhay.
Gamit na sinabi, sabihin ngayon lumipat sa paglutas ng ibang problema sa kabuuan,
na ng napananatili ang estado.
Ngayon, ano ang aktwal ibig sabihin?
HTTP, ito hypertext transfer protocol,
ay talagang isang stateless protocol, at kung ano ang Nangangahulugan itong na
kapag ikaw ay makuha ang isang bagay tulad ng Google.com at pagkatapos ay pindutin ang enter
karaniwang ang iyong browser ay may ilang uri ng Umiikot na icon na pagkatapos
mga resulta sa ilang mga pahina ng web na-download,
at pagkatapos na maliit na icon hinto Umiikot na, at na sa katunayan ay nagmumungkahi
na HTTP makumpleto ang ilang mga uri ng koneksyon sa server at na ito.
HTTP ay stateless sa pakiramdam na ito ay hindi mapanatili ang
ng paulit-ulit na koneksyon sa server sa parehong paraan Skype ang
o Gchat ginagawa dahil may HTTP
palagay ay na sa sandaling mo na nakuha ng isang web page na ito.
>> Ngayon, sa katotohanan mga araw na ito sa mga site tulad ng Facebook at Google Maps
at Twitter at tulad ng maraming higit pa dynamism kung saan
kahit na pagkatapos icon na humihinto Umiikot na maaari mong sa katunayan makakuha ng higit pang mga update
mula sa server, higit pang mga tweet, higit pang mga update sa katayuan sa Facebook at ang mga tulad ng.
Ngunit kahit na gamit ang isang diskarte na namin makipag-usap tungkol sa isang linggo o dalawang
kilala bilang Ajax gamit ang isang wika na tinatawag na JavaScript,
ngunit sa pagtatapos ng araw, HTTP ay pa rin stateless.
At pa kung gusto mong sa paanuman tandaan ang mga bagay tungkol sa isang user
kahit na matapos sila na-disconnect mula sa iyong server
PHP ang bayaran ka ng isang paraan ng paggawa nito
dahil, tulad ng nakita natin ang huling beses, PHP ay may isang bilang ng mga superglobals,
at isang superglobal, muli, isang espesyal na global variable
na ipinasa sa iyo ng server ng web at sa pamamagitan ng PHP mismo.
>> Hindi mo kailangang gawin upang ilagay ang mga halaga sa loob nito,
at kabilang sa mga superglobals nasaksihan namin sa gayon malayo makakuha at mag-post,
na kung saan ang form na mga patlang ay ilagay nang awtomatiko para sa iyo,
pati na rin ng ilang mga iba na hindi namin nakita pa.
Sa loob ng $ _server ang ilang mga espesyal na variable na may kaugnayan sa mismong server.
Ano ang IP address, kung ano ang protocol, HTTP o HTTPS mong gamitin,
anong kahilingan paraan ng mo gamitin at tulad, kaya ang ilang mga kawili-wiling,
makatas mga detalye tungkol sa server, at sa katunayan, ang user sa doon pati na rin.
May $ _cookie, na kung saan ang mga bagay na ito na tinatawag na cookies ay nakaimbak.
Hindi namin magpalipas ng oras sa mga cookies ang kanilang mga sarili ngayon,
ngunit alam sa ngayon na ang isang cookie ay lamang ng isang maliit na piraso ng impormasyon
na ang isang web server Plant sa isang web browser
at sa lumiko nito RAM o hard drive nito computer
upang mag-imbak ng impormasyon tungkol sa isang user, halimbawa, ang kanilang mga user name
upang hindi sila kailangang i-type ito sa tuwing mag-log in o ilang
natatanging numero o identifier para sa gumagamit na iyon
sa gayon ay hindi mo upang inisin ang mga ito na may parehong uri ng mga katanungan tungkol sa
mga kagustuhan sa hinaharap, ngunit karamihan ng interes
ngayon ay $ _session.
>> Ang superglobal na ito, na, tulad ng iba, ay ipinasa sa iyo nang awtomatiko sa pamamagitan ng PHP
kapag sumusulat ka PHP-based na mga website
maaaring iimbak ng anumang nais mo, string, integer,
lumulutang na puntos, mga halaga, array, mga bagay,
talagang anumang bagay na gusto mo, at ito ay nagbibigay-daan sa iyo upang mag-imbak ang mga ito sa paraang
na kahit na binisita ng user ang mo na ngayon at pagkatapos ay
ay isang minuto mula ngayon o 5 minuto mula ngayon dahil
nila ang kanilang oras bago ng pag-click sa ilang iba pang mga link
PHP ay matiyak na ang anumang inilagay mo sa session na superglobal
isang minuto o 5 minutong nakalipas ay pa rin doon kapag ang return ng user.
At sa ilalim ng hood ang superglobal ito ay ipinatupad sa pamamagitan ng paraan ng
mga bagay na tinatawag na mga cookies, ngunit sa ngayon, ito lamang ay isang abstraction
kung saan ang uri ng program katumbas ng isang shopping cart.
Anuman mo, programmer, ilagay sa na
superglobal nag-uugnay array ay mayroong ilang bilang ng mga minuto sa ibang pagkakataon
hanggang sa tanggalin mo ito o hanggang tabla ng user ang kanyang browser kabuuan.
>> Natin tingnan ang isang halimbawa ng kung paano ang bagay na ito ay aktwal na ginagamit.
Sa counter.php kabilang ngayon ang mga piraso ng code
Mayroon namin ang sumusunod na linya.
Sa simula ng file na ito ay may namin ng grupo ng mga asul na mga komento, na hindi kawili-wili para sa ngayon.
Ngunit sa linya 13 mayroon kaming isang bagong linya,
session_start, at na aktwal na ginagawa ng eksakto kung ano ang sinasabi nito.
Nagsisimula ito session.
Ay nagbibigay-daan sa iyo upang gamitin na malaki superglobal $ _session, at ito ay kasing simple ng na.
Ngayon, kung magpatuloy namin upang tumingin sa linya 16, sabihin subukan upang malaman kung ano ang web page na ito ay pagpunta sa gawin.
Kung (isset ($ _SESSION ["counter"]) pagkatapos ay magpatuloy
at tindahan sa counter variable, lowercase counter,
$ _SESSION ["Counter"].
Mukhang na deklarasyon isang lokal na variable na tinatawag na counter
sa loob ng na ito ng paglalagay ng kopya ng anumang loob ng superglobal
tinatawag na sesyon sa lokasyon "counter."
Iba Pa, tila, ito maliit na lokal na variable counter, ay nasimulan sa 0.
>> Ngunit pagkatapos ng ilang linya sa ibang pagkakataon sa 26 paunawa na ang kopya ng session ng counter,
key nito, ay may isang bagong halaga ng itinalaga na nito kasalukuyang halaga plus 1.
Sa maikli, ang file na ito ay tila na pag-update
isang counter na naka-imbak sa loob ng superglobal session
sa pamamagitan ng incrementing ito ng 1, ngunit ito unang napapanatili ng kopya ng nakaraang halaga
sa pamamagitan ng pag-iimbak ng mga ito sa isang lokal na variable na tinatawag na $ counter,
at pagkatapos ay down na dito sabihin makita kung ano ang nananatiling.
Ito lumiliko out ito ay medyo mas lamang HTML.
Sa ibaba ng pahinang ito na nakikita namin sa linya 37 na ako bumisita sa site na ito
sagot na bilang ng beses, kaya may ilang kawili-wiling tampok dito.
Isa, ito ay malinaw na variable, ngunit hindi ito sumapat lang ilagay
$ Counter sa katawan ng iyong HTML dahil siyempre
kung ito lamang doon kasama ng iyong HTML PHP ay ipinapalagay na lamang HTML.
Gusto mong literal $ counter na ipi-print sa screen.
>> Ngunit sa halip sa pamamagitan ng pag-drop sa PHP mode
na ito piraso ng syntax namin dynamic na magpasok ng isang halaga dito
na halos kapareho sa espiritu sa kung ano ang ginawa namin huling beses na may
pagpasok ng mga halaga sa mga string.
Sa katunayan, ito ay isang shorthand notation para sa sinasabi ng isang bagay tulad nito literal,
naka-print ($ counter) o kahit na isang bagay tulad ng printf (% s, counter),
o kahit na, bilang maaaring nakakita ka online o sa mga aklat-aralin,
may isang function sa PHP tinatawag na echo
kung saan ipinapakita ang parehong bagay, at ang lahat ng mga lamang na paghinga na mga paraan
ng pagsabi <? =.
Sa ganitong kaso, hindi mo na kailangang maglagay
PHP ang salita pagkatapos ng tandang pananong.
Ito ay shorthand notation, muli, kung ano ang aming nakita lamang ng ilang sandali ang nakalipas
na echoing ilang mga halaga.
>> Natin makita kung ano ang resulta ng pagtatapos na ito talaga.
Hayaan akong pumunta sa aming mga file counter.php,
at kami na makita na ang David lamang nagkamali sa pamamagitan ng paglalaro ang code doon.
Hayaan ang mag-aayos anumang siya screwed up,
at ang error ay tila na doon, nawala, sa linya 37.
Ayon sa tuktok ng pahinang ito binisita ko ang site na ito 0 beses.
Well, sabihin magpatuloy ngayon, at sa tuktok ng browser mag-click sa
i-reload ang icon, at i-click ang ko reload,
at ngayon ko na bumisita sa site 1 oras, 2, 3, 4, 5, 6, 7, 8.
At sa katunayan, kung tiningnan namin sa pinagmulan ng pahinang ito ang aktwal na source code ay nagbabago,
at mapansin ang kumpletong kawalan ng anumang PHP, at na dahil
PHP code ay sinusuri o kahulugan ng server side,
at sa gayon ay nangangahulugan na ang output ng script ng PHP ay kung ano ang sa huli ay ipinadala sa browser,
na sa kasong ito ay ilang raw na HTML at ilang raw na teksto.
Ano kaya ang nangyari dito?
>> Well, may kaugnay sa ilang mga linya ng code Ako ay makakapag-imbak
patuloy na sa loob ng ilang segundo, o kung kami naghintay may sapat na katagalan,
minuto, kahit na oras, ang ilang mga halaga sa isang paraan na gumagawa ng HTTP
mukhang stateful na parang kami mananatili
ang koneksyon na ito sa server, at ito-alala kung ano ang sinabi ko ito ng huling beses,
ngunit sa katotohanan may isang buong grupo ng mga kumplikado pagpunta sa ilalim ng hood
kinasasangkutan ng cookies na pagpapagana ng PHP upang bigyan ako ito ilusyon
ng shopping cart na ito-tulad ng tampok.
Sa ngayon, walang kuwenta halimbawa kung saan lang kami sa pag-iimbak ng isang integer,
ngunit ang tampok na ay bumalik na ng mahusay na halaga
kapag sinimulan namin ang pakikipag-usap tungkol sa mga mas kumplikadong mga proyekto,
kasama ng mga ito problema magtakda ng 7.
Ito ay ang iyong huling problema na makikita sa CS50.
Alam ko, kaya malungkot, ngunit kung anong makikita mo na kami ay pagpunta upang tapusin
ito bahagi ng semestre sa pamamagitan ng aktwal na paglipat
mula sa konteksto ng C tiyak sa konteksto ng PHP
pero habang gamit ang ilan sa napaka-parehong batayan
namin na uusapang tungkol sa para sa ilang oras.
>> Ang layunin sa pset 7 ipatupad CS50 Finance,
na ang iyong sariling bersyon ng Yahoo Finance o Google Finance
o kahit Etrade.com kung saan mayroon kang abilidad na
maghanap ng mga presyo ng stock para sa ibinigay na simbolo, ngunit mas higit pa kaysa sa
mayroon kang kakayahang "bumili ng" at "Nagbebenta" stock
na traded sa iba't ibang mga palitan ng stock dahil ng home page na ito
dito nagmumungkahi, na talagang ang lawak kung saan kami nagsimula
ang hanay ng problema para sa iyo, mayroon kang isang login form na humihingi para sa isang user name at password.
Ay may isumite pindutan, ngunit pagkatapos noon, bilang namin ay makakita,
walang ay talagang pagpunta sa ilalim ng hood dahil ito
nananatiling para sa iyo upang ipatupad ang kakayahan upang magrehistro ng mga bagong gumagamit,
ang kakayahan upang bumili ng mga stock, upang magbenta ng stock,
sa aktwal na hitsura up ng mga kasalukuyang presyo ng stock.
>> At sa katunayan, ito ay bilang tunay na mundo hangga't maaari dahil ginawa namin
magsama ng isang bit ng code na magpapahintulot sa iyo na may isang solong function na
sa query Yahoo Finance, na kamangha-mangha ay magagamit libreng data
para sa hinahanap ng mga presyo ng stock na batay sa simbolo ng stock o ticker simbolo,
at makakakuha ka pabalik ang kasalukuyang presyo ng stock ng araw.
Ang mga data sa aktwal na nakakakita ka sa partikular na pset
tungkol sa bilang tunay na mundo bilang maaari itong makakuha ng sa gayon ay aktwal na interfacing
sa tunay na mundo stock, totoong mundo presyo,
at dapat namin makita kung gaano karaming pera maaari kang gumawa ng marahil
sa susunod na ilang araw ng paglalaro ng gamit ang iyong sariling hanay ng problema.
>> Ngunit natin munang itakda ang yugto para sa kung paano mag-disenyo ng isang bagay na tiyak na mas komplikado
sa kaysa sa mga counter.php, na mas kumplikadong kaysa sa anumang mga Frosh IMs halimbawa sa gayon ngayon,
at sabihin subukan upang maipakilala ang isang ilang mga paradigms dito na pumapayag sa amin
parehong para sa pset 7 at marahil para sa iyong huling proyekto na kung gagawin mo ang isang bagay na web batay
upang mapanatili ang mahusay na nakaayos ang iyong code, upang panatilihin ang iyong sarili malusog,
at kumuha ng isang hakbang patungo sa pakikipagtulungan, kung sa panghuling proyekto ng CS50
o higit pa sa kung magpapatuloy ka sa programa ng isang bagay sa hinaharap.
May ito pangkalahatang disenyo tularan
sa computer science at sa software development sa mas pangkalahatang
na kilala bilang MVC, modelo tingnan controller,
at ito ay isang ulok acronym na naglalarawan ng isang napakabuti ideya,
na ang paghihiwalay ng mga iba't ibang mga aspeto ng isang programa,
partikular na pinapanatili hiwalay na ang logic o ang business logic ng isang website
upang ang anumang bagay na nagsasangkot ng mga bagay tulad ng
pagtawag ng mga function at querying database at ang mga tulad ng
mangyayari hindi kabilang sa iyong HTML
kundi sa hiwalay na mga file, at sa katunayan, ito isang file
karaniwang na tinatawag na controller
na talaga ang talino sa likod ng pagpapatakbo, at gagamitin namin makita ang isang halimbawa
ng mga ito sa sandali lamang.
>> May isang modelo na ang mga programa ng code
na ipinapakita ng pakikipag-usap sa iyong mga database, na-uusap sa Yahoo Finance at ang mga tulad ng,
at pagkatapos ay ang V sa MVC, ang mga tanawin,
lahat ng bagay na may kaugnayan sa aesthetics, ang mga file na aktwal na naglalaman ng
iyong HTML, siguro iyong CSS at tulad.
Ang ideya dito, bilang nagmumungkahi ang larawan na ito, ay ang controller
ang file, dahil kakailanganin namin sa lalong madaling panahon makita at tulad ng makikita mo lalo na makita sa pset 7,
na ang mundo sa pag-uusap sa pamamagitan ng kanilang mga web browser.
Na ang file na ay makakakuha ng binisita sa pampublikong internet,
ngunit ang controller-uusap sa potensyal ng modelo,
na isa o higit pang mga iba pang mga file na naglalaman ng code na kaugnay sa data,
code na may kaugnayan sa database at ang mga tulad ng, at pagkatapos-uusap sa
controller ang isa o higit pang mga iba pang mga file na kilala bilang mga tanawin,
na ang mga aesthetics ng isang pahina ng web, ang mga template ng uri,
na maaaring tumagal ng ilang mga data bilang input, ngunit sa pagtatapos ng araw
lamang ang logic sa loob ng isang view ay dapat na ang pag-render ng data na iyon,
iterating sa loob ng isang loop at aktwal pagsigam ang ilang mga
HTML-batay sa pagkakaganap nito o kahit isang bagay tulad ng isang PDF.
>> Ano ang maganda ang tungkol sa MVC ay na maaari mong magkaroon ng iba't ibang mga view
batay sa uri ng aparato, batay sa uri ng format ng file na iyong aktwal na
gusto mong ipakita sa gumagamit.
Natin tingnan ang ilang progressively mas kumplikado at mahusay na dinisenyo mga halimbawa
pamamagitan ng pagsisimula ng unang may bersyon 0 dito.
Hayaan akong sige at buksan sa aming direktoryo sa MVC ngayon
isang file na tinatawag na index.php sa direktoryo 0.
Pansinin na ito ay isang napaka-simple at napaka-underwhelming website
na uri ng bersyon 0 ng homepage para sa CS50,
at pansinin kung paano kami ay may isang link sa aralin, kami ay may isang link sa Syllabus,
at kapag sinundan ko ang link sa mga aralin ng paunawa na ang URL
up itaas ay pagpunta upang baguhin sa lectures.php.
Kung ako pagkatapos ay sundin ang mga link sa Linggo 1 paunawa na ang mga pagbabago sa URL sa week1.php.
Mukhang medyo simple hierarchical istraktura dito.
>> Natin gumawa ng isang mabilis na pagtingin sa ilalim ng hood sa kung paano ito ay inilatag nang,
at sa katunayan, kung tiningnan ko sa index.php medyo simple.
Sa katunayan, kahit tinatawag ko ito isang file ng PHP walang aktwal na code sa programming.
May isang komento na sinulat ni ko dito sa PHP lamang sa gayon ang gumagamit ay hindi itong makita.
Siyempre, tulad ng dati, anumang bagay na sa pagitan ng PHP tag
ay makakakuha ng kahulugan, kahit na ito ay isang komento, at bigyang-kahulugan ang isang komento
ay nangangahulugan lamang itapon ito ang layo mula sa pagtatapos ng araw at hindi tunay
ipadala ito sa browser, kaya ang lahat in dito aesthetics lang.
Kung buksan ko katulad lectures.php ito masyadong ay isang hard-code na file.
Ito ay nangyayari na tinatawag na isang bagay. Php,
ngunit ito talagang lamang ang html, at week1.php, week2.php
katulad lamang ang markup, kaya mayroong isang bungkos ng mga pagkukulang ng disenyo na ito.
Isa, ang isang malaking halaga ng kopya / i-paste.
Kahit na ang tanging bagay na pagbabago bukod sa mga file na ito ay ang unordered listahan,
ang li tag, gayunman ako doc uri, HTML, ulo,
pamagat, malapit katawan, malapit HTML at higit pa
sa bawat solong file, na nangangahulugan na kung ako kailanman nais upang restructure
ang web page na ito o restylize ito kong pumunta sa at baguhin
lahat ng mga file na ito nang manu-mano o may ilang mga napakalaking hanapin at palitan.
>> Natin gumawa ng isang hakbang patungo sa mas matalinong, na iniisip disenyo sa bersyon 1 dito
kung saan ng bawat basahin sa akin na kami kasama sa gayon ay maaari mong i-play kasama
mga mas banayad sa bahay paunawa na mayroon kami dito
isang buod ng mga file sa bersyon 1 ng site na ito,
at tila ko na kinuha ito kapag ang aking sarili sa salik ang
ilan sa mga karaniwang code, header.php at footer.php.
Well, sabihin kumuha ng isang pagtingin sa kung ano ang sa loob ng unang ng mga.
Header.php mukhang pamilyar,
ngunit mapansin kung saan ang makapag-putol?
Mag-right pagkatapos ng ika-19 linya, kaya na ang lahat ng mga karaniwang
mula sa file index.php, lectures.php,
week1 at week2.php mula sa nakaraang halimbawa.
Ano ko ginawa ang lahat ng kopya at cut na pangkaraniwan sa lahat ng mga file na iyon,
ilagay ang mga ito sa isang hiwalay na file ng header, at katulad sa footer.php
kong ilapat ang parehong prinsipyo kung saan ang lamang kawili-wiling mga linya
sa mga dalawang, malapit katawan at malapit na HTML ang mga footer.php.
>> Ngunit kung ano ang ibig sabihin nito ay ngayon ay na sa bagong bersyon
ng index.php paunawa kung magkano simple ito.
Ipinagkaloob, isang bit mas misteriyoso hinahanap, isang maliit na mas mababa intuitive
sundin itaas hanggang sa ibaba, ngunit ang aking Diyos, ang lahat ng na kalabisan ay nawala ngayon.
Kinakailangan namin ang paggamit ng PHP function na literal na tinatawag na nangangailangan ng hanggang tuktok,
na napaka nakapagpapaalaala, isipin ang, ng C # include mekanismo.
Kinakailangan namin ng mga header.php sa tuktok.
Kinakailangan namin ang mga footer.php sa ibaba, at ang tanging bagay na ay naiiba
o espesyal na tungkol sa ang file na ito ay ang nilalaman na nilalayong natatanging dito.
Kung ako pagkatapos ay pumunta sa, sabihin nating, lectures.php, ang parehong prinsipyo nalalapat.
Muli, ang ilang mga komento up itaas, ngunit pagkatapos ay nangangailangan ko header, kinakailangan footer,
at sa pagitan lamang ang nilalaman na aktwal na ay nagbago.
At kung namin tumingin sa Linggo 1 at Linggo 2 gusto namin makita
na ang parehong prinsipyo ay inilapat doon.
Well, hindi kami ay lubos tapos doon.
>> Natin tingnan ang bersyon 2, na kung saan ay may katulad na istraktura,
ngunit ngayon mapansin ipinakilala ko na ang iba pa.
Sa linya 10 ko na ipinakilala helpers.php,
na tila naglalaman ng mga function ng lingkod.
Isang lingkod function na ay may maikling function na
na sinulat mo upang makatulong sa iyo sa iba't-ibang mga lugar,
at sabihin makita kung ano ang sa loob ng helpers.php.
Sa kasong ito, mukhang ito ay may 2 function.
Manariwa sa diwa mula sa iba pang mga araw sa aming kubo halimbawa
maaari mong tukuyin ang iyong sariling mga function sa PHP, at kung ano ang nagawa ko na ngayon ay nag ko
tinukoy na function na tinatawag na render footer at render ang header,
ang unang kung saan tumatagal ng isang parameter na tinatawag na data,
na ang default na halaga ay isang walang laman na hanay, tulad ng iminungkahing doon,
at maaari naming aktwal na magsulat ito mas succinctly sa pinakabagong bersyon ng PHP
sa pamamagitan ng sinasabi ng bukas square bracket, sarado square bracket.
Iyon ay nangangahulugan na ang isang walang laman na hanay ng mga laki 0 ​​ngunit gayunman isang array.
>> Ang Extract function na ay isang maliit na espesyal sa na
kung ano ang ginagawa nito ay tumatagal ng bilang nito argument ng nag-uugnay array
na may 0 o higit pang mga key na mga pares ng halaga, at kung mayroon kang isang key ng foo
at isang halaga ng bar ang Extract function na
lumilikha ng isang sitwasyon kung saan ngayon, bilang ng linya 11,
mayroon kang isang lokal na variable na tinatawag na $ foo na ang halaga ay bar.
At kung mayroon kang higit pang mga pindutan at halaga sa array ng data,
katulad sila ay nahango sa lokal na saklaw
o pangalan ng puwang upang ang footer.php at
ang parehong ideya pababa dito upang ang header.php
magkaroon ng access sa mga variable.
Sa katunayan, hayaan mo akong buksan up muli header.php
at gumuhit ng pansin sa ngayon kung ano ang mukhang sa bersyong ito.
>> Sa halip na mahirap coding ng CS50 bilang ang pamagat para sa bawat solong pahina
mapansin ang dynamism na posible na ngayon.
Sa ika-5 linya ako echoing isang pamagat variable,
ngunit una ako pagpasa ng pamagat na iyon variable sa isang function na tinatawag na htmlspecialchars.
Isang bobo na pangalan para sa isang function, hangga't ito ay, ngunit ito talaga ginagawa kung ano ang sinasabi nito.
Sinisigurado nito na ang anumang mga espesyal na character
sa string na nakapasa sa maayos na escaped na HTML.
Ito ay talagang isang paraan ng pag-iwas sa isang bagay na tinatawag na isang cross site scripting atake
kung saan ang isang tao ay maaari maliciously o aksidenteng
mag-inyeksyon ang kanilang sariling HTML sa iyong website
sa pamamagitan ng pag-paste sa ilang anyo, halimbawa,
isang bagay na hindi mo ay medyo umaasa, lalo na JavaScript code,
dahil kakailanganin naming makipag-usap tungkol sa isang linggo o dalawang ng oras.
>> Ito ngayon header.php, isang view
sa kamalayan na ito ay nagbibigay-daan sa iyo upang tingnan aesthetically ang mga nilalaman ng ilang mga hanay ng data.
Ngunit higit na partikular, ito ay isang template.
Ito ay uri ng isang plano ngayon kung ano ang gusto naming header ng bawat pahina upang magmukhang,
ngunit ang ilang dynamism na gusto naming pamagat na dynamic na ipinasok
batay sa title variable
na nahango kapag tinatawag namin, muli,
render ng header ng function na.
Ngayon, kung kami ay tumingin sa render footer, may aktwal na hindi mas paggamit ng karapatan na ngayon
dahil sa footer.php walang dynamism anumang.
Ay maaaring, ngunit sa sandaling ito ay isang hard code na listahan ng 2 tag,
ngunit ang parehong ideya nalalapat, upang aktwal na nagmumungkahi kung bakit
ay namin aaksaya ng oras sa pagkakaroon ng render header at ng render footer function na?
Hayaan akong pumunta sa halip na ngayon sa bersyon 3,
at sa bersyon 3 sa Katulong ko nagpasya upang gawing simple ito ng mas maraming.
>> Hayaan ang mayroon ako ng isang render function na.
Hayaan ang sa akin itong tumagal ng isa pang argument, oras na ito na tinatawag na template,
na nilalayong maging ang pangalan ng isang template,
at pagkatapos ko pagdugtungin presumptuously. php sa halaga na variable,
at pagkatapos ay kung ito ay umiiral foo.php, mga bar.php o header.php at footer.php,
pagkatapos ay ako pagpunta sa magpatuloy at extract ang mga variable na data
at pagkatapos ay nangangailangan ang path na iyon.
Sa ibang salita, upang gamitin ito ngayon, kung buksan ko hanggang index.php
mapansin na hindi ko tumawag render header na ito.
Ko lang tawagan render, ngunit pumasa ko sa isang naka-quote na halaga ng header
upang gumawa ng malinaw na template ko aktwal na nais upang i-load.
>> Pagkatapos sa paglipas dito mapansin kung ano ang ako ginagawa.
Ako pagpasa sa dynamic na isang susi ng pamagat,
halaga ng CS50, at ito ay masyadong, tulad ng nakita natin dati,
maaaring gawin mas maikli at malinaw sa ang pinakabagong bersyon ng PHP
kung saan maaari kong palitan ang array function na may mga square bracket,
kung saan ipanukala ko ay mas nababasa at tiyak
isang maliit na mas madaling i-type.
At siyempre, sa tawag render footer sa ibaba,
hindi namin abala ang pagpasa sa isang pangalawang argumento sa lahat, walang nag-uugnay array,
dahil may walang dynamic loob ng footer na.
Ito ay ilang mga malapit na tag para sa HTML.
Mabuti, kami ay ang pagkuha ng mga hakbang tungo sa talagang paglilinis ng mga bagay dito,
ngunit hayaan mo akong buksan 2 panghuling halimbawa.
Ang isang ito, bilang 4, notice na ko na ginawa ng isang nakakamalay na desisyon sa ngayon
upang mapabuti ang oras ng nakaraang halimbawa sa pamamagitan ng wakas paggamit ng ilang hierarchy sa aking mga file.
>> Pansinin na sa buod na ito, sa ito basahin sa akin, ko na ipinakilala
ng kabilang ang direktoryo at mga template direktoryo
na nilalaman ay ang mga bagay na gusto kong isama
at ang mga template na gusto kong mag-render, ayon sa pagkakasunud-sunod.
Sa akin talaga ito pagiging anal at sinusubukang upang panatilihing maglinis ang mga bagay,
panatilihin ang mga kaugnay na mga file, ngunit ang resulta
na namin ngayon ay may isang bahagyang tidier setup, ngunit mayroon kaming tandaan ngayon
sa, halimbawa, index.php
kapag kinakailangan namin ang file helpers.php
namin sa ngayon nangangailangan ang mga ito sa pamamagitan ng kasamang / helpers.php
sa halip na lamang sinasabi ng helpers.php dahil ngayon ito ay aktwal na sa isang sub direktoryo.
Ngayon, bilang isang bukod, makikita mo makita sa mga halimbawa at ilang iba
function tulad ng nangangailangan, nangangailangan sabay-sabay.
Mayroon talagang isang function mismo tinatawag isama, at lahat ng mga ito ay may bahagyang naiiba ang pag-uugali.
Dito sinasabi ko nangangailangan ng isang beses sa sobrang malinaw na gusto ko lang mga
Katulong kasama sa aking proyekto sabay-sabay.
Ngunit kung ako maingat at kung aktwal ako iniisip sa pamamagitan ng aking logic maayos
dapat ito sumapat masyadong lamang upang sabihin nangangailangan hanggang tuktok
hangga't ko hindi sarili ko nang hindi sinasadya nangangailangan na ang parehong file sa ibang lugar.
Sa katunayan, ito ay isang bahagyang mas mahusay na paraan ng paggawa ng mga bagay pagkatapos gamit
nangangailangan ng isang beses, kaya makikita ko trim ito lamang nangangailangan.
>> Hayaan ang isang hakbang karagdagang.
Ang huling halimbawa na ito ngayon, ang bersyon 5, ay may kahit cleaner folder hierarchy.
Pansinin kung ano ang nagawa ko na dito bawat ang basahin sa akin sa huling bersyon na ito
ngayon ay mayroon ko ang aking HTML direktoryo, na Nagkaroon na ako ng lahat oras na ito,
ngunit sa loob ng may ngayon lamang index.php, lectures.php,
week1.php at week2.php.
Kasamang direktoryo ngayon nakatira sa tabi ng HTML directory,
ito sa parehong antas bilang isang kapatid, kaya na magsalita.
Kaya ang mga template na folder.
Ang pangunahing takeaway dito ay ipinakilala ko na ng kaunting karagdagang istraktura,
ngunit ang pangunahing tampok ngayon na lamang ang mga file
na kailangan web access, publiko addressable
ng isang URL sa pampublikong internet sa aking HTML direktoryo.
>> Samantala, iba pang mga file, helpers.php, footer.php,
header.php, na arguably siguro mas sensitive,
Katulong siguro ang aktwal na ay may ilang mga user name at password o ilang intelektwal na pagmamay-
function ng ari-arian ng minahan, hindi ko talagang gusto upang makita ang mundo, kahit na hindi sinasadyang.
Ito ay mahusay na kasanayan upang panatilihin ng pampublikong direktoryo ng HTML
anumang mga file na hindi na kailangan ang kanilang mga sarili upang maging pampublikong.
Ang mayroon kang gawin sa kasong ito kapag tumitingin sa, halimbawa,
index.php file ang HTML direktoryo,
mapansin lang namin ng kaunti pa maingat kapag nangangailangan
o nangangailangan ng isang beses ang file na ito.
Kailangan ko munang gawin ... pumunta sa direktoryo ng magulang,
pagkatapos ay / kasama / helpers.php
sumisid bumalik pababa upang makuha ang mga file na mahalaga ako tungkol.
>> Anumang mga katanungan pagkatapos ay sa MVC
o medyo simple pagkakatawang-tao nito?
At hayaan mo akong gumawa ng malinaw na nakatutok kami pa ng kaunti sa
V dito, ang mga tanawin at ang factoring ng mga template na ito.
Hindi namin talagang nakikilala M mula sa C pa.
Sa katunayan, may talagang ay walang M dito, at maging ang aming C,
controller, hindi talaga ginagawa ang lahat na magkano, ngunit makakakuha ka ng higit pa
pamilyar sa parehong ng mga 2 mga titik mula sa MVC,
o sa halip, makikita mo makakuha ng mas pamilyar na may C
sa MVC para sa problema sa set 7, kaya walang higit pa na iyon sa abot-tanaw.
Mga tanong?
Mayroon talagang wala dito.
>> Okay, sabihin na ngayong ilipat sa ang pangalawang at huling paksa para sa araw na.
Na ang pagpapakilala ng isang database.
Hanggang sa puntong ito kami ay may ilang mga paraan ng pag-iimbak ng mga data.
Ginamit namin ang mga variable.
Bumalik sa aming file sa C, I / O talakayan namin simulang gamitin ang mga tekstong file
at paggamit ng mga file tulad ng fprintf, at pagkatapos ay namin kahit na sinimulan
pinag-uusapan ng CSV file nang kaunti, comma separated values,
kaya lahat ng mga ito pinapayagan sa amin upang magkaroon ng mga data na naka-imbak
alinman sa hindi-patuloy o patuloy na.
Ngunit kahit mga CSVs ay hindi talagang kaaya-aya sa paghahanap
at pagpasok at pagtanggal.
Talaga lang bobo tekstong file na pinaghihiwalay ng mga kuwit
hilera sa pamamagitan ng hilera sa pamamagitan ng hilera sa pamamagitan ng hilera, kaya kung gusto mong i-
maghanap na file ang pinakamahusay na maaari mong gawin talaga ay linear paghahanap.
Mayroon kang magsimula sa tuktok ng file, basahin ang buong bagay sa,
at hanapin para sa ilang mga halaga ng interes.
Kung nais mong isingit ito kailangan mong gawin ang parehong bagay,
iterating sa paglipas ng ito at pagpasok sa isang partikular na lugar,
at sa katunayan, mayroon kang upang gawin ang lahat ng paghahanap logic iyong sarili.
>> Hindi mo maaaring gawin ang matalino pagtutugma ng pattern sa isang CSV file maliban kung ikaw isulat ang iyong sarili ng code.
Hindi mo maaaring gawin ang pagsasala ng isang CSV file
maliban kung ikaw isulat ang iyong sarili ng code.
Hindi magiging magaling kung ang ibang tao ay ilagay sa lahat ng pagsisikap
sa aktwal na gawin ang paghahanap madali at pagpapasok ng madaling
at pagtanggal at pag-update at iba pa?
Iyon ay eksakto kung ano ang database ng.
SQL, nakabalangkas na query wika, isa pang wika
na dito kami ay nagpapakilala ngayon, ngunit ito ay masyadong medyo naa-access,
at kung ano talaga namin ay pagpunta sa gawin ay lamang kumalbit nito ang ilan sa mga pinaka-kapansin-pansin
katangian upang ang para sa pset 7, at kung ka ng isang bagay sa web batay,
ang iyong panghuling proyekto, mayroon kang kakayahan upang ipahayag ang iyong sarili
sa mga tuntunin ng mga query ng data.
Mayroon kang ang kakayahan upang mag-imbak ng kaunti o ng maraming data
sa isang mas nakabalangkas na paraan na ay sa pagtatapos ng araw
gawing mas madali ang iyong buhay dahil sa SQL maaari mong ipahayag ang iyong sarili
mas tiyak, mas methodically upang
makakuha ng ilang mga subset ng data mula sa isang mas malaking kalipunan ng data.
>> Maaari mong isipin ng isang database, sa kasong ito, isang SQL database, talagang tulad ng Excel
o Numero kung saan ito ang isang spreadsheet,
o maaaring maramihang mga spreadsheet, at isang spreadsheet, siyempre,
may mga hanay at haligi, at iyon ay dahil
SQL database ay pamanggit, pamanggit sa kamalayan
na sila imbak ng data sa mga tuntunin ng mga talahanayan,
hanay at haligi.
Ang mga ito ay mas mataas na gumaganap kaysa sa isang bagay tulad ng isang spreadsheet,
at isang spreadsheet ay nilalayong gamitin ng isang tao.
Database ay sinadya na ginagamit ng isang programmer
pagsulat ng code laban dito, kaya ang pagkakatawang-tao ng isang database
ay pagpunta sa alinman sa linya ng command.
>> Isa ng ang pinaka-popular na pamanggit database out doon ay, muli, MySQL,
na kamangha-mangha libreng, napakataas na gumaganap na, at ito ay kung ano ang
Facebook ginamit napaka maaga at sa ilang mga lawak pa rin ngayon
upang mag-imbak ng maraming data nito, at kami na makita sa isang sandali
na ang paggamit ng mga relatibong simpleng utos
maaari naming pumili ng mga data, ipasok ang data, i-update ang data,
tanggalin ang data at tulad ng, ngunit thankfully, mayroong isang mas user-friendly interface
pa sa pag-type sa isang itim at puting prompt dito.
Gagamitin namin para sa pset 7 at higit pa sa isang libreng tool na tinatawag na phpMyAdmin.
Ang pangalan ay hindi sinasadya.
Tool ang mangyayari ipinatupad sa PHP,
ngunit sa panimula walang-katuturang.
Ano ang kapaki-pakinabang tungkol sa phpMyAdmin na ito ay isang web-based utility.
Namin ang pre-install ito sa appliance para sa iyo,
at dito maaari kang lumikha ng mga talahanayan sa isang database,
maaari mong ipasok ang mga data, tanggalin ang data, at sa pangkalahatan ay makita
ang iyong mga data sa isang medyo user-friendly na kapaligiran.
Ang iyong mga gumagamit ay hindi pagpunta sa gamitin ang phpMyAdmin.
>> Ito ay talagang isang administrative o nag-develop ng tool
kung saan upang makita at sundutin sa paligid ng iyong data at malaman kung paano buuin ang,
tulad ng sa iyo maaaring ang iyong sarili gamitin ang Excel o Numero,
ngunit ito upang maging isang mahusay na paraan ng pagtingin sa kung ano ang nangyayari sa ilalim ng hood
sa gayon ay maaari kang tumuon sa kawili-wiling problema paglutas at hindi kaya magkano
sa ang arcane utos.
Natin tingnan ang isang halimbawa ng data na maaaring naka-imbak tabularly
sa isang pamanggit database.
Narito ang isa tulad halimbawa.
Ngayon, sa kasamaang-palad, phpMyAdmin erred sa gilid ng ibinabato ng paraan ng masyadong maraming salita
at graphics sa iyo, ngunit kung lagisan sa lamang sa
ID haligi, ang haligi ng pangalan ng user, at ang hash haligi,
ito ay epektibo ng isang spreadsheet, ngunit ito ang mangyayari sa isang snippet
ng isang table sa loob ng appliance
gamit ang isang file na binigay namin sa iyo sa problema set 7.
>> Sa partikular, hindi namin bigyan ka ng isang file na kumakatawan
talahanayan ng gumagamit, kaya ng isang spreadsheet na naglalaman ng mga gumagamit na may 3 mga hanay,
ang isa na kung saan ay isang natatanging ID na simula sa 1 at incremented sandali.
Ang ikalawang hanay ay isang user name, at mga mo na ginawa Hacker,
Hacker edisyon para sa pset 2, maaaring makilala ang ilan sa mga pangalan ng gumagamit ng hindi bababa sa.
Sa kanang bahagi ay password, ngunit hindi sila literal password.
Hindi nila hashes nito, kaya ito ay lumiliko ang
na ang pag-iimbak ng mga password sa isang database ay isang talagang masamang ideya.
Mo na ang lahat ng maaaring basahin sa ilang mga punto ng ilang mga website
o database ilang kumpanya na nakompromiso, at pagkatapos ay mayroon kang
baguhin ang iyong password, kailangan mo upang makakuha ng mga refund sa mga bagay
dahil ang ilang masamang tao na aktwal na sinira in sa iyong account bilang isang resulta.
>> Pag-iimbak ng mga password sa malinaw na teksto, unencrypted sa isang database
ay ganap na tanga, at pa ito lubhang nakakatawa
pagkatapos na basahin ang tungkol sa ilang mga mahusay na kilala kumpanya
minsan sa press na database ay nakompromiso,
at ang bahagi na hindi nakakatuwa, ngunit ang katotohanan na ang mga database naglalaman unencrypted
password ay katawa-tawa dahil literal na may isang linya ng code
maaari mong protektahan laban sa partikular na pagbabanta, at na kung ano ang ginawa namin dito.
Kahit na para sa aming mga pekeng kaunti CS50 bersyon ng Pananalapi
encrypt kami ng mga password para sa mabuting panukala, at ang katotohanan na
ang lahat ng mga password magsimula sa $ 1 $ isang convention.
Na lamang ay nangangahulugan na ito ay naka-encrypt o talagang na-hash,
na ay tulad ng isang one-way na function na-encrypt
kung saan hindi ka maaaring baligtarin ang mga epekto nito na may isang bagay na tinatawag MD5.
>> Ang katotohanan na ang 50 ay pagkatapos na ay nangangahulugan na ang isang halaga ng asin
na 50 ay ginagamit para sa hashing ang lahat ng mga password maliban para sa isa.
Mine, siyempre, tulad ng maaari mong makita doon, Ha,
ay gamit ng ibang asin, kaya mga mo na Nakakuha bahagyang tripped up
siguro sa Hacker 2, na maaaring ang resulta ng aming pag-ginamit
ng ibang hash kaysa sa iba dahil ang aking password ay talagang ang parehong
bilang ilang mga iba pang mga gumagamit up doon.
Sa katunayan, kung ikaw ay naghihintay sa lahat ng mga linggo upang malaman kung
kung ano ang mga password ay dito ang mga password na ikaw ay hinamon
upang magpahaginit sa Hacker edisyon ng problema sa set 2, kaya wala masyadong nakakalito.
Sa katunayan, malan ay ang parehong bilang jharvard,
ngunit kung pumunta namin pabalik sila tumingin ibang.
>> Tumuon sa jharvard sa pulang-pula dahil sila ay inasnan naiiba.
Ang algorithm ay ligalig sa isang paraan na
halaga ng hash, ang naka-encrypt na mukhang ng kaunti ang halaga ng iba't ibang
dahil ang input ay bahagyang naiiba, ngunit ang password sa ilalim ng hood
ay pa rin sa huli pulang-pula.
Ngayon, na nagmamalasakit tungkol sa?
Well, kami ay nagbibigay ng sa iyo ng mga gumagamit ng sample, ang pangalan ng sample na gumagamit
at hashes ng kanilang mga password sa gayon ay aktwal na may ilang mga
customer para sa CS50 Pananalapi kapag mo munang bumaba sa lupa sa iyong code.
Magkakaroon ka upang ipatupad ang higit pang mga talahanayan sa loob ng MySQL, sa loob ng database.
Magkakaroon ka upang lumikha ng higit pang mga spreadsheet, epektibo, ngunit hindi namin nagpasya upang bigyan ka ng isang ito
upang makapagsimula ka, at makikita mo na ang hanay ng pagtutukoy ng problema
ay nagtuturo sa iyo sa pamamagitan ng proseso ng pag-import ng table na ito
at din ay nagpapaliwanag kung ano ang ilan sa mga katangian ay,
at makikita mo rin ang na ibinibigay namin sa iyo ang code
upang pangasiwaan ang hashing o ng pag-encrypt ng mga password,
kaya hindi mo kailangang mag-alala masyadong maraming tungkol sa kung ano ang MD5 o ang tulad ay talagang lahat ng tungkol sa.
>> Kaya, SQL, nakabalangkas na query na wika.
Ito ay, medyo lamang, ang wika na hindi namin tungkol sa upang simulan ang paggamit sa pset 7
at marahil higit pa sa upang humiling ng data mula sa ilang database.
Ang data ay, muli, na naka-imbak tabularly sa mga pamanggit mga talahanayan, mga haligi, at mga hilera,
ngunit gamit ang ilang mga ganap na simpleng syntax tulad tanggalin,
isingit, i-update at piliin ang maaari naming gawin eksakto na.
Maaari naming tanggalin ang mula sa database, ipasok,
i-update ang data, pati na rin ang piliin, na, mabawi ang mga data mula sa database.
Paano namin pumunta tungkol sa paggawa nito?
Hayaan akong magpatuloy sa appliance.
Hayaan akong makuha ang http://localhost,
kung saan, muli, ay ang lokal na appliance mismo.
Na default palayaw nito.
At hayaan mo akong pumunta sa / phpmyadmin.
Ito ang mangyayari sa isang espesyal na URL na ang appliance ang ay preconfigured upang maunawaan
na agad na prompt sa akin para sa isang user name at password.
>> Gaya ng dati, ako type jharvard at pulang-pula,
ngunit mapagtanto na ang administrator account sa computer.
Ito ay isang pagkakataon na mayroon ding isang jharvard nakarehistro para sa CS50 Finance.
Jharvard, pulang-pula, magpasok nagbibigay sa akin ang user interface na nakita natin
isang sulyap sa isang sandali ang nakalipas, at ito ay isang maliit na napakalaki sa una,
ngunit makatitiyak, hindi ka pagpunta sa i-click ang karamihan ng mga link sa tool na ito.
Makikita mo gamit ang isang maliit na subset na sobrang kapaki-pakinabang,
ang unang na kung saan ay database dito.
Kung pumunta ako sa mga database, mapansin na ako prompt upang lumikha ng isang database.
Ito ay tulad ng paglikha ng isang bagong file sa Excel, epektibo.
Ako pagpunta sa sige at tawagan ito panayam, at ako upang balewalain ang patlang doon, ang paghahambing.
Mayroon itong gawin na may representasyon ng data sa ganyang bagay,
at ako pagpunta sa i-click ang lumikha, at ngayon mapansin bilang ipaalam ko ng lumikha
sa kaliwang bahagi kung saan sinasabi nito na walang database
Sa lalong madaling panahon ang dapat kong makita ang mga database ng panayam.
>> Kung ako ngayon mag-click sa kaliwang bahagi, ang database ng panayam,
mapansin ang aking tab na baguhin nang kaunti.
Mayroon akong na istraktura, SQL, i-export, import at ilang iba pang mga bagay.
Istraktura ay medyo mas blangko.
Walang nahanap na mga talahanayan sa database, tulad ng sinasabi nito dito,
kaya sabihin lumikha ng isang talahanayan, at sabihin magpatuloy at lumikha ng isang talahanayan
gusto ng mga mag-aaral, at kung gaano karaming mga hanay ang gusto naming?
Natin panatilihing ito simpleng, at hayaan ang tala para sa bawat mag-aaral
numero ng ID, pangalan, at ng isang email address.
>> Susubukan naming panatilihin ito simpleng tulad na, kaya 3 haligi, pumunta.
Ang form na makikita mo dito ngayon Medyo magulo at napakalaki,
ngunit hindi namin lamang upang pumunta sa pamamagitan ng ito hilera sa pamamagitan ng hilera, kaya talagang mabilis sabihin bigyan
ang unang haligi sa isang pangalan ng ID para sa natatanging identifier database.
Ito ay isang integer. Ko aktwal na huwag pansinin ang haba at halaga.
Int isang 32 bit hindi mahalaga kung ano ang nag-type ka sa may, kaya natin iwan itong blangko.
Default na halaga, maaari ba akong gawin ito null, tulad ng tinukoy.
Ako pagpunta sa iwanan na nag-iisa. Hayaan ang mga ay hindi mag-alala tungkol sa mga default na halaga.
Sabihin mag-scroll sa paglipas dito sa kanan, mga katangian.
Ito ay kawili-wili.
Natin sige at medyo mang sabihin na ang mga ID dapat na unsigned.
Natin hindi mag-aaksaya ng anumang mga negatibong numero.
>> Hana 0 sa 4 na bilyong, bigyan o,
at pagkatapos ay sabihin hindi pindutin ang anumang ng mga patlang na ito pa doon,
ngunit pagkatapos ay hayaan mo akong mag-type sa pangalan down na dito,
at pagkatapos ay ang iba pang ay email, sa gayon ay ang catch ang email
at pangalan, malinaw naman hindi integer, kaya sabihin baguhin ang mga ito sa ibang field.
Ito lumiliko ang varchar, variable na haba magpasinda,
tulad ng isang string sa isang database ng SQL
ngunit sa isang variable na haba, at iyong aktwal na upang sabihin ito sa maaga ang
maximum na haba ng string, kaya ako pagpunta sa medyo mang
sa pamamagitan ng uri ng convention 255 character.
Ko lubos sabihin 32. Maaari kong sabihin 1,000.
Uri ng pangangailangan upang magpasya para sa iyong sarili batay sa iyong mga demograpiko kung ano ang
pangalan ng pinakamahabang mag-aaral at pumunta sa na numero o ng kaunti mas malaking,
ngunit kung ano ang magaling tungkol sa isang varchar hindi ito pagpunta sa-aaksaya
255 bytes sa pangalan ng bawat mag-aaral.
Kung David hindi ito upang gamitin ang isang buong 255 bytes,
ngunit ang isang upper bound, kaya kukunin ko na pumunta may 255 sa pamamagitan lamang ng convention,
ngunit maaari naming debate na sa ilang mga mas mababang halaga, at para sa email address
lamang upang maging pare-pareho 255, ngunit muli, maaari naming magkaroon ng parehong debate.
Ngunit ako pagpunta sa gawin ang isa sa iba pang mga bagay sa dito sa kanang bahagi.
>> Ano ang makapangyarihang tungkol sa isang database ay na maaari itong gawin ng maraming ng mabigat na nakakataas
o kumplikadong mga trabaho para sa iyo.
Sa partikular, ko talagang hindi pakialam kung ano ang numero ng ID ng aking mag-aaral.
Lamang Ito ay nilalayong maging isang natatanging identifier sa isang database
kaya mayroon akong 32-bit maikli at malinaw na representasyon ng na mag-aaral
kaya na mayroon akong ilang mga paraan ng natatanging pagkilala sa kanila
baka may 2 Davids, halimbawa, sa isang klase.
Sa katunayan, ako pagpunta sa suriin ito Ai box, pagdagdag ng auto,
kaya na ang database, MySQL, figure out
ano ang ID ng bawat bagong ipinasok na mag-aaral ng pagpunta upang maging.
Hindi ko kahit sa pakialam tungkol sa aking code,
at rin ako pagpunta upang pumili ng isang bagay sa ilalim ng menu ng index.
Index ang drop down dito ay pangunahing, natatanging,
index at buong teksto.
Maaari mong marahil hulaan kung ano ng ilang mga bagay na ito ay,
ngunit ito lumiliko sa pamanggit database
programmer o database administrator sa preemptively
bigyan ng mga pahiwatig sa database sa kung ano ang mga patlang
sa isang table ay isang maliit na espesyal.
>> Halimbawa, sa kasong ito ako pagpunta sa sabihin na ang ID
pagpunta sa isang pangunahing index, na kilala bilang isang pangunahing key.
Ano ang ibig sabihin nito ay sa pamamagitan ng kahulugan ID na simula ngayon
ay makilala ang mga mag-aaral sa table na ito.
Mag-aaral Walang ay magkakaroon ng parehong ID dahil ako kapita-pitagan ang hadlang na ito o ito index.
Bukod dito, kung ano ito ay pagpunta sa gawin para sa akin ay ito upang sabihin sa
MySQL na ang ID ay espesyal.
Pinapahalagahan ko lalo na tungkol sa ID, kaya magpatuloy at gawin ang magic ng iyong magarbong istraktura ng data,
bumuo ng ilang uri ng puno.
Karaniwan ito ay isang bagay na tinatawag ang B-puno, na hindi namin tumingin sa linggo ang nakalipas,
ngunit ito ay isa pang tulad istraktura ng data na katulad sa espiritu sa binary puno
at sinusubukan na namin ay tumingin sa, ngunit ito ay sasabihin
sa database ang patlang na ito ay kaya mahalaga na ako malamang
gusto mong upang maghanap dito, magpatuloy at bumuo ng ilang magarbong
istraktura ng data sa memory upang mapabilis ang paghahanap sa gayon ay may perpektong
sila pare-pareho ang oras o hindi bababa sa bilang malapit na hangga't maaari
sa gayon ay hindi ito malipat sa linear paghahanap, na kung saan ay hindi pagpunta sa maging
ang pinaka mataas na gumaganap na diskarte.
Sa pamamagitan ng kaibahan, ang email address ng isang pangunahing key.
>> Sa teorya, ang email address ng lahat ay natatangi, maliban kung nagbabahagi ka ng ilang account,
ngunit sa pangkalahatan ay hindi handa na upang gamitin ang isang bagay tulad ng isang string
bilang isang pangunahing key dahil kung ang layunin nito sa buhay ay para makilala
mga hilera sa talahanayan ng iyong walang dahilan upang gamitin ang mga 255 bytes maximally
para makilala ang isang tao kung maaari kang makakuha ng ang layo mula sa 4 bytes lamang
o 32-bit na int.
Sa pangkalahatan, ang isang pangunahing key ay dapat maikli at maikli at malinaw
at perpektong isang bagay tulad ng isang integer o isang malaking int, na ang mangyayari sa 64 bit.
Ngunit ang isang email address ay dapat na natatangi, at isa ng ang mga tampok ng isang database masyadong
upang ipatupad ang natatangi para sa akin.
Sa pamamagitan ng pagpili ng natatanging dito sa tabi ng email, kahit email mismo
ay scrolled-off ang screen, ako sinasabi sa database
huwag akong pinagkakatiwalaan.
Huwag hayaan mo akong isingit sa database
ang parehong email address dalawang beses, kahit na kung ako ay isang tulala at am hindi
napakabuti sa aking mga ifs at pang tao ifs at aktwal na PHP code
at ko sinasadyang ipaalam ang user magrehistro sa isang umiiral na email address
database sa isa pang antas ng pagtatanggol para sa kawastuhan
upang matiyak na ang na duplicate na email address ay hindi nagtatapos sa talahanayan.
>> Ngayon, sa pamamagitan ng kaibahan, para sa pangalan marahil ay hindi gusto mong gumawa na natatanging
dahil pagkatapos ay may hindi kailanman ay maaaring 2 Davids o 2 Mike Smiths, halimbawa,
sa iyong database, kaya ang isang magpapadala kami iwan lang nag-iisa.
Ako pagpunta sa magpatuloy at i-click ang i-save sa kanang ibaba,
at ang lahat ay mukhang mabuti, ngunit mapansin dito
ito ay isang bahagi na sa ngayon hindi namin ay paggastos ng masyadong maraming oras sa
dahil syntax ay isang maliit na kumplikado, at hindi namin upang lumikha ng talahanayan
lahat ng madalas, ngunit SQL mismo ay isang wika,
ang syntax kung saan dito mismo na nai-highlight ko.
Ano phpMyAdmin talaga ginagawa ito ay lumilikha ng isang web-based na GUI para sa iyo
kung saan maaari mong i-save ang oras at hindi upang mano-manong i-type ang
medyo mahaba SQL query tulad na.
>> Sa ibang salita, kung nais mong mano-manong lumikha ng table na ito,
alinman sa na black and white prompt o kahit sa phpMyAdmin
sa pamamagitan ng paggamit ng iba pang mga tab na ito, ang ang SQL tab na kung saan maaari mong i-type sa anumang query SQL
gusto mo, lantaran, ito ay kinuha sa akin minutong
sa aktwal na maalala ang buong syntax, at kahit pagkatapos ko marahil ay may
ginawa ilang mga typo, kaya ang tool na ito ay kapaki-pakinabang para sa mga bagay tulad na, at ring nakapagtuturo.
Maaari mong simulan upang magpakilala kung ano ang syntax ang
lang ng maganda ang kulay coding phpMyAdmin na ang pagdaragdag ng
para sa aming visual na kaginhawahan.
Ngunit ngayon ipaalam sa gawin ito sa halip.
Hayaan akong pumunta sa insert tab sa itaas, at ipaalam sa akin sige at ipasok halimbawa
isang ID ng sabihin nating aktwal Wala akong pakialam.
Ito ay pagpunta sa auto pagdagdag. Pupunta ako upang ipaalam ang database deal na ito.
Ngunit ay hindi ko David, at ang aking email ay dapat na malan@harvard.edu.
>> Natin sige dito at ilalagay sa Mike Smith bilang ng isa pa.
Bibigyan kita ng aking sarili sa isang huling pangalan pati na rin,
at magpapadala kami sa kanya na smith@example.com,
at pagkatapos ay kung saan ko pumunta sa tabi?
Well, mukhang go ang pindutan upang i-click, at voila.
Mapansin sa tuktok 2 mga hilera na ipinasok.
Ito ay ang aktwal na SQL query.
Na ang phpMyAdmin tool na pinaandar para sa akin,
ngunit sa dulo resulta, paunawa, kung ako ngayon pumunta sa tab ng pag-browse,
upang makita ang 2 mga hilera sa talahanayan na ito, napaka nakapagpapaalaala aesthetically
ng talahanayan ng nakita natin mas maaga para sa aming mga user mula sa pset 7,
isa na David Malan, isa na ngayon ang Mike Smith.
Ngunit lamang maging malinaw, hindi ko kailangang gamitin ang phpMyAdmin,
at sa katunayan, ikaw ay pagpunta sa lalong madaling panahon ang pagsulat ng code para sa pset 7
na automates ang proseso ng pagdaragdag ng mga hilera, pagtanggal ng mga hilera, mga pag-update ng mga hilera at ang mga tulad ng,
kaya ipaalam sa akin sa halip pumunta sa SQL tab up dito
at i-type piliin * mula sa mga mag-aaral kung saan
email = "malan@harvard.edu."
>> Sa ibang salita ipagpalagay na ngayon ikaw ay may
ilang HTML form, at ang mga uri ng user sa kanilang mga email address, bukod sa iba pang mga patlang,
at ang layunin ngayon sa PHP sa likod code ng pagtatapos
upang aktwal na maghanap ng iba pang mga detalye na gumagamit.
Ano ang iyong buong pangalan? Ano ang iyong numero ng ID?
Maaari mong magsulat ng isang SQL query tulad nito, piliin ang * mula sa mag-aaral
kung saan ang email = "malan@harvard.edu."
At kung ako pagkatapos ay i-click ang pumunta, mapapansin na ang dapat kong, at sa katunayan ko, kumuha ng isang hilera lang.
Mike ay tinanggal mula sa hanay ng resulta, pati na ang koleksyon ng mga hilera
ay karaniwang tinatawag na, dahil hindi siya ang parehong email address bilang akin.
>> Ngayon, muli, dito para pset 7 makikita mo gamitin phpMyAdmin bilang isang administrative tool
at paturo tool upang matuto ang iyong paraan
sa buong mundo ng SQL, ngunit sa pagtatapos ng araw
ka pagpunta sa sumusulat ng mga query na ito sa loob ng aktwal na PHP code,
at kaya manatiling nakatutok sa ng walkthrough Zamyla partikular
kung saan makakakuha ka ng isang tour ng code ng pamamahagi para sa hanay ng problema
kung saan binigyan ka namin ng hindi lamang ang aesthetics para sa pahina ng pag-login
at ang magaling logo sexy na nagsasabing CS50 Finance, ngunit namin ang nagbigay sa iyo ng
ng grupo ng mga function na ay gumawa ng iyong buhay ng kaunti mas madali.
Rin namin ang nakasulat ang bahagi ng pset para sa iyo,
ang login bahagi nito partikular, upang bigyan ka ng isang pakiramdam ng isang kinatawan disenyo
na aktwal na gumagamit ng controller, halimbawa, index.php,
login.php at tulad, at pagkatapos ay makikita mo ay mayroon ding pset template direktoryo
na may lahat ng iyong mga tanawin, lahat ng aesthetics.
At sa gayon ang pangkalahatang workflow sa pset 7 ay pagpunta sa na
bisitahin ang iyong mga gumagamit ng controller sa pamamagitan ng isang URL sa isang browser.
Na controller ay naglalaman ng PHP code na iyong sinulat ni, at sa loob ng iyong PHP code
maaaring ilang mga linya ng SQL Nested in sa pagitan ng mga double quote
at ang pumasa sa isang function namin sinulat ni tinatawag query
na makakatulong sa iyo na makipag-usap sa database nang hindi gumagamit ng isang bagay tulad ng
isang administrative tool tulad phpMyAdmin.
>> Magagawa mong magsulat ng SQL pahayag sa PHP code
at kumuha ng PHP array ng hanay ng resulta,
ng mga hilera na aktwal na tumutugma sa query na iyon.
At katulad magagawa mong upang gawin ang mga pagsingit o tinatanggal
o mga update o tulad ng, ang syntax kung saan ay medyo katulad,
at makikita mo mula sa ilang mga online na mga sanggunian, mula sa pamamahagi ng code
at mula sa pset mag-empake mismo eksakto kung paano pumunta tungkol sa paggawa na.
Napagtanto huli talaga namin ka lamang scratching sa ibabaw ng SQL
at ng MySQL, ngunit ang kapangyarihan nito talagang na pinakakawalan nito isang
tumuon sa mga problema na nais mo upang malutas, ang mga kaso ng paggamit nais mong ipatupad
nang hindi na kinakailangang mag-alala nang lubos ng mas maraming, hindi bababa sa maagang sa,
tungkol sa kung saan at kung paano upang mag-imbak at maghanap sa iyong mga database,
at ito ay medyo literal kung saan Facebook mismo nakuha ang kanyang panimulang
gamit ang MySQL at pagkatapos gamit ang higit pa na mga server ng MySQL at pagkatapos pang MySQL server
bago mahaba hanggang pagkatapos sila ay talagang simulan ang pag-iisip ng husto tungkol sa kung paano
iimbak ng data, kung paano upang mag-imbak ng mga bagay mas mahusay,
kaya kahit na isasaalang-alang namin para sa ipinagkaloob katunayan ang na-index at natatanging mga hadlang
at iba pa lamang gumana may isang kawili-wiling pakikipag-usap
na ito ay maaaring lahat kalaunan humantong sa, kaya Napagtanto na lang kami scratching sa ibabaw
ng kung ano ay maaaring kalaunan para sa iyo o sa iyong proyekto maging lubos isang bit ng malaking data.
>> Gamit na sinabi, sabihin magtapos dito, at kami na nakikita mo sa susunod na linggo.
[CS50.TV]