[Powered by Google Translate] [Walkthrough Tatizo Set 7] [Zamyla Chan] [Chuo Kikuu cha Harvard] [Hii ni CS50] [CS50.TV] Hello kila mtu, na kuwakaribisha kwa walkthrough 7, CS50 Fedha. Sasa sisi ni rasmi kufanyika na yote ya psets katika CS50, na sisi ni kushoto tu na moja zaidi ambayo ni kwenda kuwa utekelezaji furaha wa tovuti ambapo watumiaji wanaweza kuingia kwenye Fedha CS50 na kununua na kuuza hisa. Leo, sisi tunaenda kuwa na zana chache tulizonazo. Sisi ni kwenda kuzungumza kuhusu ruhusa. Wakati wowote na folder mtandao, utaenda wanataka kuruhusu watumiaji kutekeleza files fulani lakini pia kusoma tu wale wengine, hivyo tutaweza kuangalia ndani ya ruhusa na jinsi gani unaweza kuweka wale. Kisha sisi ni kwenda kuangalia ndani ya PHP, HTML, na SQL code. Kwanza, permissions. Wakati uko katika terminal katika saraka fulani, basi nini unataka kufanya ni unataka kukimbia amri chmod. Hiyo ikifuatiwa na herufi au namba aidha sambamba na yale kimsingi wanataka kuona dunia, wewe mwenyewe ili kuona, nk Kwa mfano, wakati wowote una folder, kisha unataka folder kwamba kuwa executable na kwamba kila mtu anaona ni, hivyo nini ungependa kufanya ni wewe inaweza kuendesha chmod amri + x na kisha jina la folda. Wakati una faili kama vile files CSS au files picha - kama JPEGs na bitmaps, mambo kama hayo, au yoyote code JavaScript - unataka kuwa na someka na kila mtu, hivyo basi nini kufanya ni unaweza kutumia wildcard - ambayo ni kinyota - na kimsingi zinaonyesha katika folder CSS - kila kitu katika folder kwamba -  Mimi nina kwenda kusema kwamba itakuja kuwa someka kwa kila mtu. Na vibali, wakati sisi kutumia barua, tunaweza pia kutumia namba badala yake. Hivyo, unaweza kuona kwamba hatimaye wakati unataka kitu kuwa executable - hiyo ni kuwakilishwa na idadi 1 - kitu kuwa ni someka namba 4 na kisha - writable ni namba 2 - na hivyo kimsingi wakati unataka macho ya wale, basi kuwaongeza. Kama unataka kitu kuwa someka, writable, na executable, basi ingekuwa kuongeza hadi 4, 2, na 1 na kwamba bila kutoa 7, kisha wakati wowote una folder unataka kwamba kuwa executable na kila mtu - kama vile someka na writable - basi wewe kufanya 7, 1, 1. Hiyo itakuwa 7 kwa ajili yenu, basi 1 kwa watu wengine. Wakati una spec, itabidi kweli bayana folders ambayo na ambayo files haja ya kuwa chmod-ed hasa. Kwa mfano, wakati una folders - wale ni 7-1-1 - wakati una picha, au HTML, CSS, JavaScript, kisha wale wanaenda kuwa 6, 0, 4 - au 6, 4, 4 - na kisha files PHP ni kwenda kuwa 6, 0, 0. Dhana ya kwamba ni kwamba watumiaji lazima si kweli kuona yako PHP kificho, lakini tu kuwa na uwezo wa kuona pato. Mkuu! Kuhamia katika PHP. Tu, kila unataka faili PHP, suffix faili ni php.. Unaweza pia kuchanganya HTML kwa PHP code. Kama una faili HTML, kwa mfano, basi unaweza enclose kwa angle kushoto, swali alama, php - kuweka code yako php - na kisha karibu kwamba pamoja na mwingine alama swali na angle haki. Vigezo katika PHP ni rahisi sana kuliko kushughulika na vigezo katika C. Variable yoyote tu ya kuanza kwa ishara ya dola mbele yake, na wao ni weakly typed. Hiyo ina maana kwamba huna haja ya kuwa na wasiwasi kuhusu kuweka kitu sawa na kamba au integer. Unaweza tu tu kusema, hii ni jina yangu ya kutofautiana na basi hii ni ya thamani yake, hivyo ni kwenda kuwa rahisi kukabiliana na pale. Kitu kingine ni kwamba PHP utapata kutumia arrays associative. Unaweza tu tu define safu kama wewe ungekuwa katika C kwa kusema, dola ishara-ya jina yako safu-sawa, na kisha katika mabano mraba kuwa kimsingi tu orodha ya maadili ya mambo yote katika safu. Lakini, katika PHP nini unaweza pia kufanya ni bayana kimsingi - ni aina ya kama kazi hash. Unaweza kutaja index - nini wewe kwenda kumwita - na kisha kwamba sambamba na thamani. Kama kweli kupita katika = 1, b = 2, c = 3, kisha safu yako katika index awajalieni 1. Pset Hii joto ninyi mahakamani na baadhi PHP katika sehemu ya maswali, na kisha sisi kupiga mbizi katika Fedha CS50. Sisi kuwa wanandoa wa - tuna baadhi ya utendaji, kimsingi, kutekeleza katika tovuti hii. Tunataka kuruhusu watumiaji kujiandikisha katika tovuti yetu kwa jina la mtumiaji na nywila. Tunataka kuruhusu kwao kwa kuangalia juu quote, na kisha tunataka magazeti nje jina la quote kwamba kama vile bei ya sasa ya kwamba ni saa. Tunataka kuruhusu yao kuona kwingineko ya yote ya hisa kwamba wana kununuliwa hivi sasa. Tunataka pia kuwaruhusu kununua hisa kama vile kuuza yao. Na kisha hatimaye, tunataka kuwaruhusu kuona historia wa wote wa mashirikiano kwamba wameweza alifanya. Kisha, hatimaye, baada ve kutekelezwa yote ya kwamba, basi wewe ni bure kutekeleza moja ya ziada kipengele. Tutaweza kwenda katika hizo. Wale inaweza kuwa ama kuruhusu watumiaji kupata fedha ya ziada kwa kuweka fedha ya ziada, au unaweza kuruhusu kwao kubadili password yao, au kitu kama hicho, email risiti wakati wao kununua au kuuza hisa. Kuna orodha mdogo wa makala kwamba unaweza kutekeleza mwenyewe, hivyo kwamba moja ya mwisho huko. Tangu hii ni tovuti, you guys pia kuwa na mengi ya uhuru wa Customize yake. Sisi kufanya kutoa baadhi code CSS, lakini wewe ni dhahiri bure tweak yake, kufanya ni kuangalia nicer, lakini msingi ni utendaji ya msingi hivyo daima rejea spec kuhusu nini hasa haja kwa pamoja huko. Kufuatia spec, sisi ni kwenda kuwa na kutumia appliance kama pia server. Ni kwenda kuwa mwenyeji wa tovuti yetu kwa ajili yetu, juu ya server yake ya ndani. Kama wewe kufuata maelekezo haya na unzip pset 7 usambazaji code ndani ya virtual yako jeshi / mitaa folder jeshi,  basi unaweza tu kutembelea http://localhost/ katika Google Chrome katika appliance, na basi ingekuwa kufikia code ambayo umefanya imeandikwa pset 7. Pset 7 kuja na rundo la code usambazaji, na hopefully we've - kwa njia zote za psets kabla ya hii - Wanahudhuria sisi kusoma kwa njia ya kificho usambazaji, kuelewa nini majukumu tayari zinazotolewa, na jinsi sisi inaweza kuwa na uwezo wa kutumia wale na kazi nyingine kwamba sisi ni kwenda kuwa utekelezaji. Katika kesi hiyo, tuna folders 3. Tuna folder HTML, pamoja na folder, na folder templates. Nini sisi ni kwenda kufanya na pset hii ni aina ya kutenganisha kufikiri - kufikiri programu - ya PHP code na kipengele halisi Visual. Tutaweza kuwa moja PHP faili kwamba anafanya yote ya kufikiri, anayesoma katika database, prints nje mambo, ina kama kauli - mambo kama hayo - na kisha kuwa itabidi kupita data katika faili template yetu - au faili template.php. Nini kwamba kufanya ni kusoma data na basi itakuwa magazeti nje. Tunaweza kutibu templates kama "bubu" kwa kuwa sisi si kweli unataka yao kuwa kufanya kazi nyingi katika kuhesabu mambo. Tunataka controllers wetu kufanya hivyo. kidogo juu ya hilo - hebu tuangalie baadhi ya maadili ya usambazaji. Hapa tuna faili wetu index.html, na ni pretty tupu. Kimsingi kile yake - anasema, vizuri, nina kwenda zinahitaji faili configuration.php. Hatuoni kwamba haki pale, lakini kimsingi ni wito faili configuration.php, na utekelezaji huo. Baada ni gani kwamba, ni kwenda kutoa kwingineko. Utoaji ni kazi, hivyo wakati tuko katika mtawala, Tutamwita asimlipe, tutaweza kuwapa faili na kisha data kwamba sisi ni kupita katika, hivyo kwamba nitakuita katika portfolio.php aina-ya kupita katika taarifa hizo ili kwamba kwingineko ambayo inaweza kukabiliana na kwamba. Na sasa, hapa, tuna aina yetu login.php.  Hii ni mtawala kwamba kimsingi inachukua huduma ya magogo in Hapa, ni hundi ikiwa fomu lade kwa faili hii na mikataba na validering kuwasilisha. Tutaweza kuangalia katika kazi hii kuomba msamaha. Wakati tunataka kuchapa nje ujumbe wa kosa, sisi kutumia msamaha na kwamba itakuwa redirect mtumiaji ukurasa maalum ambayo magazeti nje maalum makosa ujumbe kwamba sisi zinaonyesha. Kuendelea juu, itakuwa swala database - we'll kupata ndani zaidi ya baadaye. Kisha, unaweza kuona kwamba chini hapa ikiwa fomu hakuwa in, basi ni mithili ya fomu. Hiyo ina maana kwamba huenda kwa login_form.php, hivyo hebu angalia hiyo. Login.php ni kweli ambapo tunaona kushughulika HTML na kipengele halisi Visual. Hapa tuna tag pembejeo kwa jina la mtumiaji, pembejeo kwa password, kama vile kifungo kuwasilisha. Hiyo ni kweli ambapo nyanja Visual na HTML fomu ni kwenda kuwa uliofanyika. Hapa, inasema kwamba ni kwenda kuwasilishwa kwa njia fulani, kuitwa post. Tutaweza kupata katika tofauti kati ya mbinu - post dhidi kupata, pia kuna kitu kinachoitwa kuweka - tutaweza kupata katika njia hizo za baadaye, lakini kwa maslahi ya pset hii, Napenda sana moyo kutumia post. Tunajua kwamba kimsingi mara moja fomu hii ni in - kutoka login_form.php-- basi itakuwa kwenda action - login.php-- kimsingi kupita katika wale vigezo vyote kutoka fomu hizo katika login.php. matokeo kutoka fomu kuwa ni zilizomo ndani ya safu hii post associative. bahati ya mambo mbalimbali katika safu post ni nini hasa bayana hapa. Unaweza kusema kwamba jina la pembejeo hii ni jina la mtumiaji. jina la moja hii ni siri. Vilevile, unaweza kuona jina la mtumiaji kama index ya safu associative huko. Kama sisi kwenda kwa folda pamoja, tuna faili hii kazi ambayo ni kwenda kuwa muhimu sana. Kwa haya yote ni kutekelezwa kwa ajili yenu. Huna haja ya kutekeleza hasa yoyote ya hizi wewe mwenyewe, lakini wao wanaenda muhimu kabisa. Tuna msamaha, ambayo kama nilivyosema hapo kabla, itakuwa kimsingi magazeti nje ujumbe wa makosa kwa wewe juu ya ukurasa maalum - apology.php. Kisha sisi kuwa dampo, hivyo kama wewe piga tu dampo na kisha kupita katika variable, kisha itakuwa kuleta kwa ukurasa kuonyesha kwamba kutofautiana kwa ajili yenu. Kisha sisi logout, ambayo kimsingi mwisho kikao mtumiaji fulani ya. Luke ni kwenda kuwa na manufaa. Tangu sisi ni kushughulika na quotes na hifadhi, tunakwenda na kuwa na uwezo - na ni kimsingi muda halisi. Tunahitaji kujua nini maadili hisa hizo ni, hivyo tuna kazi lookup ambayo inahusika na nyaraka Yahoo wa hifadhi. Mara baada ya kuangalia juu ishara fulani ya hisa, itakuwa kurejea wewe ishara hisa kama vile jina na bei ya sasa ya hisa kwamba. Hiyo ni kazi Luke. Kisha sisi ni kushughulika na MySQL, hivyo sisi ni kwenda kuwa kutaka kutekeleza maswali fulani katika database yetu SQL. Tuna hoja ya kukabiliana - kwa baadhi ya aina ya kufikirika ya nje kwamba. Sisi wanaenda kupita katika string nzima ya swala zetu SQL - na wote wa vigezo kwamba kwenda katika hilo - na nini hii haina ni kweli kwamba nitafanya kwa ajili yetu. Badala ya kuwa na kuandika haya yote nje kila wakati kwamba unataka query - na kupata yote ya matokeo kutoka swala kwamba - basi unaweza kuwaita tu kazi swala, na hivyo itabidi kurudi wewe - kutegemea juu ya nini wewe kutumia kwa ajili ya swala yako - pengine mstari wa wote wa matokeo wanaofanana swala au sawa. Zaidi juu ya kwamba baadaye ingawa. Hatimaye, tuna redirect ambayo kama jina linavyosema, redirects wewe ukurasa tofauti. Na kisha tuna asimlipe, ambayo sisi mtaenda wito michache ya nyakati. Wakati uko katika mtawala, wewe piga atatoa katika ukurasa template na kisha kupita katika maadili ambayo template atashughulika na. Wale maadili ni pengine kwenda kushughulika na aina ya pato kwamba unataka kuonyeshwa kwenye template ukurasa wako. Sawa. Wale ni kazi, na kuna mengi zaidi kwa code hii usambazaji. Mimi moyo kwenda kwa njia hii na kuchunguza ni wewe mwenyewe. Pia, spec pengine kutembea wewe kupitia baadhi ya vipengele nyingine ya code usambazaji. Hapa ni muhtasari wa kazi hupatikana katika functions.php. Sawa. Kazi ya kwanza ni kuruhusu watumiaji kwa kujiandikisha katika tovuti. Hivi sasa, kuna aina login katika tovuti, na wewe ni zinazotolewa na watumiaji wachache pamoja na nywila. Unaweza kutumia majina ya watumiaji na wale logi katika, lakini unataka kuruhusu watu kufanya wao wenyewe usernames na kuongeza wenyewe na tovuti. layout kwa ajili ya usajili ni pretty sawa kwa ajili ya kuingia, ila jina la mtumiaji si ya awali iliyopo, na mtumiaji pia mahitaji ya kutoa siri mpya, na kisha kawaida tuna uthibitisho password. Mara pembejeo zote za watumiaji wa habari kwamba, tunataka kuongeza yao database yetu ya watumiaji. Sisi ni kwenda kuwa na database - database SQL - kwamba sisi ni kwenda kwa rejea. Katika orodha hiyo, tutaweza kuwa na meza na yote ya watumiaji zenye jina la mtumiaji yao, password zao, na pia jinsi fedha kiasi walichonacho. Katika daftari, tunataka kuwaruhusu kuingia kwamba taarifa. Tunataka kuonyesha kwamba fomu. Tunataka kuhakikisha kuwa password yao - kwamba waliingia moja, na kisha pia kwamba nywila mechi wanapoingia ni mara mbili. Baada ya yote ya kwamba ni kufanyika - kuchukua kwamba makosa hayo ni checked - kisha tunataka kuongeza watumiaji hao kwa database yetu. Hatimaye, mara moja umefanya kusajiliwa, ni pretty rahisi kama huna haja ya kuingia tena mara moja umefanya kusajiliwa, hivyo sisi ni kwenda kuingia kwao katika tovuti kama wameweza amesajiliwa katika mafanikio. Kazi ya kwanza ni kuonyesha fomu, na hii ni kweli kwenda kuwa - huu wote mchakato wa usajili ni kwenda kuwa inatokana pretty karibu baada ya kuingia isipokuwa badala ya login.php unaweza kuwa register.php. Badala ya login_form.php-ambayo ni template - utasikia kuwa kujiandikisha fomu. Utasikia wanataka kuongeza moja zaidi shamba - uthibitisho password shamba - badala ya jina la mtumiaji moja na nenosiri moja. Next, tunataka kuangalia kama nywila mechi au ni tupu. Tuna mtawala - register.php-ambayo ni kwenda kuchukua huduma ya kufanya hundi hizo. Wakati fomu ni kuwasilishwa kupitia njia ya posta, basi wote wa vigezo wale zilizomo ndani ya safu ya posta. Wewe unataka kuhakikisha kwamba baada ya safu thamani katika password index mechi ya kipengele uthibitisho. Wewe unataka kuhakikisha kwamba wao si tupu, na wewe unataka kuhakikisha kwamba wao ni sawa. Moja rahisi kitu kuhusu PHP ni kwamba hatuna haja ya kutumia kamba kulinganisha tena. Tunaweza kutumia operator sawa-sawa  kuangalia kama masharti ni sawa na mtu mwingine. Kwa utunzaji makosa, utasikia wanataka radhi. Kuomba radhi, wewe tu piga kazi  na kisha kutaja aina ya ujumbe kwamba unataka pato. Wewe kisha unataka kuongeza mtumiaji database. Hadi sasa, kila tumekuwa kufanya ni kushughulika tu ndani ya nchi na matokeo ya fomu. Sasa, sisi kweli unataka kuongeza yao database yetu. Kwa hili, sisi kwanza unataka kuhakikisha kwamba username si tupu. Kuelewa kwamba katika tovuti, huwezi kuwa na watumiaji mbalimbali kwa jina la mtumiaji sawa, hivyo utasikia wanataka kuhakikisha kwamba wakati wewe Insert kitu katika orodha yako - Insert mtumiaji mpya - basi huwezi kupata mgongano kati ya jina la mtumiaji kabla zilizopo na jina la mtumiaji kwamba mtumiaji ni kujaribu kuwasilisha. Kwa hili, mara moja wewe nitafanya query - inserting mtumiaji fulani na password yao na kiasi awali ya fedha - mara moja wito kwamba swala, kisha MySQL mapenzi kweli kurudi uongo iwapo itashindwa. muundo wa watumiaji ni vile kwamba jina la mtumiaji ni thamani ya kipekee, hivyo huwezi kuwa na zaidi ya moja. Unapojaribu na Insert mstari mpya yenye jina la mtumiaji kwamba tayari ipo, ambayo inaenda kurudi uongo - kama uongo Boolean-thamani. Jambo gumu hapa ni kwamba utasikia wanataka kuangalia kama matokeo ni matokeo ya hoja yako. Kama inashindwa, basi utasikia wanataka kuangalia na operator mara tatu-sawa. Hiyo kweli kwenda kuangalia kama kuna ni kushindwa au la, ambapo, katika rahisi tu sawa sawa-, itakuwa kweli kama mstari ilikuwa tupu. matokeo ya kushindwa kama kuna mgongano kati ya majina ya watumiaji ni halisi uongo thamani. Hapa ni jinsi gani Insert katika database. Hapa ni swala ambalo ungependa kukimbia madhubuti katika SQL. Jambo moja ni kwamba unaweza kweli kwenda kwenye tovuti yako kwamba itaweza database SQL na kucheza kote huko kwa kuingia manually maadili ama au safu. Itakuwa pato nini pato SQL ni. Unaweza pia kuendesha amri SQL ndani ya hifadhidata yako  na kisha kuona nini syntax ili kuwa, na kisha kutafsiri kwamba katika kazi swala kwamba sisi katika pset 7, ambayo ni kwenda kuwa ni sawa na maswali kwamba kweli kukimbia. Kama nilitaka Insert mstari mpya katika meza yangu watumiaji, basi napenda kutaja Insert ndani ya watumiaji, ambayo ni jina la meza yangu. Kisha napenda kutaja majina ya safu. Kisha napenda kutoa maadili pamoja na password yangu. Nywila katika meza yetu watumiaji si kuhifadhiwa kama kamba tu. Wao ni kuhifadhiwa kama toleo encrypted, hivyo utasikia wanataka kuendesha crypt kazi juu ya password halisi, na kwamba nitakupa aina sahihi ya kuhifadhi kwa ajili ya safu watumiaji. Mbio hii Insert mstari mpya katika meza yako watumiaji. Ili kukabiliana na kazi swala, kabla katika C sisi kutumika ishara asilimia kama placeholder. Vilevile, dhana hiyo ya placeholder inatumika hapa. Pamoja na swala, wewe taja swala zima, ila wakati wowote wewe ni kushughulika na vigezo kama mchango wako ndani ya swala, basi badala ya kweli kuweka ndani - kama wakati tulikuwa na kauli printf katika C. Tunataka kuweka kamba na kisha kuwa placeholder huko, na kisha baada ya kila comma, bayana ambayo variable tulikuwa. Hapa, sisi ni kwenda kutumia alama swali ishara kama placeholder wetu na kisha kupita katika variable kila, kwa mtiririko huo ili, kwa placeholders - ambapo wale vigezo anatakiwa kwenda. Hivyo hapa, kwanza swali alama itakuwa kubadilishwa na jina la mtumiaji halisi kisha pili swali alama na password. Kisha hatimaye, mara moja umefanya kusajiliwa kwao na aliongeza yao kwa database, kisha unataka kuingia kwao katika tovuti. Tuna aina ya kikao super-kimataifa variable kuitwa. Kikao inachukua id fulani, na id kwamba sambamba na user hiyo sasa logged in Nini utasikia wanataka kufanya ni kupata kile mtumiaji yao id ni na kisha kuweka kwamba id kikao kama id kwamba mtumiaji fulani. kazi kwamba utasikia wanataka kutumia hapa ni amri SQL ambayo retrieve mwisho kuingizwa id idadi kutoka meza yako. Kisha safu nitakuita - it'll kuwaita id - it'll hawawajui jina kwa idadi hiyo kuirudisha. Ni nitakuita kwamba id. Sasa tumekuwa kumaliza kujiandikisha, na tunaweza kuendelea kunukuu. Quote inaruhusu mtumiaji pembejeo jina la hisa fulani, na kisha utakuwa kurudi sifa ya hisa kwamba. Nini utasikia wanataka kufanya hapa ni kuwa mtawala na templates baadhi. Katika kesi hiyo, sisi itawabidi mtawala ambayo ni kwenda kufanya yote ya kufikiri kwa ajili yetu. Ni kwenda kuangalia juu ishara na kisha kupita katika maadili kwa templates ambayo magazeti nje. Sisi itawabidi templates 2 hapa. Sisi itawabidi 1 template ambayo hutoa aina ambayo watumiaji ni kwenda pembejeo jina la hisa - jina la hisa. Kisha sisi ni pia atataka mwingine template kwamba maonyesho maadili hayo. Unaweza kuangalia ndani ya kuingia kwa ajili ya mfano wa jinsi ungependa kuwa fomu kuwa anapokea pembejeo, isipokuwa katika hapa, sisi tu wanataka 1 shamba. Hatutaki username na password shamba. Sisi tu wanataka 1 Nakala shamba ambayo inaruhusu user pembejeo jina la hisa fulani. Kisha unataka kutuma data kwamba - mara moja kuwa akatazama kwamba hisa - kwa quote_form.php. Luke atarudi ishara ya hisa, jina, na bei. Wale ni zilizomo ndani ya safu associative. Angalia kazi lookup ndani functions.php kwa habari zaidi juu ya aina ya kurudi kwa wale. Mkuu! Hivyo basi hatimaye, utasikia wanataka kuonyesha taarifa hisa. Utasikia wanataka pengine kuonyesha - you'll wanataka kupata vigezo wale. Mara baada ya kuwa bei katika variable - kama vile jina na alama - basi utasikia wanataka kuonyesha wale katika template ukurasa wako. Ukurasa kwamba template inaweza kuitwa show_quote.php au kitu. Quote.php yako ukurasa ingekuwa atatoa show quote na kisha kupita katika yote ya maadili hayo. Kisha katika ukurasa wako php, wewe kweli magazeti nje maadili hayo kwa kipengele HTML ya ukurasa. Wewe tu kutumia kazi magazeti na kupita katika bei. Kuna njia 2 - unaweza ama concatenate kwa operator dot, au kutumia placeholder. watumiaji hatimaye itakuwa ni kununua na kuuza hisa. Tunataka kuruhusu yao baadhi ya njia ya kuona yote ya hifadhi ya kwamba sasa kuwa. Sisi ni kwenda kuwaita kwamba kwingineko yao. Kwingineko itakuwa, labda kwa mtumiaji kila, vyenye rundo la safu kuorodhesha aina ya hisa ya kwamba wana na kisha jinsi wengi wa wale wana. Meza yetu zilizopo - sasa hivi tuna meza watumiaji katika database yetu. Hiyo ina jina la mtumiaji mtumiaji nywila vilevile yao na kiasi gani cha pesa walichonacho. Hakuna njia ya halisi ya hifadhi yote ya hifadhi yao ndani ya kwamba. Siyo kama tunaweza kuingiza nguzo mpya kwa ajili ya hisa zote. Hiyo itakuwa mstari sana, mrefu sana kwa sababu tuna kiasi usio ya aina ya hifadhi ya kwamba wanaweza kuwa. Hivyo, badala yale tutaweza kufanya ni ndani ya database huo, tutaweza kuwa na meza watumiaji, lakini basi tutaweza pia kuwa meza kwingineko. meza kwingineko itakuwa dhahiri wanaohusishwa na meza watumiaji, lakini badala meza kwingineko muundo itakuwa na habari hisa, hisa ngapi ya kwamba hisa mtumiaji ana, kama vile ya mtumiaji fulani id idadi. Una meza ambayo ina watumiaji id kama vile jina la mtumiaji, hash - ambayo ni password, password encrypted - na kisha kiasi cha fedha wana. idadi id itakuwa wanaohusishwa na idadi id kutoka kwingineko. kwingineko ingekuwa tu kuwa ishara ya hisa kama vile hisa - idadi ya hisa ya kwamba hisa kwamba mtumiaji ana. Katika meza hiyo kwingineko ungependa kuwa kimsingi wote hisa amepagawa na yote ya watumiaji kwenye tovuti yako. Baadaye, kwa kutaja tu hisa mtumiaji fulani wa - tu portfolio yao - ungependa retrieve maadili ya kutoka meza kwingineko yako ambayo vile idadi id ni maalum kwa mtumiaji huyo. Wakati wewe kuonyesha kwingineko, utasikia wanataka kuripoti kila hisa katika kwingineko mtumiaji. Utasikia wanataka ripoti ya idadi ya hisa na thamani ya sasa ya hisa hizo. Thamani ya hisa kwamba sasa wale si kuhifadhiwa katika meza kwingineko kwa sababu hiyo ni kwenda kuwa uppdatering - katika kima cha chini - kila siku na Yahoo. Ili kupata taarifa kwamba, huwezi rejea kwamba kutoka hoja yako SQL. Nini kazi hutoa kwamba sisi? Nini kazi kupata bei? Hiyo lookup, hivyo kwa kutumia alama ya lookup fulani nitakupa mengi ya habari. Ni nitakupa vipande 3 wa habari - jina, alama, kama vile bei. Mara baada ya Luke ishara fulani, basi unaweza kupata bei, na basi unaweza kutumia bei kuonyeshwa katika kwingineko yako. kwingineko lazima pia kuonyesha mtumiaji wa sasa wa fedha mizani. Shamba hilo ni kuhifadhiwa ndani ya meza yako watumiaji. Hivyo basi wakikumbuka jinsi sisi ni kimsingi ya kuwa na - sisi ni kuwa aina tofauti ya files PHP. Sisi itawabidi mtawala ambayo kimsingi haina kufikiri yote kwa ajili yenu. Na kisha tuna template ambayo template mikataba na data outputting. Una kufikiria nini vigezo mtawala haja ya kuchukua in Kama sisi ni kushughulika na kwingineko ambayo matokeo ya kila jina, alama, na idadi ya hisa, kama vile bei ya sasa ya hisa, basi utasikia wanataka kupata baadhi ya njia ya kimsingi ya kupita katika - unaweza kupita katika safu ya maadili wanaofanana kwamba. Hebu kwenda katika mfano wa jinsi unaweza retrieve yote ya hifadhi ya inayomilikiwa na mtumiaji fulani. Hii si kushughulika - bado - kwa bei ya hisa. Nini hii itakuwa kufanya ni kukimbia swala. Ingekuwa kupata alama kama vile hisa kutoka - Mimi nina wito huu meza, lakini katika kesi hii itakuwa ya namna gani? Nini jina la meza ya kwamba sisi ni kushughulika na kwamba ina alama na hisa kwa mtumiaji fulani? Ni aidha watumiaji au kwingineko. Kwingineko. Nini hii itakuwa kufanya ni swala kwingineko kwa ishara na hisa kwa mtumiaji fulani. Hapa, nasema, (CHAGUA ishara, hisa kutoka TBL - lakini badala ya meza, utaenda kuchukua nafasi ya kuwa na kwingineko. 'Wapi' kimsingi ni hali yangu. Mimi kusema mimi tu wanataka kupata arrays wale associative kwamba yanahusiana  kwa hali hii yafuatayo - id sawa.  Kisha mimi nina kuweka placeholder hapo na kisha id kikao. Nini hii itakuwa kufanya ni kusema kwa kila mstari katika safu. Hii ni njia nadhifu badala ya kweli kuwa kuanzisha kwa kitanzi kwamba iterates juu ya yote ya bahati, kisha katika PHP unaweza kuwa kwa-kila kitanzi. Kama una safu aliyopewa, basi unaweza kusema mimi naenda kuwaita kila kipengele mfululizo - Mimi naenda kuwaita kila kipengele hiki jina. Hivyo, kwa kila moja ya mambo haya, mimi naenda kuwaita hii, basi naweza kufanya hili. Katika hili kwa ajili ya kila mmoja, una safu kama safu yako halisi, na kila mstari wewe ni kwenda kuwaita mfululizo. Kila wakati ni executes mwili, itakuwa kwenda juu na itakuwa update mstari kipengele ijayo katika safu. Sasa, katika suala la kununua hisa, nini tunataka kufanya ni kupata hisa kwamba mtumiaji anataka kununua na kiasi cha hisa kwamba mtumiaji anataka kununua, na kisha - kama wanataka - kuongeza kwamba hisa na kwingineko yao. Ni wazi, kama wao ni kununua kitu, basi, kwamba kinaendelea kupungua kiasi cha fedha, hivyo kwamba kinaendelea kupungua fedha zao. Sisi ni kwenda kushughulika na uppdatering kwingineko kama vile meza watumiaji, ambayo ina fedha taslimu. Lakini kwanza, unahitaji kupata hisa halisi na kiasi cha hisa kwamba mtumiaji anataka. Kwa maana kwamba, itabidi HTML fomu ambayo kuuliza kwa ishara ya hisa kwamba unataka kununua kama vile idadi ya hisa. Ndipo utasikia wanataka kuongeza. Utasikia wanataka kuchagua maadili fulani. Tumeenda kupitia kidogo hiki kidogo tayari, lakini wakati wewe ni kujaribu kupata safu fulani - retrieve safu fulani kutoka meza ya SQL, hii ni syntax zifuatazo. Wewe kuchagua, na kisha kama wewe taja nyota, kwamba kutakuwa na kimsingi kurudi mzima, mzima mstari kwa ajili yenu. Kisha tena, una hali ambapo, na kisha wewe taja - Mimi nataka tu jina la mtumiaji kwa kuwa sawa na mail-katika, hivyo itakuwa tu retrieve mfululizo katika watumiaji kwamba sambamba na mail-katika. Wakati mtumiaji anataka kuongeza hisa na kwingineko, unahitaji kuangalia kwa makosa kadhaa. Wewe unataka kuhakikisha kwamba mtumiaji unaweza kweli kumudu hisa, hivyo utasikia wanataka kuangalia fedha zao. Kabla ya hapo, sisi kutumika nyota retrieve safu nzima kutoka meza SQL. Lakini hapa, tunaweza kweli tu kutaja kwamba mimi nataka tu 1 thamani - Mimi nataka tu fedha taslimu. Hivyo hapa, ingekuwa kurudi fedha kwa mtumiaji na id namba 1. Kama mtumiaji tayari kununuliwa hisa fulani lakini basi hununua zaidi ya hisa kwamba, kisha katika kwingineko yako - hutaki line tofauti, mwingine mstari kwamba ina kwamba shughuli mpya. Wewe kweli wanataka update kiasi. Yote yale kubadilisha kweli ni kiasi cha hisa kwamba mtumiaji kwamba anamiliki. Kama matumizi ya Insert katika swala - hivyo ni tu Insert katika kwingineko yako yote ya maadili haya - id mtumiaji idadi kama vizuri kama ishara ya hisa kwamba wao ni kununua na hisa, basi utasikia pia wanataka bayana, vizuri, ikiwa mimi kukimbia katika ufunguo duplicate - katika kesi hii, muhimu ni duplicate si tu mtumiaji id lakini pia ni ishara ya hisa - kwa sababu unaweza tu kuwa - Nguzo yetu ni kwamba unaweza tu kuwa na mstari 1  kwamba sambamba na alama 1 maalum. Hivyo, juu ya ufunguo duplicate - kama wewe kukimbia katika mgongano hapo - wewe ni kwenda tu update hisa kwa thamani yake mpya. Hisa sawa chochote sisi alikuwa mbele pamoja na idadi ya hisa kwamba mtumiaji ni kununua. Sasa kwa kuwa tumekuwa updated meza kwingineko, tutaweza wanataka update fedha mtumiaji. Hiyo ni katika meza ya watumiaji, hivyo sisi ni kwenda kuwa subtracting kiasi fulani kutoka fedha taslimu. Labda, ni kwenda kuwa fedha ni sawa na fedha taslimu minus - na kisha kiasi fulani. Update ya fedha taslimu, wewe ungekuwa - kama alitaka kuchukua fedha kutoka kwa barua-katika, basi napenda kukimbia hoja hii - 'Update watumiaji' na kisha kuweka safu ya fedha kwa fedha - Ningependa kuondoa dola 9,999 tu kama jina la mtumiaji ni sawa na barua-katika. Lakini, katika kesi hii, sisi hawataki Ondoa 9999 hasa. Tunataka kubainisha, vizuri, tunataka Ondoa bei ya sasa ya hisa kuyagawa kwa idadi ya hisa kwamba wao ni kununua. Sasa tumekuwa aliwaruhusu kuona yote ya hifadhi ya kwamba wana, kama vile kununua hisa zaidi. Sisi pia awali aliwaruhusu kuangalia bei ya sasa ya hisa. Hapa tunataka kuwaruhusu kuuza yao. Kwanza tunataka kuonyesha kimsingi - tunataka kuwaruhusu kuona yote ya hifadhi ya kwamba wana, hivyo hapa tunataka kuonyesha wote wa safu kutoka kwingineko. Kama wao kuchagua kuuza hisa fulani, basi sisi ni kwenda kudhani kwamba wanataka kuuza yote. Wao si tu kwenda kuuza 50% ya hisa zao, wao wanaenda kuuza 100% ya hiyo. Tunaweza tu kufuta mstari mzima kutoka kwingineko. Tunaweza kufuta hisa mtumiaji aliyopewa ya alama fulani. Kuna syntax kwa ajili hiyo. Kisha tunataka update fedha taslimu. Sisi ni kwenda kuwa na kuongeza fedha taslimu sawa na kiasi cha hisa wao ni kuuza kuyagawa kwa bei ya sasa ya hisa - si bei ambayo wao kununuliwa, lakini badala ya bei ambayo ni - bei ya sasa wakati wao ni kuuza hivyo. Kwa rejea bei ya sasa ya hisa, wewe unataka kutumia lookup, ambayo nitakupa bei ya hisa wakati wa sasa. Sasa sisi ni wa kushoto na historia, ambayo unataka kuruhusu user kuweka wimbo wa wote wa shughuli zao - anataka kuona wakati wao kuuzwa kitu, wakati wowote kununuliwa hisa. Tunataka kubainisha wakati ambapo wao walifanya kama vile jinsi wengi wao kununuliwa na nini hisa ilikuwa. Je, tuna yoyote sasa, zilizopo muundo kwamba unasema kuwa? Naam, sisi kuwa na kwingineko ambayo inaonyesha idadi ya hifadhi kwamba mtumiaji ana kwa ajili ya kushiriki aliyopewa. Lakini sisi ni jinsia kwingineko katika njia ambayo ni updates wakati sisi kununua nyingi, ambapo historia lazima - kama wewe kununua Apple, 10 hisa yake, na kisha baadaye kuuza 5, basi wewe unataka kuona wale tofauti, kama vitendo tofauti, tofauti mistari. Wakati hatua kwamba visualize kwamba katika meza yetu na kwingineko ingekuwa tu kuwa update kwa mstari fulani,  hivyo sisi ni pengine atataka mwingine meza. Katika database yetu, tuna watumiaji wetu meza, tuna kwingineko wetu meza, na sasa sisi itabidi pengine wanataka meza historia. Kwamba meza historia unaweza kuweka wimbo wa tarehe ya sasa, kama vile fulani hisa alama, kama vile hisa ngapi, na kisha nini action ni - kama wewe walikuwa kununua hisa hizo au kama wewe walikuwa kuziuza. Ili kukabiliana na tarehe, kuna wanandoa wa njia ambazo unaweza kufanya kazi hii. PHP ina njia ya kuweka wimbo wa tarehe, ambayo unaweza kuangalia up mwenyewe. Katika SQL unaweza pia kutumia aidha sasa au timestamp sasa. Hiyo ni juu yako. Tu kuhakikisha kwamba kila wakati mtumiaji hununua au anauza, wewe utakuwa uppdatering fedha zao katika meza watumiaji, wewe utakuwa uppdatering safu katika meza portfolios, basi utasikia pia kuwa uppdatering historia, hivyo kuna ni kwenda kuwa 3 tofauti SQL maswali kwamba wewe utakuwa wito huko. Sisi kuwa na rundo la utendaji sasa. Michache tu ya kuwakumbusha kwamba katika ripoti ya faili yako, utasikia wanataka zilizounganishwa na angalau yako - lakini utasikia wanataka kuruhusu user zilizounganishwa na ukurasa buy.php. Hiyo kwenda kuruhusu user - buy.php ni mtawala, ili kwenda aidha kutuma wewe - ambayo inaenda kutuma wewe kwa ajili ya kwamba utapata kuangalia mambo juu. Tuna historia. Sisi magogo nje, kupata quote na kisha kuuza. Wale ni katika kiwango cha chini nini unataka kuonyesha. Katika suala la kwingineko, na kwingineko ni kweli inavyoonekana katika ukurasa index. Kama sisi kwenda index, hapa tunaona kwamba ni mithili portfolio.php na hupita katika safu associative - kimsingi cheo sawa na kwingineko. Kwa hiyo, hili ni mtawala. Kama sisi kwenda kwa template ya portfolio.php, kisha wote ina ni - maonyesho ya kimsingi picha kwamba anasema, oh, tovuti hii ni chini ya ujenzi. Baadaye, mara moja, unaweza kupita katika - you'll kuwa kupita katika taarifa kimsingi maalum zaidi. Badala ya jina tu, pengine utasikia kuwa kupita katika mambo zaidi. Mara baada ya kuwa maadili hayo, basi portfolio.php inaweza kukabiliana na maadili hayo na uchapishaji yao nje katika aina yoyote ya utaratibu. Mara ve kutekelezwa wote wa wale, wewe pia haja ya kutekeleza 1 zaidi kipengele. Hii inaweza ama kuwa kuruhusu user kubadili password yao, upya nywila zao kama wameweza wamesahau hiyo - hivyo kwa nenosiri, basi pengine utasikia pia wanataka hariri kujiandikisha ili inaruhusu yao bayana barua pepe, hivyo kama wao kusahau nywila zao, basi wanaweza kupata hiyo. Wao pengine unaweza kuingia katika jina la mtumiaji zao, na kisha barua pepe utatumwa kwao na kiungo kuweza upya nywila zao. Unaweza kuwa na kitu ambayo inaruhusu watumiaji kupata stakabadhi kila wakati wao kununua au kuuza kitu, na kisha hatimaye, kuwaruhusu kuongeza fedha kwa tovuti yao. Tu kwenda nyuma katika dhana ya controllers na templates kidogo. Wewe utakuwa na kitu kama - hivyo itabidi mtawala hapa. Hivi sasa, sisi ni kuangalia mfano login.php. Wakati tuna mtawala, kimsingi ni ya kwenda kuchukua kesi 2. Wakati tuna controllers, tuko katika kipande hiki kwamba sisi ni pia aina ya kushughulika na wakati tuna aina kama vile. mtawala mapenzi kimsingi kuwa vitendo tofauti - moja ikiwa fomu tayari kuwasilishwa, na kisha mbili kama mtumiaji ni kuja kuwa ukurasa kwa mara ya kwanza na bado anahitaji pembejeo kwamba fomu. Mimi naenda kuruka kwa kesi hiyo ya kwanza kabla ya kwenda hadi kesi ya kwanza ya kuwa na fomu in Hapa tunasema, ikiwa fomu imekuwa na post in mbinu - msiwe na wasiwasi juu ya kuwa kidogo. Usijali kuhusu kwamba sana lakini kuelewa kwamba kimsingi kazi hii inahusika na kama fomu imekuwa in au la. Hali hii ni ya kweli kama mtumiaji ina in fomu. Kama siyo, basi tunakwenda unataka simu asimlipe login_form.php, na kisha kupita katika cheo. Hii ni cheo tu kimsingi kwenda itaonekana katika header. Nini hii kimsingi anasema, okay - vizuri, kama mtumiaji inakwenda login.php na si kweli umeingia, basi nataka kuwatuma ukurasa ambayo ina kuwa fomu ambayo inaruhusu yao pembejeo username na password. Kisha mimi kwenda login_form, na kisha kuwa ina fomu halisi. Basi, mara moja user elekeza kwamba fomu, wao wanaenda kuwasilisha kwa login.php na baada ya mbinu. Kisha mimi nina kweli kwenda kuingia sehemu hii ya kitanzi yangu kama-kingine. Basi ni katika hapa kwamba sisi kushughulika na maadili aliingia katika fomu. Ni hapa kwamba sisi kushughulika na wale. Kisha mara moja kukabiliana na maadili hayo - kama wewe ni kushughulika na - wanasema sisi ni kushughulika na ukurasa quote.php ambapo mtu anaweza pembejeo hisa kwamba wanataka kuangalia juu, na kisha kuona kwamba kuonyesha - kwamba aina ya sawa hapa. Hapa tuna fomu login - you'd pengine fomu quote - lakini kisha mara moja user ina kweli in kwamba habari, basi utasikia wanataka mtawala kupita katika template mwingine ambayo kuwaonyesha kuwa habari halisi. Hivyo basi haki kote hapa, basi itabidi pengine - karibu mwisho wa hali yako hapa - kama njia sawa na post - basi pengine utasikia wanataka atatoa ukurasa mwingine - quote show - ambayo hutuma wewe ukurasa kwamba - show_quote.php-- na kisha katika faili ambazo kumbukumbu maadili hayo. Je, hiyo mantiki? Tuna mtawala kwamba kimsingi inahusika na kesi 2 - kama uliyoingiza fomu katika au la. Kama si aliingia fomu, basi itakuwa redirect wewe kwa ajili ya kwamba, ambayo hatimaye kuweka wewe nyuma kwenye ukurasa huo. Basi, mara moja una habari katika mtawala, mwili kuwa atapambana na kwamba habari kama ni muhimu - ama kuangalia juu ya maadili kwa hisa, na kisha mara moja ni akatazama maadili hayo na ina yao katika safu nicely formatted, basi wanaweza kupitisha kwamba safu katika ukurasa template  ambayo inahusika na outputting kwamba habari. Tena, tangu mtandao ni, ni kwenda kuwa fun. Sisi ni nje ya C hivyo sisi ni mdogo si ASCII na kwamba pato terminal, hivyo kuwa na furaha na hii. Unaweza kufanya hivyo kama Visual kama unataka. Unaweza kuruhusu watumiaji mamilioni ya dola pembejeo kwa wakati, au kikomo yao na kuwa kweli maana na kuwaruhusu tu kuingia 1 senti wakati au kitu kama hicho. Dhahiri kuwa na uhakika wa kuwa na furaha na hii. PHP code ni rahisi kidogo kwa kuwa ni kidogo rahisi ramani nje pseudocode yako katika utekelezaji. Hivyo, dhahiri kuwa na furaha na hii kwa sababu ni kweli kipande yetu ya mwisho katika CS50. Pamoja na kwamba, hii ilikuwa walkthrough 7. Mara wewe ni kumaliza kuangalia walkthrough na kumaliza pset yako, basi hawa walikuwa pia psets, na sasa sisi ni juu ya bidhaa ya mwisho - baada ya sisi kupata njia ya chemsha bongo 1. Basi pengine unaweza kutumia zana kwamba wameweza kujifunza kutoka psets - si tu syntax, lakini zaidi dhana ya kufikirika ya jinsi ya kuchukua baadhi ya - kama, nataka kufanya hili na kisha kutekeleza kweli kwamba. Kujifunza jinsi ya mapambano kwa njia ya kisintaksia na code usambazaji. Masomo code ya watu wengine, na kisha kutafsiri kwamba kwa kutumia kazi ya awali iliyopo. Hivyo, bahati nzuri na pset mwisho. Imekuwa ni furaha ya kuongoza walkthroughs. Natumaini wao tumekuwa kusaidia kwa ajili yenu. Haya yalikuwa Walkthroughs, na shukrani sana. [CS50.TV]