[Powered by Google Translate] [Wythnos 8, Parhad]
[David J. Malan] [Harvard University]
[Mae hyn yn CS50.] [CS50.TV]
>> Mae hyn yn CS50, felly dyma'r diwedd Wythnos 8 yma.
Rydym, wrth gwrs, wedi cael tipyn o corwynt yn gynharach yr wythnos hon,
felly ar hyn o bryd y mae mewn gwirionedd dim ond chi a fi yn y neuadd ddarlith,
ond heddiw rydym yn parhau ein sgwrs am PHP
ac am raglennu we yn fwy cyffredinol, ac rydym hefyd yn cyflwyno y syniad
o gronfeydd data, yn enwedig un a elwir yn MySQL, sy'n eithaf poblogaidd y dyddiau hyn,
i raddau helaeth oherwydd ei scalability, yn ogystal ag oherwydd ei fod yn ffynhonnell am ddim ac yn agored.
>> Ond yn gyntaf, yn edrych ar ble rydym yn gadael i ffwrdd y tro diwethaf.
Dwyn i gof ein bod yn edrych ar y nifer o enghreifftiau Frosh IMS,
ac roedd hyn yn y ffurflen erchyll fy mod yn dod i fyny gyda rhai 15 mlynedd yn ôl +
er mwyn cael myfyrwyr ar gofrestr y campws ar gyfer chwaraeon freshman rhyngfurol
heb holi i orfod daith anymore ar draws yr iard i Wigglesworth
llithro darn o bapur corfforol o dan ddrws rhai proctor yn.
Yn hytrach, rydym yn symud popeth ar-lein, ond i wneud hynny mae angen i wneud y defnydd
o dechnolegau ychydig, felly un, roedd angen HTML, hyperdestun markup iaith,
sydd unwaith eto yn yr iaith hon markup yr ydych yn gwneud tudalennau gwe strwythurol.
>> Gan ddefnyddio ychydig o CSS y dyddiau hyn, dalennau arddull rhaeadru,
lle rydym yn defnyddio stylizations y dudalen we gan ddefnyddio cystrawen ychydig yn wahanol,
tra oedd y HTML i gyd am y strwythur hynny.
Mae angen i ni gyflwyno we iaith raglennu.
Yn yr achos hwn, byddwn yn defnyddio PHP, a PHP yn mynd i ganiatáu i ni
i gynnwys allbwn ddeinamig yn ogystal â gwneud pethau rhaglennol fel
anfon negeseuon e-bost, fel yr oedd yr achos ar y nodyn i ni adael yr wythnos diwethaf.
>> Dwyn i gof bod y cod ar gyfer hyn oedd mewn 2 ran.
Un, cawsom froshims3.php,
ac roedd hyn yn bennaf markup gyda ffurflen HTML tu mewn iddo,
ychydig bach o CSS i fyny yma yn y briodweddau arddull
fel y byddai y ffurflen ei hun yn canolbwyntio ar y dudalen, ond y tu hwnt i'r
rydym wedi cael rhywfaint o fewnbwn ffurf cynrychioliadol, maes testun, a checkbox,
rhywfaint o radio botymau, bwydlen dethol, a botwm cyflwyno.
A thrwy y ffurflen hon, rydym yn cyflwyno i ffeil a alwyd golwg register3.php,
sydd ei hun yn edrych yn rhywbeth bach fel hyn.
Yn awr, y rhan fwyaf o'r cod yn register3.php, galw i gof, yn ymwneud â e-bost.
Gwnaeth ychydig o ddilysu o'r ffurflen a gyflwynwyd i wneud yn siŵr
bod y caeau yn cael eu darparu mewn gwirionedd a ddisgwylid.
Yna byddem ni'n ei alw rhai swyddogaethau PHP gan ddefnyddio ychydig cystrawen newydd,
hyd yn oed er 'i' fenthyg o C.
>> Mae'r gweithredwr saeth yn ein galluogi i wneud defnydd o rywbeth a elwir yn gwrthrych-oriented rhaglennu.
Ni fyddwn yn mynd i fod yn fanwl yma, ond yn gwybod ar hyn o bryd
mae'n ffordd o gael swyddogaethau sy'n gysylltiedig â gwrthrychau,
sef math arbennig o strwythur, fel y gwelsom yn C.
Ond am nawr, dim ond yn cymryd ar ffydd mai hwn yw'r gystrawen gywir i'w defnyddio
wrth ddefnyddio llyfrgell fel hyn llyfrgell PHPMailer.
Ac yna erbyn diwedd y ffeil rydym wedi creu deinamig e-bost
a gafodd eu hanfon at fy nghyfrif jharvard@cs50.net
o fy nghyfrif jharvard@cs50.net,
ac rydym yn gwybod y defnyddiwr yn unol â hynny eu bod wedi cael eu cofrestru ar gyfer y gamp hon.
Dyna 'n bert lawer yr hyn y mae'r safle IMS Frosh wnaeth yr holl flynyddoedd hynny yn ôl
pan fyddaf yn ei rhoi ar waith, a roddwyd, mewn iaith wahanol,
ond mae'n dangos i chi efallai y pŵer sydd gennych
yn awr y gallwch fynegi eich hun nid yn unig yn programmatically
ar lefel isel mewn iaith fel C ond ar lefel llawer uwch
gyda'r ceisiadau hyn y byd go iawn fel e-bost i mewn gwirionedd yn datrys
rhai problemau byd go iawn.
>> Yn awr, wrth gwrs, hyd yn oed er fy mod yn defnyddio'r sgript i gynhyrchu rhai
negeseuon e-bost ddeinamig o jharvard@cs50.net, sydd yn wir yn cyfrif
fy mod yn cael mynediad at, peidiwch â bod yn eithaf gofalus i anfon
bost yn unig o gyfrifon sydd mewn gwirionedd yn eich pen eich hun,
rhag pethau yn mynd â chi mewn ychydig o ddŵr poeth mewn bywyd.
Gyda dweud hynny, gadewch i ni bellach yn trosglwyddo i ddatrys problem wahanol yn gyfan gwbl,
bod o wladwriaethau cadw.
Nawr, beth mae hyn yn ei olygu mewn gwirionedd?
HTTP, y protocol hwn trosglwyddo hyperdestun,
mewn gwirionedd yn brotocol heb ddinasyddiaeth, a beth mae hyn yn ei olygu yw bod
pan fyddwch yn tynnu i fyny rhywbeth fel Google.com ac yna daro chofnoda
fel arfer eich porwr wedi rhyw fath o eicon nyddu wedyn
arwain at rai tudalen ar y we yn cael eu llwytho i lawr,
ac yna y eicon bach yn stopio nyddu, a bod yn wir yn awgrymu
bod HTTP wedi cwblhau rhyw fath o gysylltiad â'r gweinydd a dyna ni.
HTTP yn heb ddinasyddiaeth yn yr ystyr nad yw'n cynnal
cysylltiad parhaus i 'r gweinyddwr yn yr un ffordd Skype yn
neu Gchat ei wneud oherwydd gyda HTTP
y rhagdybiaeth yw bod unwaith y byddwch wedi lwytho tudalen ar y we dyna ni.
>> Nawr, mewn gwirionedd y dyddiau hyn ar safleoedd fel Facebook a Google Maps
a Twitter ac yn y blaen mae ddeinamig llawer mwy lle
hyd yn oed ar ôl y eicon stopio troelli gallwch mewn gwirionedd gael diweddariadau mwy o
gan y gweinydd, tweets mwy, mwy o statws diweddariadau ar Facebook ac yn y blaen.
Ond hyd yn oed fod yn defnyddio techneg y byddwn yn siarad am mewn wythnos neu ddwy
a elwir yn Ajax defnyddio iaith o'r enw JavaScript,
ond ar ddiwedd y dydd, HTTP yn dal i fod heb ddinasyddiaeth.
Ac eto os ydych chi am rywsut gofio pethau am ddefnyddiwr
hyd yn oed ar ôl iddyn nhw datgysylltu oddi wrth eich gweinydd
PHP yn fforddio i chi ffordd o wneud hyn
oherwydd, fel y gwelsom tro diwethaf, PHP nifer o superglobals,
a superglobal yw, unwaith eto, newidyn byd-eang arbennig
sydd wedi rhoi i chi gan y gweinydd gwe a thrwy PHP ei hun.
>> Nid oes rhaid i chi wneud unrhyw beth i roi gwerthoedd ynddo,
ac ymhlith y superglobals rydym wedi gweld hyd yn hyn yn cael eu cael ac yn ôl,
a dyna lle mae caeau ffurflen yn cael eu rhoi yn awtomatig ar eich cyfer chi,
yn ogystal ag ychydig o rai eraill nad ydym wedi gweld eto.
Y tu mewn o $ _server rhai newidynnau arbennig yn ymwneud â'r gweinydd ei hun.
Beth yw'r cyfeiriad IP, beth oedd protocol, HTTP neu HTTPS ydych yn defnyddio,
pa ddull cais wnaethoch chi ei ddefnyddio ac yn y blaen, felly mae rhai diddorol,
manylion llawn sudd am y gweinydd, ac yn wir, y defnyddiwr i mewn 'na hefyd.
Mae $ _cookie, a dyma lle y pethau hyn a elwir yn cwcis yn cael eu storio.
Ni fyddwn yn treulio amser ar cwcis eu hunain heddiw,
ond yn gwybod ar hyn o bryd bod cwci yn unig yw darn bach o wybodaeth
y gall gweinydd gwe plannu ar borwr gwe
ac yn troi ei RAM neu yrru ei cyfrifiadur caled
i storio gwybodaeth am ddefnyddiwr, er enghraifft, eu henw defnyddiwr
fel nad oes rhaid iddynt deipio bob tro y maent yn logio i mewn neu ryw
rhif unigryw neu dynodwr ar gyfer y defnyddiwr
fel nad oes rhaid i chi plagio iddynt yr un math o gwestiynau am
dewisiadau yn y dyfodol, ond mae'r rhan fwyaf o ddiddordeb
ar hyn o bryd yn $ _session.
>> Mae hyn yn superglobal, sydd, fel y lleill, yn cael ei rhoi i chi yn awtomatig gan PHP
pan fyddwch yn ysgrifennu PHP seiliedig Gwefannau
Gall storio unrhyw beth rydych eisiau, llinynnau, cyfanrifau,
bwyntiau fel y bo'r angen, gwerthoedd, araeau, gwrthrychau,
mewn gwirionedd unrhyw beth yr ydych ei eisiau, ac mae'n caniatáu i chi storio yn y fath fodd
hyd yn oed os yw'r defnyddiwr yn ymweld â chi yn awr ac yna
yn dod yn ôl munud o hyn neu 5 munud o hyn oherwydd
maent yn cymryd eu hamser cyn clicio rhyw gysylltiad arall
Bydd PHP yn sicrhau bod beth bynnag yr ydych roi yn y superglobal sesiwn
Bydd funudau munud neu 5 yn ôl yn dal i fod yno pan fydd y ffurflenni defnyddiwr.
Ac o dan y cwfl y superglobal yn cael ei weithredu drwy gyfrwng
pethau hynny a elwir yn 'cookies', ond ar hyn o bryd, dim ond yn tynnu
lle mae'n fath sy'n cyfateb rhaglennol o trol siopa.
Beth bynnag y byddwch, y rhaglennydd, eu rhoi yn y
Bydd amrywiaeth superglobal cysylltiadol fod yno ryw nifer o funudau yn ddiweddarach
nes i chi ddileu neu nes bod y defnyddiwr ymddiswyddo porwr ef neu hi yn gyfan gwbl.
>> Gadewch i ni edrych ar enghraifft o'r ffordd y mae'r peth yn cael ei ddefnyddio mewn gwirionedd.
Yn counter.php ymhlith darnau heddiw o god
gennym y llinell ganlynol.
Ar ddechrau'r ffeil hon mae gennym griw o sylwadau glas, sy'n cael eu anniddorol ar hyn o bryd.
Ond mewn llinell 13 mae gennym linell newydd,
session_start, ac sydd mewn gwirionedd yn gwneud yn union beth mae'n ei ddweud.
Mae'n dechrau sesiynau.
Mae'n eich galluogi i ddefnyddio'r mawr superglobal $ _session, ac mae mor syml â hynny.
Nawr, os ydym yn mynd i edrych ar llinell 16, gadewch i ni geisio chyfrif i maes beth y dudalen gwefan hon yn mynd i wneud.
Os (ISSET ($ _SESSION ["gwrth"]) ac yna mynd yn ei flaen
a'i storio yn y newidyn cownter, cownter llythrennau bach,
$ _SESSION ["Gwrth"].
Mae hyn yn ymddangos i fod yn datgan newidyn lleol o'r enw cownter
y tu mewn y mae'n ei rhoi copi o beth bynnag sydd tu mewn i'r superglobal
a elwir yn sesiwn yn y lleoliad "cownter."
Else, mae'n debyg, mae hyn yn amrywiol cownter bach lleol, yn cael ei ymgychwyn i 0.
>> Ond yna ychydig o linellau yn ddiweddarach mewn 26 rhybudd bod copi y sesiwn o cownter,
ei allweddol, mae gan gymer gwerth newydd sy'n ei werth cyfredol, yn ogystal 1.
Yn fyr, y ffeil hon yn ymddangos i fod diweddaru
cownter sy'n cael ei storio tu mewn i'r superglobal sesiwn
drwy incrementing erbyn 1, ond yn gyntaf yn cadw copi o werth blaenorol
drwy ei storio mewn newidyn lleol o'r enw $ cownter,
ac yna i lawr yma gadewch i ni weld beth sydd ar ôl.
Mae'n troi allan ei 'n bert lawer yn union HTML.
Ar waelod y dudalen hon rydym yn gweld yn unol 37 a wyf wedi ymweld â'r safle
nifer o weithiau cownter, felly mae nodweddion cwpl diddorol yma.
Un, mae hyn yn amlwg yn amrywio, ond nid yw'n ddigon i ddim ond rhoi
$ Cownter yn y corff eich HTML oherwydd, wrth gwrs
os mai dim ond yno ymhlith eich HTML PHP yn mynd i gymryd yn ganiataol bod dim ond HTML.
Byddwch yn llythrennol am $ cownter i gael ei argraffu ar y sgrin.
>> Ond yn hytrach na drwy alw i mewn i PHP modd
gyda'r darn hwn o gystrawen gallwn ddynamig mewnosod gwerth yma
debyg iawn o ran ysbryd i'r hyn a wnaethom y tro diwethaf gyda
gosod gwerthoedd i mewn i llinynnau.
Mewn gwirionedd, mae hyn yn unig yw nodiant llaw-fer am ddweud rhywbeth fel hyn yn llythrennol,
print ($ cownter) neu hyd yn oed rhywbeth fel printf (% s, cownter),
neu hyd yn oed, oherwydd efallai y byddwch wedi gweld ar-lein neu mewn gwerslyfrau,
mae swyddogaeth yn PHP a elwir yn adlais
sy'n gwneud yr un peth, a phob un o'r rheini'n ffyrdd yn unig bellach yn hirwyntog
o ddweud <? =.
Yn yr achos hwn un nad oes angen i chi roi
y PHP gair ar ôl y marc cwestiwn.
Mae hyn yn nodiant llaw-fer ar gyfer, unwaith eto, yr hyn rydym yn unig yn gweld hyn o bryd yn ôl
sy'n cael ei adleisio rhywfaint o werth.
>> Gadewch i ni weld beth oedd y canlyniad diwedd y gwirionedd.
Gadewch i mi fynd dros i'n counter.php ffeil,
a byddwn yn gweld bod David dim ond gwneud camgymeriad trwy chwarae gyda'r cod yno.
Gadewch i ni fynd ateb beth bynnag y gwyneb i fyny,
ac y gwall yn ymddangos i fod yno, wedi mynd, ar-lein 37.
Yn ôl i ben y dudalen hon rwyf wedi ymweld â'r safle 0 gwaith.
Wel, gadewch i ni fynd yn ei flaen yn awr, ac ar ben y porwr, cliciwch ar y
ail-lwytho eicon, a chliciwch mi ail-lwytho,
ac yn awr yr wyf wedi ymweld 1 safle amser, 2, 3, 4, 5, 6, 7, 8.
Ac yn wir, os ydym yn edrych ar y ffynhonnell y dudalen hon mae'r cod ffynhonnell wirioneddol yn newid,
ac yn sylwi ar absenoldeb llwyr unrhyw PHP, ac mae hynny oherwydd
PHP cod yn cael ei werthuso neu ddehongli ochr y gweinydd,
ac felly mae hynny'n golygu bod allbwn y sgript PHP sydd ei anfon yn y pen draw at y porwr,
sydd yn yr achos hwn rhywfaint o HTML amrwd a rhai destun amrwd.
Beth sy'n mynd ymlaen yma?
>> Wel, gyda llinellau cymharol ychydig o god yr wyf yn gallu storio
gyson dros gyfnod o sawl eiliad, neu os ydym yn aros yn ddigon hir,
munud, hyd yn oed awr, rhywfaint o werth mewn ffordd sy'n gwneud HTTP
ymddangos fel pe stateful rydym wedi cadw
cyswllt hwn at 'r gweinyddwr, ac' i 'jyst cofio hyn yr wyf yn dweud y tro diwethaf,
ond mewn gwirionedd mae criw cyfan o gymhlethdod mynd ymlaen o dan y cwfl
gynnwys cwcis sy'n ei galluogi PHP i roi fy hyn yn rhith
y siopa cart-fel nodwedd.
Am y tro, yn enghraifft ddibwys lle'r ydym yn dim ond ei storio yn gyfanrif,
ond bydd y nodwedd honno yn dod yn ôl i fod o werth mawr
wrth inni ddechrau sôn am brosiectau mwy cymhleth,
yn eu plith problem gosod 7.
Dyma eich problem olaf a osodwyd yn CS50.
Rwy'n gwybod, mae mor drist, ond yr hyn y byddwch yn dod o hyd i yw ein bod ni'n mynd i ddod i'r casgliad
y rhan hon o'r semester gan gwirionedd trawsnewid
o'r cyd-destun o C yn sicr i gyd-destun PHP
ond tra'n defnyddio rhai o'r hanfodion un iawn
rydym wedi trafod ers peth amser.
>> Yr amcan gyda pset 7 yn gweithredu CS50 Cyllid,
sydd yn eich fersiwn eich hun o Yahoo Cyllid neu Google Cyllid
neu hyd yn oed Etrade.com lle mae gennych y gallu i
edrych i fyny prisiau stoc ar gyfer symbolau a roddir, ond hyd yn oed mwy na hynny
gennych y gallu i "brynu" a "gwerthu" stociau
sy'n cael eu masnachu ar gyfnewidfeydd stoc gwahanol oherwydd fod hyn yn dudalen hafan
yma yn awgrymu, sydd mewn gwirionedd i ba raddau yr ydym wedi dechrau
y set broblem i chi, mae gennych ffurflen mewngofnodi sydd wedi gofyn am enw defnyddiwr a chyfrinair.
Mae ganddo botwm cyflwyno, ond ar ôl hynny, gan y byddwn yn y pen draw yn gweld,
nid oes dim mewn gwirionedd yn mynd ymlaen o dan y cwfl eto oherwydd ei fod yn
yn parhau i chi i weithredu'r gallu i gofrestru defnyddwyr newydd,
y gallu i brynu stociau, i werthu stociau,
i mewn gwirionedd yn edrych i fyny prisiau stoc bresennol.
>> Ac yn wir, bydd hyn fod mor byd go iawn ag y bo modd oherwydd ein bod yn gwneud
yn cynnwys ychydig o god a fydd yn caniatáu i chi gyda swyddogaeth unigol
i holi Yahoo Cyllid, sy'n rhyfeddol o wneud data ar gael am ddim
am edrych i fyny prisiau stoc yn seiliedig ar y symbol stoc neu Ticker symbol,
ac rydych yn mynd yn ôl y pris stoc bresennol y dydd.
Bydd y data rydych chi mewn gwirionedd weld yn y pset penodol fod yn
am y byd go iawn fel ag y gall wneud fel eich bod chi mewn gwirionedd yn rhyngwynebu
â stociau byd go iawn, prisiau byd go iawn,
a byddwn yn gweld faint o arian y gallwch ei wneud efallai
dros y dyddiau nesaf nifer o chwarae gyda eich set problem eich hun.
>> Ond gadewch i ni yn gyntaf yn gosod y llwyfan ar gyfer sut i ddylunio rhywbeth sy'n sicr yn fwy cymhleth
na counter.php, sy'n fwy cymhleth nag unrhyw un o'r enghreifftiau Frosh IMS hyd yn hyn,
a gadewch i ni geisio cyflwyno patrymau ychydig yma yn ein galluogi
ar gyfer pset 7 ac efallai ar gyfer eich prosiect terfynol, os ydych yn gwneud rhywbeth yn seiliedig ar y we
i gadw eich cod drefnu yn dda, i gadw eich hun gall,
ac i gymryd cam tuag at gydweithio, boed yn CS50 brosiect terfynol
neu wedi hynny os ydych yn parhau i raglennu rhywbeth yn y dyfodol.
Mae hwn yn batrwm dylunio cyffredinol
mewn gwyddoniaeth cyfrifiadurol ac mewn datblygu meddalwedd yn fwy cyffredinol
a elwir yn MVC, model barn rheolwr,
ac mae hyn yn acronym gwirion sy'n disgrifio syniad neis iawn,
sef y gwahanu o wahanol agweddau ar raglen,
yn benodol cadw ar wahân y rhesymeg neu rhesymeg busnes o wefan
fel bod unrhyw beth sy'n cynnwys pethau fel
galw swyddogaethau a ymholi cronfeydd data ac yn y blaen
digwydd ni ymysg eich HTML
ond yn hytrach mewn ffeiliau ar wahân, ac yn wir, mae hyn yn ffeilio un
fel arfer eich bod wedi galw y rheolwr
hynny'n wir yn y ymennydd y tu ôl y llawdriniaeth, a byddwn yn gweld enghraifft
o hyn mewn dim ond hyn o bryd.
>> Mae model sy'n cael ei rhaglennu cod
sy'n gwneud y siarad â'ch cronfeydd data, sy'n siarad â Yahoo Cyllid ac yn y blaen,
ac yna mae y V yn MVC, barn,
yr holl bethau sydd wedi ymwneud â estheteg, y ffeiliau sydd mewn gwirionedd yn cynnwys
eich HTML, efallai eich CSS ac yn y blaen.
Y syniad yma, gan fod y darlun hwn yn awgrymu, yw bod y rheolwr
yn y ffeil, gan y byddwn cyn hir yn gweld ac fel y byddwch yn gweld yn arbennig o pset 7,
bod y byd yn siarad â drwy eu porwyr gwe.
Dyna y ffeil sy'n cael ei ymweld ar y rhyngrwyd gyhoeddus,
ond y rheolwr siarad â potensial i fod yn model,
sy'n un neu fwy o ffeiliau eraill sy'n cynnwys cod yn ymwneud â data,
cod yn ymwneud â chronfeydd data ac yn y blaen, ac yna y mae'n siarad â
y rheolwr un neu fwy o ffeiliau eraill a elwir yn barn,
sef y estheteg dudalen ar y we, templedi o ryw fath,
allai gymryd rhywfaint o ddata fel mewnbwn, ond ar ddiwedd y dydd
dylai'r rhesymeg yn unig y tu mewn o olygfa fydd y rendro o'r data hwnnw,
ailadrodd dros dolen ac mewn gwirionedd yn poeri allan rhai
HTML-seiliedig rendition ohono neu hyd yn oed rhywbeth fel PDF.
>> Beth braf am MVC yw y gallwch gael barn wahanol
seiliedig ar y math o ddyfais, yn seiliedig ar y math o fformat ffeil yr ydych yn ei
yn awyddus i ddangos i'r defnyddiwr.
Gadewch i ni edrych ar ychydig o enghreifftiau yn gynyddol fwy cymhleth ac wedi'i gynllunio'n dda
drwy ddechrau cyntaf gyda fersiwn 0 yma.
Gadewch i mi fynd yn ei flaen ac yn agor i fyny yn ein cyfeiriadur MVC heddiw
ffeil o'r enw index.php yn y cyfeiriadur 0.
Sylwi ar hyn yn wefan super syml ac yn anfoddhaol
sy'n fath o fersiwn 0 o hafan gyfer CS50,
a sylwi sut y mae gennym gyswllt i Darlithoedd, mae gennym gyswllt â Maes Llafur,
ac os wyf yn dilyn y ddolen i Darlithoedd rhybudd bod y URL
i fyny top yn mynd i newid i lectures.php.
Os byddaf yna dilynwch y ddolen i Wythnos 1 hysbysiad bod y newidiadau URL i week1.php.
Mae'n ymddangos i fod yn strwythur hierarchaidd eithaf syml yma.
>> Gadewch i ni edrych gyflym o dan y cwfl ar sut y caiff hyn ei osod allan,
ac yn wir, os wyf yn edrych ar index.php ei fod yn eithaf syml.
Yn wir, hyd yn oed er fy mod yn galw hyn yn ffeil PHP does dim cod rhaglennu gwirioneddol.
Mae yna sylw i mi ysgrifennu yma yn PHP yn unig fel nad yw'r defnyddiwr yn y pen draw ei weld.
Wrth gwrs, fel o'r blaen, unrhyw beth sy'n rhwng y tagiau PHP
yn cael ei dehongli, hyd yn oed os yw'n sylwadau, ac i ddehongli sylw
yn golygu dim ond i daflu i ffwrdd ar ddiwedd y dydd ac nid mewn gwirionedd
ei anfon at y porwr, felly mae popeth yma yn unig estheteg.
Os byddaf yn agor yn yr un modd lectures.php hyn hefyd yn unig yw ffeil godio caled.
Mae'n digwydd i gael ei alw rhywbeth. Php,
ond y mae mewn gwirionedd yn unig. html, a week1.php, week2.php
yn yr un modd yn unig markup, felly mae 'na griw o ddiffygion y cynllun.
Un, mae'n llawer iawn o gopi / past.
Er bod yr unig beth sydd wedi newid ymhlith y ffeiliau hyn yn y rhestr di-drefn,
y tagiau li, yr wyf serch hynny wedi doc fath, HTML, y pennaeth,
teitl, corfforol agos, yn agos HTML a mwy
ym mhob ffeil sengl, sy'n golygu os wyf erioed wedi eisiau ad-drefnu
y dudalen gwefan hon neu ei restylize rhaid i mi fynd i mewn a newid
yr holl ffeiliau hyn â llaw neu gyda rhyw enfawr darganfod ac ailosod.
>> Gadewch i ni gymryd cam tuag at ddyluniad gallach, yn hirach meddwl mewn fersiwn 1 yma
lle yn unol â'r ddarllen i mi ein bod wedi cynnwys fel y gallwch chi chwarae ynghyd â
rhain yn fwy hamddenol ar fyr rybudd gartref sydd gennym yma
crynodeb o'r ffeil mewn fersiwn 1 o'r safle hwn,
ac mae'n ymddangos fy mod i wedi cymryd ei fod ar fy hun i ffactor allan
rhai cod cyffredin, header.php a footer.php.
Wel, gadewch i ni edrych ar yr hyn sydd y tu mewn y cyntaf o'r rheiny.
Header.php yn edrych yn gyfarwydd,
ond sylwi ble mae'n cael eu torri i ffwrdd?
Dde ar ôl llinell 19, felly dyna popeth a oedd yn gyffredin
oddi wrth y ffeiliau index.php lectures.php,
wythnos1 a week2.php gan yr enghraifft flaenorol.
Beth wnes i oedd copi a phopeth torri a oedd yn gyffredin i'r holl ffeiliau,
ei roi mewn ffeil pennawd ar wahân, ac yn yr un modd yn footer.php
wnes i gymhwyso'r un egwyddor lle mae'r llinellau yn unig yn ddiddorol
yn footer.php yw'r ddwy, corff agos a HTML yn agos.
>> Ond beth mae hyn yn golygu yn awr yw bod yn y fersiwn newydd
o rybudd index.php faint symlach gall eu cael.
Roddwyd, ychydig yn fwy cryptic edrych, ychydig yn llai 'n athrylithgar
i ddilyn top i'r gwaelod, ond mae fy Nuw, hynny i gyd diswyddo yn mynd yn awr.
Rydym yn gofyn am ddefnyddio swyddogaeth PHP a elwir yn llythrennol ei gwneud yn ofynnol i fyny top,
sydd yn iawn atgoffa rhywun, galw i gof, o C # yn cynnwys mecanwaith.
Rydym yn gofyn header.php ar y brig.
Rydym yn gofyn footer.php ar y gwaelod, a'r unig beth sy'n wahanol
neu arbennig am y ffeil yn cynnwys sydd wedi golygu i fod yn unigryw iddo.
Os wyf yn wedyn yn mynd i mewn, dyweder, lectures.php, yr un egwyddor yn berthnasol.
Unwaith eto, mae rhai sylwadau i fyny top, ond yna yr wyf yn gofyn pennawd, ei gwneud yn ofynnol troedyn,
a rhwng ei fod dim ond y cynnwys sydd wedi newid mewn gwirionedd.
Ac os ydym yn edrych i mewn Wythnos 1 Wythnos 2 a byddem yn gweld
fod yr un egwyddor wedi cael eu defnyddio yno.
Wel, nid ydym yn gwneud yn eithaf yno.
>> Gadewch i ni edrych ar fersiwn 2, sydd â strwythur tebyg,
ond sylwi yn awr yr wyf wedi cyflwyno rhywbeth arall.
Yn llinell 10 Rwyf wedi cyflwyno helpers.php,
yn ôl pob golwg yn cynnwys swyddogaethau cynorthwyol.
Mae swyddogaeth cynorthwy-ydd yn gyffredinol yn swyddogaeth cymharol fyr
eich bod yn ysgrifennu i helpu chi allan mewn gwahanol leoedd,
a gadewch i ni weld beth sydd y tu mewn o helpers.php.
Yn yr achos hwn, mae'n edrych fel ei fod wedi 2 swyddogaethau.
Dwyn i gof y diwrnod o'r blaen gyda ein henghraifft ciwb
gallwch chi ddiffinio eich swyddogaethau eu hunain yn PHP, a beth yr wyf wedi ei wneud nawr yw fy mod i wedi
swyddogaethau diffiniedig a elwir yn golygu troedyn a rendr pennawd,
y cyntaf sy'n cymryd paramedr o'r enw data,
y mae eu gwerth yn ddiofyn arae wag, fel yr awgrymwyd yno,
a gallwn mewn gwirionedd yn ysgrifennu hwn hyd yn oed yn fwy cryno yn y fersiwn ddiweddaraf o PHP
trwy ddweud braced agored sgwâr, ar gau sgwâr braced.
Mae hynny'n golygu amrywiaeth gwag o faint 0 ond serch hynny arae.
>> Mae'r swyddogaeth hon yn dyfyniad ychydig yn arbennig yn y
beth mae'n ei wneud yw cymryd fel ei ddadl arae cysylltiadol
sydd â 0 neu fwy o barau gwerth allweddol, ac os oes gennych allweddol o foo
a gwerth bar swyddogaeth dyfyniad
yn creu sefyllfa lle yn awr, fel y llinell 11,
gennych newidyn lleol o'r enw $ foo y mae eu gwerth yn bar.
Ac os oedd gennych fwy o allweddi a gwerthoedd yn yr amrywiaeth data,
Byddai yr un modd yn cael eu tynnu i mewn i'r cwmpas leol
gofod enw neu fel y footer.php a
yr un syniad i lawr yma fel y header.php
cael mynediad at y newidynnau hynny.
Yn wir, gadewch i mi agor unwaith eto header.php
a thynnu sylw at yn awr yr hyn y mae'n edrych fel yn y fersiwn hwn.
>> Yn hytrach na caled codio CS50 fel y teitl ar gyfer pob un dudalen
sylwi ar y deinameg hynny'n bosibl yn awr.
Yn llinell 5 Rwy'n adleisio newidyn teitl,
ond yn gyntaf dwi'n pasio y newidyn teitl i swyddogaeth a elwir yn htmlspecialchars.
Mae enw gwirion ar gyfer swyddogaeth, cyhyd ag y mae, ond mae'n wir yn gwneud yr hyn mae'n ei ddweud.
Mae'n sicrhau bod unrhyw gymeriadau arbennig
yn y llinyn sydd wedi cael ei phasio yn gywir a ddihangodd HTML.
Mae hyn mewn gwirionedd yn ffordd o osgoi rhywbeth a elwir yn ymosodiad sgriptio safle croes
lle gall rhywun maleisus neu ddamweiniol
chwistrellu eu hunain i mewn i HTML eich gwefan
drwy pastio i mewn i ryw fath, er enghraifft,
rhywbeth nad ydych yn eithaf disgwyl, yn enwedig JavaScript cod,
fel y byddwn yn siarad am mewn wythnos neu ddwy yn amser.
>> Mae hyn yn header.php yn awr, mae'n farn
yn yr ystyr ei fod yn caniatáu i chi weld esthetaidd cynnwys rhai set ddata.
Ond yn fwy penodol, mae'n templed.
Mae hwn yn fath o lasbrint nawr o'r hyn yr ydym am i'r pennawd pob tudalen i edrych fel,
ond mae rhywfaint o egni sef ein bod am y teitl i'w fewnosod deinamig
yn seiliedig ar y newidyn teitl
a dynnwyd pan fyddwn yn galw, unwaith eto,
y rendr swyddogaeth header.
Nawr, os ydym yn edrych ar troedyn rendro, mae mewn gwirionedd nid llawer o ddefnydd o'r hawl honno bellach
oherwydd mewn footer.php does dim egni o gwbl.
Gallai fod, ond ar hyn o bryd mae'n rhestr codau caled o 2 tags,
ond yr un syniad yn gymwys, fel sydd mewn gwirionedd yn awgrymu pam
oeddem yn gwastraffu amser yn cael pennawd rendr a swyddogaeth rendr troedyn?
Gadewch i mi fynd yn lle awr i mewn i fersiwn 3,
ac mewn fersiwn 3 mewn cynorthwywyr penderfynais ei symleiddio hyd yn oed yn fwy.
>> Gadewch i mi gael un swyddogaeth rendr.
Gadewch i mi gael ei gymryd ddadl arall, y tro hwn a elwir yn templed,
sy'n cael ei olygu i fod yn enw'r templed,
ac yna byddaf yn concatenate rhyfygus. php i werth y newidyn, yn
ac yna os yw'n bodoli foo.php, bar.php neu header.php a footer.php,
yna yr wyf i'n mynd i fynd yn ei flaen a dynnu 'r data amrywiol
ac yna gwneud yn ofynnol bod llwybr.
Mewn geiriau eraill, i ddefnyddio hyn yn awr, os wyf yn agor index.php
sylwi nad wyf yn galw pennawd render anymore.
Fi jyst galw rendr, ond yr wyf pasio mewn gwerth a ddyfynnwyd o pennawd
i'w gwneud yn glir pa templed Fi 'n weithredol am barhau i lwytho.
>> Yna, dros yma sylwi ar yr hyn rwy'n ei wneud.
Rwy'n pasio mewn ddynamig yn allweddol o deitl,
gwerth o CS50, ac mae hyn hefyd, fel y gwelsom o'r blaen,
gellid gwneud mwy cryno yn y fersiwn ddiweddaraf o PHP
lle y gallaf gymryd lle'r swyddogaeth amrywiaeth gyda bracedi sgwâr,
yr wyf yn cynnig hyd yn oed yn fwy darllenadwy ac yn sicr
ychydig yn haws i deipio.
Ac wrth gwrs, gyda'r alwad render troedyn ar y gwaelod,
nid ydym yn trafferthu mynd heibio mewn ail ddadl o gwbl, dim amrywiaeth cysylltiadol,
oherwydd mae y tu mewn dim byd deinamig y troedyn.
Dim ond rhai tagiau HTML yn agos i.
Da, rydym yn cymryd camau tuag at 'n sylweddol glanhau pethau i fyny yma,
ond gadewch i mi agor 2 enghraifft terfynol.
Mae hyn yn un, rhif 4, hysbysu fy mod wedi gwneud penderfyniad ymwybodol bellach
i wella ar yr enghraifft flaenorol o'r diwedd gan ddefnyddio peth hierarchaeth i fy ffeiliau.
>> Sylwch fod yn y crynodeb hwn, yn y darllen mi, yr wyf wedi cyflwyno
yn cynnwys cyfeiriadur a chyfeiriadur templedi
eu cynnwys yn mynd i fod y pethau rwyf am i gynnwys
a'r templedi yr wyf am ei wneud, yn y drefn honno.
Mae hyn yn wir i mi fod yn rhefrol ac yn ceisio cadw pethau'n daclus,
cadw ffeiliau cysylltiedig gyda'i gilydd, ond mae'r canlyniad
yw bod gennym bellach ychydig yn daclusach setup, ond rhaid inni gofio nawr
mewn, er enghraifft, index.php
pan fyddwn yn ei gwneud yn ofynnol y helpers.php ffeil
mae'n rhaid i ni bellach yn ei gwneud yn ofynnol iddo trwy gynnwys / helpers.php
yn hytrach na dim ond dweud helpers.php oherwydd yn awr ei fod mewn gwirionedd mewn cyfeiriadur is.
Yn awr, wrth fynd heibio, byddwch yn gweld yn yr enghreifftiau hyn a rhai eraill
swyddogaethau fel ei gwneud yn ofynnol, yn gofyn unwaith.
Mae mewn gwirionedd yn swyddogaeth ei hun o'r enw yn cynnwys, ac maent i gyd ag ymddygiad ychydig yn wahanol.
Yma, yr wyf yn dweud ei gwneud yn ofynnol unwaith i wneud super glir fy mod dim ond am y rhai
cynorthwywyr a gynhwysir yn fy mhrosiect unwaith.
Ond os ydw i'n ofalus, ac os wyf mewn gwirionedd yn meddwl trwy fy rhesymeg yn briodol
dylai fod yn ddigon yn rhy dim ond i ddweud ei gwneud yn ofynnol i fyny top
cyn belled gan fy mod nid fy hun yn ddamweiniol ei gwneud yn ofynnol bod un ffeil mewn mannau eraill.
Mewn gwirionedd, mae hyn yn ffordd ychydig yn fwy effeithlon o wneud pethau yna defnyddio
ei gwneud yn ofynnol unwaith, felly byddaf yn ymyl i lawr i ychydig angen.
>> Gadewch i ni gymryd un cam ymhellach.
Mae'r enghraifft olaf yn awr, fersiwn 5, mae ganddo hierarchaeth folder hyd yn oed yn lanach.
Hysbysiad hyn yr wyf wedi ei wneud yma unol â'r ddarllen i mi yn y fersiwn derfynol
yn awr yr wyf wedi fy cyfeiriadur HTML, yr wyf wedi cael yr holl amser hwn,
ond y tu mewn o yno yn awr yn unig index.php, lectures.php,
week1.php a week2.php.
Mae'r cynnwys cyfeiriadur nawr yn byw ochr yn ochr y cyfeiriadur HTML,
hynny ar yr un lefel â brawd neu chwaer, felly, i siarad.
Felly, mae'r ffolder templedi.
Y prydau parod allweddol yma yw fy mod wedi cyflwyno strwythur ychydig yn fwy,
ond y nodwedd allweddol yn awr yw mai dim ond y ffeiliau
y mae angen ar y we yn hygyrch, yn gyhoeddus gyfeiriedig
gan URL ar y rhyngrwyd gyhoeddus yn fy cyfeiriadur HTML.
>> Ffeiliau Yn y cyfamser, eraill, helpers.php, footer.php,
header.php, sy'n dadlau efallai yn fwy sensitif,
efallai cynorthwywyr mewn gwirionedd mae rhai enwau defnyddwyr a chyfrineiriau neu ryw deallusol
eiddo i mi, swyddogaethau i ddim wir yn eisiau i'r byd i weld, hyd yn oed os ddamweiniol.
Mae'n arfer da i gadw allan o'r cyfeirlyfr HTML cyhoeddus
unrhyw ffeiliau nad oes angen eu hunain i fod yn gyhoeddus.
Y cyfan sydd raid ei wneud yn yr achos hwn wrth edrych ar, er enghraifft,
ffeil y cyfeiriadur HTML yn index.php,
sylwi rydym yn unig rhaid i ni fod ychydig yn fwy gofalus wrth ofyn
neu os oes angen unwaith y bydd y ffeil hon.
Angen i mi cyntaf sydd .. i fynd i'r cyfeiriadur rhiant,
yna peidiwch / cynnwys / helpers.php
i ddeifio yn ôl i lawr i mewn i gael y ffeil yr wyf yn poeni am.
>> Unrhyw gwestiynau yna ar MVC
neu mae hyn ymgnawdoliad cymharol syml ohono?
A gadewch i mi ei gwneud yn glir ein bod yn canolbwyntio cryn dipyn ar y
V yma, barn a ffactoreiddio allan o'r templedi.
Nid ydym wedi gwahaniaethu iawn o M C eto.
Yn wir, does dim M yma, a hyd yn oed ein C,
Nid yw rheolwr, yn cael ei wneud mewn gwirionedd i gyd bod llawer, ond byddwch yn cael llawer mwy
gyfarwydd gyda'r ddau o'r rhai 2 lythyr gan MVC,
neu yn hytrach, byddwch yn cael llawer mwy cyfarwydd â'r C
yn MVC am 7, set problem felly mae mwy o hynny ar y gorwel.
Cwestiynau?
Nid mewn gwirionedd oes neb yma.
>> Iawn, gadewch i ni nawr symud ymlaen i'r ail bwnc a'r olaf ar gyfer heddiw.
Dyna yw cyflwyno cronfa ddata.
Hyd at y pwynt hwn rydym wedi cael ychydig ffyrdd o storio data.
Rydym wedi defnyddio newidynnau.
Yn ôl yn ein C ffeil, I / O trafodaeth rydym yn dechrau defnyddio ffeiliau testun
a defnyddio ffeiliau o'r math fprintf, ac yna rydym hyd yn oed dechrau
siarad am CSV ffeilio ychydig, gwerthoedd gwahanu coma,
felly pob un o'r rhain yn caniatáu i ni gael data a storiwyd
naill ai nad ydynt yn gyson neu'n gyson.
Ond nid yw hyd yn oed CSVs yn wir yn ffafriol i chwilio
a mewnosod a dileu.
Mae'n mewn gwirionedd dim ond ffeil testun dwp gwahanu gan atalnodau
olynol gan olynol gan olynol gan rhes, felly os ydych am
chwilio bod ffeil y gorau y gallwch ei wneud mewn gwirionedd chwiliad llinol.
Mae'n rhaid i chi ddechrau ar y brig y ffeil, darllen yr holl beth i mewn,
ac edrych am ryw werth o ddiddordeb.
Os ydych am i fewnosod i mewn iddo yn rhaid i chi wneud yr un peth,
ailadrodd drosto ac fewnosod yn lle arbennig,
ac yn wir, rhaid i chi wneud yr holl rhesymeg chwilio eich hun.
>> Ni allwch wneud patrwm clyfar cyfateb ar ffeil CSV oni bai eich bod chi eich hun ysgrifennu'r cod.
Ni allwch wneud hidlo o ffeil CSV
oni bai eich bod chi eich hun ysgrifennu'r cod.
Oni fyddai'n braf pe bai rhywun arall yn rhoi ei holl ymdrech
i mewn gwirionedd yn gwneud chwilio yn hawdd a gosod hawdd
a dileu a diweddaru ac yn y blaen?
Dyna'n union beth cronfa ddata yn.
SQL, iaith ymholiad strwythuredig, eto iaith arall
ein bod yn cyflwyno yma heddiw, ond mae hyn hefyd yn weddol hygyrch,
a beth rydyn ni'n wir yn mynd i wneud yn unig yw tyn allan ohono rhai o'r amlycaf
nodweddion fel bod ar gyfer pset 7, ac os ydych yn gwneud rhywbeth yn seiliedig ar y we,
eich prosiect terfynol, mae gennych y gallu i fynegi eich hun
o ran ymholiadau data.
Mae gennych y gallu i storio ychydig neu lawer o ddata
mewn ffordd llawer mwy strwythuredig a fydd ar ddiwedd y dydd
gwneud eich bywyd yn haws oherwydd gyda SQL gallwch fynegi eich hun
llawer mwy manwl, yn llawer mwy drefnus er mwyn
fynd yn ôl rhywfaint o is-set o ddata o corpws mwy o ddata.
>> Gallwch feddwl am gronfa ddata, yn yr achos hwn, cronfa ddata SQL, mewn gwirionedd fel Excel
neu Rhifau lle mae'n taenlen,
neu efallai taenlenni lluosog, a thaenlen, wrth gwrs,
Mae rhesi a cholofnau, a hynny oherwydd
Cronfeydd data SQL yn perthynol, perthynol yn yr ystyr
eu bod yn storio data o ran y tablau hyn,
rhesi a cholofnau.
Maent yn uwch perfformio na rhywbeth fel taenlen,
a thaenlen i fod i gael ei ddefnyddio gan bobl.
Mae cronfa ddata i fod i gael ei ddefnyddio gan rhaglennydd
ysgrifennu cod yn ei erbyn, felly mae'r ymgnawdoliad cronfa ddata
yn mynd i fod naill ai llinell orchymyn.
>> Un o'r cronfeydd data mwyaf poblogaidd perthynol i maes 'na, unwaith eto, MySQL,
sydd yn rhyfeddol o rhad ac am ddim, sy'n perfformio'n uchel iawn, ac mae hyn yn beth
Facebook defnyddio yn gynnar iawn ac i ryw raddau hyd heddiw
i storio llawer o'i data, ac fe welwn yn y man
bod defnyddio gorchmynion cymharol syml
gallwn ddewis data, data mewnosoder, diweddaru data,
dileu data ac yn y blaen, ond diolch byth, mae yna fwy defnyddiwr-gyfeillgar rhyngwyneb
na dim ond teipio mewn brydlon du a gwyn yma.
Byddwn yn defnyddio ar gyfer pset 7 a thu hwnt yn offeryn rhad ac am ddim o'r enw phpMyAdmin.
Mae'r enw yn cyd-ddigwyddiad.
Mae'r offeryn yn digwydd i'w gweithredu yn PHP,
ond mae hynny'n sylfaenol amherthnasol.
Beth ddefnyddiol am phpMyAdmin yw ei fod yn cyfleustodau ar y we.
Rydym wedi rhag-ei osod yn y peiriant i chi,
a gydag ef, gallwch greu tablau mewn cronfa ddata,
gallwch osod data, dileu data, ac yn gyffredinol yn gweld
eich data mewn weddol hawdd i'w ddefnyddio amgylchedd.
Nid yw eich defnyddwyr yn mynd i ddefnyddio phpMyAdmin.
>> Mae hyn yn wir yn unig yn offeryn gweinyddol neu datblygwr
â hwy i weld a chwilota o amgylch eich data a chyfrif i maes sut i'w strwythuro,
lawer fel chi eich hun a allai ddefnyddio Excel neu Rhifau,
ond mae'n mynd i fod yn ffordd wych o ddelweddu beth sy'n mynd ymlaen o dan y cwfl
er mwyn i chi ganolbwyntio ar y broblem ddiddorol problemau ac nid yn gymaint
ar y gorchmynion dirgel.
Gadewch i ni edrych ar enghraifft o ddata a allai gael eu storio tabularly
mewn cronfa ddata berthynol.
Dyma un enghraifft o'r fath.
Yn awr, yn anffodus, phpMyAdmin erred ar ochr ffordd taflu gormod llawer o eiriau
a graffeg ar chi, ond os ydych yn hogi yn unig ar y
, Colofn ID y defnyddiwr golofn enw, a'r golofn hash,
mae hyn yn effeithiol taenlen, ond mae'n digwydd i fod yn snippet
o y tu mewn tabl o offer
ddefnyddio ffeil ein bod yn rhoi i chi mewn 7 set problem.
>> Yn benodol, rydym yn rhoi i chi ffeil sy'n cynrychioli
tabl defnyddiwr, felly daenlen sy'n cynnwys defnyddwyr gyda 3 colofn,
un ohonynt yn ID unigryw sy'n dechrau ar 1 ac yn cael ei fyny ar ôl hynny.
Mae'r ail golofn yn enw defnyddiwr, a'r rhai ohonoch a wnaeth Hacker,
rhifyn Hacker gyfer pset 2 a allai, yn adnabod rhai o'r enwau defnyddwyr o leiaf.
Ar yr ochr dde yw'r cyfrineiriau, ond nid ydynt yn cyfrineiriau llythrennol.
Maent yn hashes ohono, felly mae'n troi allan
bod storio cyfrineiriau mewn cronfa ddata yn syniad gwael iawn.
Rydych i gyd wedi darllen yn ôl pob tebyg ar ryw adeg o rai wefan
neu gronfa ddata rhai cwmni yn cael ei gyfaddawdu, ac yna rhaid i chi
newid eich cyfrinair, bydd angen i chi gael ad-daliad ar bethau
oherwydd bod rhai guy gwael mewn gwirionedd yn torri i mewn i'ch cyfrif o ganlyniad.
>> Storio cyfrineiriau mewn testun clir, heb ei amgryptio mewn cronfa ddata
yn gwbl asyn, ac eto mae'n fawr ddoniol
wedyn i ddarllen am rai cwmnïau adnabyddus iawn
weithiau yn y wasg y mae eu cronfeydd data yn cael eu cyfaddawdu,
ac nad yw rhan yn ddoniol, ond y ffaith bod y cronfeydd data yn cynnwys heb ei amgryptio
cyfrineiriau yn chwerthinllyd oherwydd llythrennol gydag un llinell o god
gallwch ddiogelu yn erbyn y bygythiad penodol, a dyna beth rydym wedi ei wneud yma.
Hyd yn oed ar gyfer ein fersiwn ffug Cyllid ychydig CS50
rydym yn amgryptio cyfrineiriau yn unig ar gyfer mesur da, a'r ffaith bod
pob un o'r rhain cyfrineiriau yn dechrau gyda $ 1 $ yn unig yw confensiwn.
Mai dim ond yn golygu eu bod yn amgryptio neu stwnsio mewn gwirionedd,
sydd yn debyg i swyddogaeth amgryptio un-ffordd
lle nad ydych yn gallu newid ei effeithiau gyda rhywbeth a elwir yn MD5.
>> Mae'r ffaith bod 50 yn ôl hynny yn golygu bod gwerth halen
o 50 ei ddefnyddio ar gyfer stwnsio pob un o'r cyfrineiriau heblaw am un.
Mine, wrth gwrs, fel y gallwch weld yno, HA,
oedd defnyddio halen gwahanol, fel y rhai ohonoch a gafodd baglu ychydig yn uwch
efallai yn Hacker 2, a allai fod wedi digwydd o ganlyniad ein bod wedi defnyddio
a hash wahanol na'r lleill oherwydd fy nghyfrinair mewn gwirionedd yr un fath
gan fod rhai defnyddwyr eraill i fyny yno.
Yn wir, os ydych chi wedi bod yn aros hyn i gyd wythnosau i gael gwybod
beth yw'r cyfrineiriau yn cael eu yma yn y cyfrineiriau yr ydych yn eu herio
i fynd i'r afael yn rhifyn Hacker o 2, set problem felly dim yn rhy anodd.
Yn wir, Malan oedd yr un fath ag jharvard,
ond os ydym yn mynd yn ôl iddynt edrych yn wahanol.
>> Canolbwyntio ar jharvard mewn ysgarlad oherwydd eu bod yn halen yn wahanol.
Mae'r algorithm yn bryderus wrth glywed mewn ffordd y mae'r
hash gwerth, y gwerth amgryptio yn edrych ychydig yn wahanol
oherwydd bod y mewnbynnau yn ychydig yn wahanol, ond y cyfrinair o dan y cwfl
yn dal i fod yn y pen draw rhuddgoch.
Yn awr, sy'n gofalu am hyn?
Wel, rydym yn darparu chi â'r defnyddwyr sampl, sampl enwau defnyddiwr
a hashes eu cyfrineiriau er mwyn i chi mewn gwirionedd yn cael rhywfaint o
gwsmeriaid am CS50 Cyllid pan fyddwch yn gyntaf yn cael oddi ar y ddaear gyda eich cod.
Bydd rhaid i chi weithredu tablau mwy tu mewn MySQL, tu mewn i'r gronfa ddata.
Bydd yn rhaid i greu taenlenni yn fwy, yn effeithiol, ond rydym yn penderfynu rhoi i chi yr un yma
mwyn ichi ddechrau arni, a byddwch yn gweld bod y broblem manyleb set
teithiau cerdded eich tywys trwy'r broses o fewnforio tabl hwn
a hefyd yn egluro ystyr rhai o'r nodweddion yn,
a byddwch hefyd yn gweld ein bod yn darparu chi â'r cod
i drin y stwnsio neu amgryptio cyfrineiriau hyn,
felly nid oes angen i chi boeni gormod am yr hyn MD5 neu debyg mewn gwirionedd popeth am.
>> Felly, SQL, iaith ymholiad strwythuredig.
Mae hyn, yn syml iawn, yr iaith a chi ar fin dechrau ei ddefnyddio yn pset 7
ac efallai y tu hwnt i ofyn am ddata gan rai gronfa ddata.
Mae'r data yn cael, unwaith eto, ei storio tabularly yn y tablau perthynol, colofnau, a rhesi,
ond gan ddefnyddio rhywfaint o gystrawen cymharol syml fel dileu,
Gall mewnosod, diweddaru a dewis rydym yn ei wneud yn union hynny.
Gallwn ddileu o'r gronfa ddata, mewnosod,
diweddaru data, yn ogystal â dewis, hynny yw, adalw data o'r gronfa ddata.
Sut ydym yn mynd ati i wneud hyn?
Gadewch i mi fynd yn ei flaen i mewn i'r ddyfais.
Gadewch i mi dynnu i fyny http://localhost,
sydd, unwaith eto, yn yr offer leol ei hun.
Dyna ei llysenw diofyn.
A gadewch i mi fynd i / phpmyadmin.
Mae hyn yn digwydd i fod yn URL arbennig bod y peiriant yn ragosodedig i ddeall
sy'n dod yn union awgrymiadau i mi am enw defnyddiwr a chyfrinair.
>> Fel arfer, dw i'n mynd i deipio jharvard ac ysgarlad,
ond yn sylweddoli bod yn y cyfrif gweinyddwr ar y cyfrifiadur.
Mae'n dim ond cyd-ddigwyddiad bod hefyd yn jharvard gofrestru ar gyfer CS50 Cyllid.
Jharvard, rhuddgoch, rhowch rhoi i mi y rhyngwyneb defnyddiwr a welsom
cipolwg ar hyn o bryd yn ôl, ac mae ychydig yn llethol ar y dechrau,
ond gallaf eich sicrhau, nad ydych yn mynd i gael i chi glicio y rhan fwyaf o'r cysylltiadau yn yr adnodd hwn.
Byddwch yn y pen draw gan ddefnyddio is-set fach sy'n super defnyddiol,
y cyntaf o'r rhain yw cronfeydd data i fyny yma.
Os byddaf yn mynd i fyny i gronfeydd data, yn sylwi fy mod yn annog i greu cronfa ddata.
Mae hyn yn debyg creu ffeil Excel newydd, yn effeithiol.
Rydw i'n mynd i fynd yn ei flaen ac yn galw y ddarlith hon, a Im 'jyst yn mynd i anwybyddu'r maes yno, casglu.
Mae'n rhaid iddo wneud â chynrychiolaeth o ddata ynddo,
ac rydw i'n mynd i glicio creu, ac yn awr gan fy mod yn sylwi gadael i fynd o greu
ar yr ochr chwith lle mae'n dweud dim cronfeydd data
Dylwn fuan yn gweld y gronfa ddata ddarlith.
>> Os wyf yn awr yn clicio ar yr ochr chwith, y gronfa ddata ddarlith,
sylwi ar fy tabs yn newid ychydig.
Mae gen i strwythur, SQL, allforio, mewnforio a rhai pethau eraill.
Strwythur 'n bert lawer yn wag.
Dim tablau gael yn y gronfa ddata, gan ei fod yn dweud yma,
felly gadewch i greu tabl, a gadewch i ni fynd ati i greu tabl
yn hoffi myfyrwyr, a faint o colofnau ydym ei angen?
Gadewch i ni gadw hon 'n annichellgar, a gadewch i ni cofnod ar gyfer pob myfyriwr
yn, rhif ID enw, a chyfeiriad e-bost.
>> Byddwn yn cadw'r cyfan yn syml fel 'na, felly 3 colofn, ewch.
Mae'r ffurflen a welwch yma yn awr ychydig yn flêr ac yn llethol,
ond rydym yn unig rhaid i ni fynd drwyddo olynol gan rhes, fel yn gyflym iawn gadewch i ni roi
y golofn gyntaf yn y gronfa ddata enw o adnabod ar gyfer y dynodwr unigryw.
Bydd yn fod yn gyfanrif. Gall Fi 'n weithredol anwybyddu hyd a gwerthoedd.
Mae int yn mynd i fod yn 32 catiau ni waeth beth ydych deipio i mewn 'na, felly gadewch i ni ei adael yn wag.
Gwerth diofyn, gallwn wneud yn null, fel y'i diffinnir.
Rydw i'n mynd i adael hynny yn unig. Gadewch i ni â phoeni am werthoedd diofyn.
Gadewch i sgrolio dros yma i'r dde, priodoleddau.
Mae hyn yn ddiddorol.
Gadewch i ni fynd yn ei flaen a braidd yn fympwyol yn dweud bod yn rhaid i IDs fod heb eu harwyddo.
Gadewch i ni beidio gwastraffu unrhyw rifau negyddol.
>> Gadewch i ni fynd 0-4000000000, rhoi neu gymryd,
ac yna gadewch i ni chyffwrdd ag unrhyw un o'r meysydd hyn dim ond eto dros yno,
ond yna gadewch i mi deipio i mewn enw i lawr yma,
ac yna y llall yn e-bost, felly mae'r dal yw e-bost
ac enw, yn amlwg nid cyfanrifau, felly gadewch i ni newid y rhain i faes gwahanol.
Mae'n troi allan varchar, hyd newidiol torgoch,
yn debyg i llinyn mewn cronfa ddata SQL
ond hyd newidiol, ac rydych mewn gwirionedd yn rhaid i chi ddweud o flaen llaw y
uchafswm hyd y llinyn, felly dwi'n mynd i braidd yn fympwyol
gan gonfensiwn o'r math 255 characters.
Gallai wyf yn llwyr ddweud 32. Gallwn ddweud 1,000.
Byddwch yn fath o angen i benderfynu drosoch eich hun yn seiliedig ar eich ddemograffeg yr hyn sy'n
enw'r myfyriwr hiraf ac yn mynd â'r rhif hwnnw, neu ychydig yn fwy,
ond yr hyn sy'n braf am varchar yw nid yw'n mynd i wastraff
255 bytes ar enw pob myfyriwr.
Os yw'n DAVID nid yw'n mynd i ddefnyddio 255 bytes gyfan,
ond mae hynny'n rhwymo uchaf, felly byddaf yn mynd gyda 255 yn unig gan gonfensiwn,
ond gallem drafod hynny i fod rhywfaint o werth is, ac ar gyfer cyfeiriad e-bost
dim ond i fod yn gyson 255, ond eto, gallem gael yr un ddadl.
Ond dw i'n mynd i wneud un peth arall dros yma ar yr ochr dde.
>> Beth bwerus am gronfa ddata yw y gall wneud llawer o godi pwysau trwm
neu waith cymhleth i chi.
Yn benodol, i ddim wir yn poeni beth rhifau ID fy myfyrwyr yn cael eu.
Mae wedi golygu dim ond i fod yn dynodwr unigryw mewn cronfa ddata
felly mae gen i gynrychiolaeth cryno 32-bit y myfyriwr hwnnw
fel bod gennyf rywfaint o ffordd o rifau unigryw yn nodi'r eu
rhag yna 2 Tyddewi, er enghraifft, mewn dosbarth.
Yn wir, rwy'n mynd i wirio hyn, blwch AI cynyddiad auto,
fel bod y gronfa ddata, MySQL, ffigurau allan
pa ID pob myfyriwr mewnosod newydd yn cael ei mynd i fod.
Dydw i ddim hyd yn oed yn gorfod gofalu am hynny yn fy cod,
, a dwi hefyd yn mynd i ddewis rhywbeth o dan y ddewislen mynegai.
Mae'r mynegai gollwng i lawr yma wedi cynradd, yn unigryw,
mynegai a thestun llawn.
Gallwch ddyfalu beth efallai un neu ddau o'r pethau hyn yn,
ond mae'n troi allan mewn cronfeydd data perthynol
chi rhaglennydd neu'r gweinyddwr cronfa ddata ddod i preemptively
yn rhoi awgrymiadau at y gronfa ddata ynghylch pa feysydd
mewn tabl yn arbennig bach.
>> Er enghraifft, yn yr achos hwn rwyf i'n mynd i ddweud bod ID
yn mynd i fod yn fynegai sylfaenol, a elwir fel arall fel allwedd gynradd.
Beth mae hyn yn ei olygu wrth ddiffiniad yw bod ID o hyn ymlaen
Bydd adnabod unigryw i fyfyrwyr yn y tabl hwn.
Ni fydd unrhyw fyfyriwr yn cael yr un ID gan fy mod yn gosod cyfyngiad hwn, neu y mynegai hwn.
Ar ben hynny, beth mae hyn yn mynd i wneud i mi yw ei fod yn mynd i ddweud
MySQL bod ID yn arbennig.
Rwy'n gofalu yn arbennig am ID, felly fynd yn ei flaen a gwneud hud eich strwythur data ffansi, yn
adeiladu rhyw fath o goeden.
Fel arfer mae'n rhywbeth a elwir yn y B-coed, a doedden ni ddim yn edrych ar wythnosau yn ôl,
ond mae'n strwythur arall data o'r fath yn debyg o ran ysbryd i'r coed deuaidd
ac yn ceisio ein bod yn edrych ar, ond mae'n mynd i ddweud
i'r gronfa ddata y maes hwn mor bwysig fy mod yn ôl pob tebyg
am fod yn gallu chwilio arno, fynd yn ei flaen ac adeiladu rhai ffansi
strwythur data mewn cof i gyflymu chwiliadau fel bod yn ddelfrydol
eu bod yn cysonyn amser neu o leiaf mor agos i'r hyn a ag y bo modd
fel nad yw'n datganoli i chwiliad llinol, nad yw'n mynd i fod yn
y mwyaf yn perfformio'n uchel dull.
Ar y llaw arall, gallai cyfeiriad e-bost wedi bod yn allweddol cynradd.
>> Mewn theori, cyfeiriad e-bost pawb yn unigryw, oni bai eich bod yn rhannu peth ystyriaeth,
ond nid yw'n dda ar y cyfan i ddefnyddio rhywbeth fel llinyn
fel allwedd gynradd oherwydd os ei bwrpas mewn bywyd yw i adnabod unigryw
rhesi yn eich tabl does dim rheswm i ddefnyddio 255 bytes maximally
i adnabod unigryw rywun os gallwch chi fynd i ffwrdd gyda dim ond 4 bytes
neu int 32-bit.
Yn gyffredinol, dylai allweddol cynradd fod yn fyr ac yn gryno
ac yn ddelfrydol rhywbeth fel cyfanrif neu int mawr, sy'n digwydd bod yn 64 did.
Ond dylai'r cyfeiriad e-bost fod yn unigryw, ac yn un o nodweddion cronfa ddata yn rhy
yw gorfodi unigryw i mi.
Drwy ddewis unigryw yma nesaf i e-bost, er bod e-bost ei hun
yn cael ei sgrolio bant o'r sgrin, rwy'n dweud wrth y gronfa ddata
nid ydynt yn ymddiried ynof.
Peidiwch â gadael i mi mewnosod i mewn i'r gronfa ddata
cyfeiriad e-bost un ddwywaith, hyd yn oed os ydw i'n idiot ac nid wyf
dda iawn gyda fy os ac petai arall a chod PHP gwirioneddol
ac yr wyf yn ddamweiniol gadael i'r defnyddiwr gofrestru gyda chyfeiriad e-bost sy'n bodoli eisoes
y gronfa ddata arall eto lefel o amddiffyniad ar gyfer cywirdeb
er mwyn sicrhau nad yw'r cyfeiriad e-bost dyblyg yn dod i ben i fyny yn y tabl.
>> Yn awr, mewn cyferbyniad, am enw mae'n debyg nad ydych eisiau gwneud hynny'n unigryw
oherwydd wedyn ni fyddai yna 2 Davids neu 2 Smiths Mike, er enghraifft,
yn eich cronfa ddata, fel bod un byddwn yn unig yn gadael ei ben ei hun.
Rydw i'n mynd i fynd yn ei flaen a chliciwch achub ar y dde gwaelod,
a phopeth yn edrych yn dda, ond sylwi yma
mae hyn yn rhan y ar hyn o bryd ni fyddwn yn treulio gormod o amser ar
oherwydd bod y gystrawen yn braidd yn gymhleth, ac nid oes gennym i greu tablau
aml â hynny, ond SQL ei hun yn iaith,
y gystrawen y iawn yma fy mod i wedi tynnu sylw atynt.
Pa phpMyAdmin mewn gwirionedd yn ei wneud yw ei fod yn creu GUI we i chi
gyda y gallwch arbed amser ac nid rhaid i manually deipio
ymholiad cymharol hir SQL fel 'na.
>> Mewn geiriau eraill, os ydych am â llaw yn creu y tabl hwn,
naill ai ar y phpMyAdmin du a gwyn yn brydlon, neu hyd yn oed mewn
drwy ddefnyddio'r tab arall, mae'r tab SQL lle gallwch deipio unrhyw ymholiadau SQL
rydych eisiau, a dweud y gwir, byddai hyn wedi cymryd munud imi
i mewn gwirionedd yn cofio'r cystrawen gyfan, a hyd yn oed wedyn mi fyddai'n fwy na thebyg wedi
gwneud rhai camgymeriadau teipio, felly yr offeryn hwn yn ddefnyddiol ar gyfer pethau fel hynny, ac mae hefyd yn addysgiadol.
Gallwch ddechrau benderfynu beth yw'r gystrawen yn
yn unig gan y lliw 'n glws codio bod phpMyAdmin yn ychwanegu
ar gyfer ein cyfleustra gweledol.
Ond yn awr, gadewch i ni wneud hyn yn lle hynny.
Gadewch i mi fynd at y tab mewnosoder ar y brig, a gadewch i mi fynd yn ei flaen ac yn mewnosod, am enghraifft
ID o gadewch i ni ddweud-mewn gwirionedd nid wyf yn poeni.
Mae'n mynd i cynyddiad auto. Rydw i'n mynd i adael i'r gronfa ddata ddelio â hyn.
Ond byddaf yn David, a dylai fy e-bost fod yn malan@harvard.edu.
>> Gadewch i ni fynd yn ei flaen yma a'i roi yn Mike Smith fel un arall.
Byddaf yn rhoi fy hun yn enw diwethaf yn ogystal,
a byddwn wedi iddo fod yn smith@example.com,
ac yna ble ydw i'n mynd nesaf?
Wel, mae'n edrych fel mynd yw'r botwm i glicio, a voila.
Hysbysiad ar y 2 res uchaf fewnosod.
Mae hyn yn yr ymholiad SQL go iawn.
Dyna yr offeryn phpMyAdmin gweithredu i mi,
ond y canlyniad terfynol, hysbysiad, os wyf yn awr yn mynd i'r tab browse,
yw gweld 2 res yn y tabl hwn, yn atgoffa rhywun esthetaidd
y tabl a welsom yn gynharach ar gyfer ein defnyddwyr o pset 7,
un ohonynt yw David Malan, un ohonynt yn awr yw Mike Smith.
Ond dim ond i fod yn glir, nid oes angen i mi ddefnyddio phpMyAdmin,
ac yn wir, rydych chi'n mynd i cyn bo hir yn ysgrifennu cod ar gyfer pset 7
sy'n awtomeiddio'r broses o ychwanegu rhesi, dileu rhesi, diweddaru rhesi ac ati,
felly gadewch i mi yn hytrach na mynd i'r tab SQL yma
a theipiwch * dethol gan fyfyrwyr lle
e-bost = "malan@harvard.edu."
>> Mewn geiriau eraill mae'n debyg yn awr gennych
rhyw fath HTML, a'r mathau defnyddwyr yn eu cyfeiriad e-bost, ymysg meysydd eraill,
a'r nod yn awr yw yn PHP ar y cod pen-ôl
i mewn gwirionedd yn edrych i fyny manylion y defnyddiwr eraill.
Beth yw eich enw llawn? Beth yw eich rhif ID?
Gallech ysgrifennu ymholiad SQL fel hyn, dewiswch * gan fyfyrwyr
lle e-bost = "malan@harvard.edu."
Ac os wyf cliciwch wedyn yn mynd, sylwch y dylwn, ac yn wir yr wyf yn ei wneud, fynd yn ôl dim ond un rhes.
Mae Mike yn hepgor o'r set hon ganlyniad, gan fod y casgliad o resi
elwir yn gyffredinol, am nad yw'n cael yr un cyfeiriad e-bost â mi.
>> Nawr, unwaith eto, yma i pset 7 byddwch yn defnyddio phpMyAdmin fel offeryn gweinyddol
ac yn offeryn addysgol i ddysgu eich ffordd
o amgylch y byd SQL, ond ar ddiwedd y dydd
rydych yn mynd i gael ei ysgrifennu ymholiadau hyn tu mewn gwirioneddol PHP cod,
ac felly yn aros tiwnio yn Zamyla yn walkthrough yn arbennig
lle byddwch yn cael taith o amgylch y cod dosbarthu ar gyfer y set hon problem
lle'r ydym wedi ei roi i chi nid yn unig y estheteg ar gyfer y dudalen mewngofnodi
ac mae'r logo sexy 'n glws sy'n dweud CS50 Cyllid, ond rydym hefyd wedi rhoi i chi
criw o swyddogaethau a fydd yn gwneud eich bywyd ychydig yn haws.
Rydyn ni wedi ysgrifennu hefyd yn rhan o'r pset i chi,
y rhan mewngofnodi ohono yn benodol, er mwyn rhoi syniad i chi o ddyluniad cynrychioliadol
sydd mewn gwirionedd yn defnyddio rheolwr, ar gyfer, index.php enghraifft,
login.php ac yn y blaen, ac yna byddwch yn gweld y pset hefyd gyfeiriadur patrymluniau
sydd wedi eich holl sylwadau, yr holl estheteg.
Ac felly y llif gwaith cyffredinol mewn pset 7 yn mynd i fod yn y
eich defnyddwyr yn ymweld â rheolwr drwy URL mewn porwr.
Bod rheolwr yn cynnwys cod PHP eich bod wedi ysgrifennu, ac y tu mewn eich cod PHP
gallai fod rhai llinellau o SQL nythu rhwng dyfynodau dwbl
a'i drosglwyddo i'r swyddogaeth wnaethom ysgrifennu ymholiad a elwir yn
a fydd yn eich helpu i siarad â'r gronfa ddata heb ddefnyddio rhywbeth fel
offeryn gweinyddol fel phpMyAdmin.
>> Byddwch yn gallu ysgrifennu datganiadau SQL yn PHP cod
a mynd yn ôl amrywiaeth PHP o'r set canlyniad,
o'r rhesi sydd mewn gwirionedd yn cyfateb i'r ymholiad.
A bydd yn yr un modd byddwch yn gallu gwneud mewnosod neu dileu
neu ddiweddariadau neu yn y blaen, y gystrawen y yn eithaf tebyg,
a byddwch yn gweld o rai cyfeiriadau ar-lein, gan y cod dosbarthu
ac o'r pset pecyn ei hun yn union sut i fynd ati i wneud hynny.
Sylweddoli y pen draw rydym yn wir dim ond crafu wyneb SQL
a MySQL, ond grym y mae mewn gwirionedd yw ei fod yn rhyddhau eich
i ganolbwyntio ar y problemau yr ydych am ei datrys, yr achosion defnydd yr ydych am i weithredu
heb orfod poeni yn eithaf cymaint, o leiaf yn gynnar,
am ble a sut i storio a chwilio eich cronfa ddata,
ac mae hyn yn eithaf llythrennol lle cafodd Facebook ei hun ei ddechrau
defnyddio MySQL ac yna defnyddio gweinyddion MySQL arall ac yna gweinyddwyr MySQL yn fwy
cyn bo hir nes eu bod wedyn roedd yn rhaid i wir yn dechrau meddwl yn galed am sut i
storio data, sut i storio pethau hyd yn oed yn fwy effeithlon,
felly hyd yn oed er y byddwn yn cymryd yn ganiataol y ffaith bod mynegeion a chyfyngiadau unigryw
ac yn y blaen dim ond gwaith mae sgwrs ddiddorol iawn
y gall hyn i gyd yn y pen draw yn arwain at, er sylweddoli ein bod dim ond crafu'r wyneb
Gallai yr hyn yn y pen draw ar eich cyfer chi neu eich prosiectau yn dod yn gryn dipyn o ddata mawr.
>> Gyda dweud hynny, gadewch i ni dod i ben yma, ac fe welwn ni chi wythnos nesaf.
[CS50.TV]