[Powered by Google Translate] [Setmana 9] [David J. Malan - Harvard University] [Aquesta és CS50. - CS50.TV] Està bé. Benvingut de nou. Això és CS50, i aquest és el començament de la setmana 9. Avui ens centrem en particular en el disseny, ja no en el context de la C però en el context de PHP i una mica de SQL i una mica de JavaScript, especialment cap a la fi dels dos pset 7 i també el seu projecte final. De fet, si vostè està en aquest punt en el projecte final on presumiblement a partir d'una hora o així que fa que almenys vam començar a pensar una mica al seu projecte final i estàs pensant que t'agradaria col · laborar amb 1 o 2 companys de classe, si vostè està tenint problemes per connectar-se amb aquests companys, no dubti en omplir el formulari en cs50.net/partners/form. Simplement et pregunta qui ets, quin tipus de projecte que vostè està pensant, on viu només per raons logístiques. I després, si voleu mantenir un ull en la setmana o així que l'URL de full de càlcul allà, A continuació, pot veure una versió de només lectura del document de Google Docs en el qual estem recollint aquesta informació. Així que si vostè vol treballar amb algú, per tots els mitjans no dubti en acostar-se a la gent a través d'aquest mecanisme. Però la majoria de la gent fer sol treball. Això és totalment bé. Així que no crec que això és d'alguna manera obligatòria. Divendres era només jo i uns pocs de l'equip d'aquí, teatre buit en la seva major part. Haver 3 turistes assegut allà dalt, així que va ser una mica incòmode. El que parlava era de bases de dades i parlem de pset 1 jul mica. I si no va ser així per capturar en vídeo que de moment, això està bé. Vaig a tractar de definir els termes que d'altra manera seria donar per fet basat en conferència de divendres. Però avui tractarem d'arribar al punt de no només ser capaç de fer una cosa així pset 7 però realment entendre el que està passant sota la campana, en particular algunes de les abstraccions que hem posat en marxa a l'arxiu functions.php per fer la seva vida una mica més fàcil, però pel que entenc que en última instància de manera que quan les rodes d'entrenament sortir en un parell de setmanes vostè encara pot sobreviure en el món real i fer aquestes coses sense un marc CS50 sota de vostè. Aquest $ _SESSION, per a aquells de vostès que estan familiaritzats o que ja agafat el vídeo el divendres, què farem SESSIÓ en una aplicació web basada en PHP? Aquesta és una variable superglobal, el que significa que és similar en esperit a GET i POST i alguns altres, però què és això útil? Quin és SESSIÓ utilitza? Si. [Estudiant] Logueandote Com diu? [Estudiant] Logging in Logging in Indeed. En pset 7 que estem fent servir aquest superglobal sessió per facilitar la tala polz I el que és bo d'aquest superglobal és que és una matriu associativa. Una matriu associativa, recordar, és només un conjunt, però els índexs ja no han de ser nombres com 012. Ells poden ser nombres o poden ser fins i tot cadenes. I el que si ha bussejat en pset 7, però, cal recordar que estem emmagatzemant un ID de clau anomenada dins d'aquesta matriu associativa el valor és com 123 - qualsevol que sigui l'iniciat sessió ID d'usuari és. El motiu d'això és que fins i tot després que l'usuari ha visitat localhost o el meu lloc web en general i que han iniciat sessió, encara que no fa clic a un enllaç o tornar al meu lloc web durant 5 minuts o fins i tot una hora o fins i tot un dia, però deixen la seva finestra del navegador oberta, a través d'aquest superglobal puc recordar que s'ha entrat En altres paraules, el que em permet emmagatzemar qualsevol cosa una mica llarg termini Vull sobre un usuari. I vostè pot pensar que és realment com l'encarnació d'un carret de compres. Llocs com Amazon, òbviament, posarem les coses en un carret de la compra, però HTTP, el protocol que alimenta la web, és apàtrida en el sentit que quan vostè visita un lloc web, en la seva major part no té algun tipus de connexió de xarxa permanent entre el seu navegador i el servidor. Així que vostè hagi descarregat el codi HTML i JPEG i GIF les i els de tot, que la connexió desapareix i només hi ha una còpia del codi HTML i altres coses des del servidor. Però si el servidor vol recordar alguna cosa sobre tu, la càrrega és al servidor per registrar realment aquesta informació. I pel que el programador que té control sobre el servidor pot posar gairebé qualsevol cosa que vulguis dins d'aquesta matriu associativa superglobal i que hi serà la pròxima vegada que l'usuari torna, si es tracta de minuts o fins i tot dies més tard, a menys de tancar la finestra del navegador, en què SESSIÓ punt desapareix. Així que és efímer emmagatzematge, és no persistent, i que està destinat a desaparèixer tan aviat com l'usuari tanca el seu navegador - no només aquesta pestanya, sovint el navegador sencer, el que efectivament el registre l'usuari fora. Llavors, com és això en realitat pràctica? Fem una ràpida ullada a un exemple senzill vam veure el divendres. Per aquells no familiaritzats, és tan simple com això. Aquesta és una pàgina web l'únic propòsit en la vida és que em diguis quantes vegades he visitat aquesta pàgina. Aquesta és la primera vegada avui aquí que la vaig visitar, pel que diu 0 vegades. Però si començo a tornar a carregar aquesta pàgina, es diu 1 hora, 2, 3, 4, 5, i això finalment s'acaba de seguir comptant cap amunt, amunt, amunt, amunt, amunt per cada vegada que feu clic a Actualitza en realitat en ell. Llavors, com és aquest treball? Deixa anar dins d'aquest arxiu anomenat counter.php. La part superior de la mateixa és tots els comentaris blaus, però la part interessant és aquí. En la línia 13 es diu session_start aquesta funció, i que és, literalment, tot el que has de fer si vols tenir accés a aquest superglobal especial anomenada $ _SESSION. Això fa que tot sigui possible, i veurem com en un moment en què tot és possible. En la línia 16 avís del que estic fent. Si la clau, anomenat contra - en altres paraules, el valor de l'índex - "comptador" existeix dins d'aquesta matriu anomenada SESSION, llavors què estic fent amb ell en la línia de sota? Quina és la línia 18 va? [Resposta dels estudiants inaudible] Què és això? [Estudiant] Emmagatzemar el valor. Bé. S'emmagatzema el valor que està en sessió en aquest moment en una nova variable temporal local, $ Contador en minúscules. Tingueu en compte que PHP ja està sent una mica mandrós aquí. Recordeu que no tenim cap menció de int o float o cadena ni res d'això pel fet que PHP és tipus febles, de manera que no cal especificar el tipus d'una variable, i en aquest cas aquí no he tan sols ho declarat encara. Ho estic declarant dins d'aquestes claus ia diferència de C, això és realment bo. No importa com profundament niat declaració d'una variable és en PHP - dins de clau, dins de clau de tancament i similars - serà en aquest moment en el temps existeix per a la resta del programa, per bé o per mal. Així que immediatament es converteix en global tan aviat com vostè el defineix com estem fent aquí. En cas contrari, si no em sembla que hi hagi res al superglobal REUNIÓ, Estic aparentment inicialitzar aquesta variable comptador a 0, per tant només suposant que l'usuari mai ha estat aquí abans. I després d'aquest curs és incrementar el comptador, com? Estic actualitzant el valor que hi ha dins d'aquesta matriu associativa fixant igual al que actualment és comptador + 1. Si em desplaço fins aquí per el codi HTML de la pàgina, en realitat és bastant simple. Tot el que tinc al cos d'aquesta pàgina és: "Vostè ha visitat aquest lloc vegades fulano de tal". I aquest és un constructe PHP. Si ho fa