[Powered by Google Translate] [Settimana 9] [David J. Malan - Harvard University] [Questo è CS50. - CS50.TV] Bene. Bentornato. Questo è CS50, e questo è l'inizio della settimana 9. Oggi ci concentriamo in particolare sul design, non più nel contesto di C ma nel contesto di PHP e un po 'di SQL e un po' di JavaScript, in particolare verso la fine di entrambi pset 7 e anche il progetto finale. In realtà, se si è a quel punto nel progetto finale dove presumibilmente di circa un'ora fa, almeno, ha iniziato a dare qualche pensiero per il progetto finale e stai pensando che ci piacerebbe collaborare con 1 o 2 compagni di classe, se hai problemi di connessione con detti compagni di classe, non esitate a compilare il modulo di cs50.net/partners/form. Chiede te chi sei, che tipo di progetto su cui state pensando, in cui si vive solo per motivi logistici. E poi se si vuole tenere d'occhio la prossima settimana o giù di lì l'URL foglio di là, è possibile vedere una versione di sola lettura del documento Google in cui stiamo raccolta di tali informazioni. Quindi, se si desidera lavorare con qualcuno, con tutti i mezzi sentitevi liberi di raggiungere le persone attraverso tale meccanismo. Ma la maggior parte delle persone fanno il lavoro da solo. E 'tutto bene. Quindi non credo che questo sia in qualche modo obbligatorio. Venerdì scorso è stato solo io e alcuni del team qui, teatro vuoto per la maggior parte. Ci sono stati 3 turisti seduti lassù, così che era un po 'imbarazzante. Quello che abbiamo parlato era database e abbiamo parlato di pset 7 un po '. E se non è successo per la cattura che in video appena ancora, va bene. Cercherò di definire tutti i termini che altrimenti diamo per scontato sulla base di lezione Venerdì. Ma oggi stiamo andando a cercare di ottenere il punto non solo di essere in grado di fare qualcosa di simile pset 7 ma in realtà capire che cosa sta succedendo sotto il cofano, in particolare alcune delle astrazioni che abbiamo messo in atto nel file functions.php per rendere la vostra vita un po 'più facile, ma in ultima analisi, in modo da capire in modo che quando le ruote di formazione venire fuori in poche settimane si può ancora sopravvivere nel mondo reale e fare queste cose senza un quadro CS50 sotto di voi. Questo $ _SESSION, per quelli di voi che hanno familiarità o che già catturato il video il Venerdì, cosa SESSIONE facciamolo in un PHP-based web? Questa è una variabile superglobale, che significa che è simile nello spirito alla GET e POST e pochi altri, ma che cosa è questa cosa serve? Che cosa è SESSIONE usa? Gia '. [Studente] Logging in Scusa? [Studente] Logging in Logging in effetti. In pset 7 si sta utilizzando questo superglobale SESSIONE per facilitare Logging in E che cosa è bella di questo superglobale è che è un array associativo. Un array associativo, ricordo, è solo un array, ma i cui indici non devono più essere numeri come 012. Essi possono essere numeri oppure possono essere anche stringhe. E quindi se hai tuffò pset 7 ancora, si può ricordare che abbiamo memorizzato un ID chiave denominata all'interno di questo array associativo il cui valore è qualcosa come 123 - qualunque sia attualmente connesso ID dell'utente è. La ragione per questo è che, anche dopo che l'utente ha visitato localhost o più in generale il mio sito web e poi hanno effettuato l'accesso, anche se non si fa clic su un collegamento o tornare al mio sito web per 5 minuti o anche un'ora o anche un giorno, ma lasciano la loro finestra del browser aperta, attraverso questo superglobale posso ricordare che sono loggato In altre parole, mi permette di memorizzare un po 'a lungo termine, qualcosa che voglio su un utente. E si può pensare davvero come l'incarnazione di un carrello della spesa. Luoghi come Amazon, ovviamente, puoi mettere le cose in un carrello della spesa, ma HTTP, il protocollo che alimenta il Web, è stateless nel senso che quando si visita un sito web, per la maggior parte non si dispone di un po 'di connessione di rete costante tra il browser e il server. Non appena hai scaricato il codice HTML e le immagini JPEG e le GIF e tutto il resto, la connessione va via e non resta che una copia del codice HTML e quant'altro dal server. Ma se il server vuole ricordare qualcosa su di te, il peso è sul server di registrare effettivamente tali informazioni. E così il programmatore che ha il controllo del server può mettere qualsiasi cosa che si desidera all'interno di questo array associativo superglobale e sarà la prossima volta che l'utente ritorna, che si tratti di minuti o addirittura giorni dopo, a meno che chiudere il proprio finestra del browser, in cui SESSIONE punto scompare. Quindi è di archiviazione effimera, è non-persistente, e ha lo scopo di andare via appena l'utente chiude il browser - non solo quella scheda, spesso l'intero browser, così efficacemente la registrazione l'utente. Così come è questa cosa effettivamente attuato? Diamo un rapido sguardo a un semplice esempio abbiamo guardato il Venerdì. Per chi non conosce, è stato semplice come questo. Questa è una pagina web il cui unico scopo nella vita è quello di dirmi quante volte ho visitato questa pagina. Questa è la prima volta qui il Lunedi che l'ho visitato, così si dice 0 volte. Ma se mi metto a ricaricare la pagina, si dice 1 volta, 2, 3, 4, 5, e questo puo 'solo continuare a contare su, su, su, su, su per ogni volta che ho effettivamente fare clic su Ricarica su di esso. Così come è questo lavoro? Lasciami andare all'interno di questo file chiamato counter.php. La parte superiore di esso è tutti i commenti blu, ma la parte interessante è qui. Alla riga 13 si chiama questa funzione session_start, e che è letteralmente tutto quello che devi fare se vuoi avere accesso a questo superglobale speciale chiamata $ _SESSION. Questo rende possibile, e vedremo in un momento come questo è tutto possibile. In linea 16 avviso quello che sto facendo. Se la chiave, chiamato contatore - in altre parole, il valore di indice - "contatore" esiste all'interno di questo array chiamato SESSIONE, allora che cosa sto facendo con esso nella riga sottostante? Qual è la linea 18 facendo? [Risposta degli studenti incomprensibile] Che cos'è? [Studente] Conservazione del valore. Bene. E 'la memorizzazione del valore che è in sessione al momento in una nuova variabile locale temporanea, $ Contatore in tutte minuscole. Si noti che PHP è già in corso un po 'pigro qui. Si noti che non abbiamo alcuna menzione di int o float o stringa o qualcosa di simile perché PHP è debolmente tipizzato, per cui non è necessario specificare il tipo di una variabile, e in questo caso qui non ho nemmeno ancora dichiarato. Lo sto dichiarando all'interno di queste parentesi graffe e, diversamente da C, questo è in realtà va bene. Non importa quanto profondamente annidato la dichiarazione di una variabile è in PHP - all'interno di parentesi graffe, all'interno della parentesi graffa e simili - sarà in quel momento nel tempo esistono per il resto del programma, nel bene e nel male. Così diventa immediatamente globale, non appena lo si definisce come stiamo facendo qui. In caso contrario, se non trovo che ci sia qualcosa nel superglobale SESSION, Mi pare di inizializzazione questo contatore variabile a 0, in tal modo solo supponendo che l'utente non è mai stato qui prima. E allora questo corso è di incrementare il contatore come? Sto aggiornando il valore che c'è dentro di questo array associativo impostandolo uguale a tutto ciò che è attualmente contatore + 1. Se scorrere verso il basso qui per il codice HTML della pagina, in realtà è abbastanza semplice. Tutto quello che ho nel corpo di questa pagina è: "Hai visitato questo sito volte così e così." E questo è un costrutto PHP. Se lo fai