1 00:00:00,000 --> 00:00:10,393 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: Va bene. 4 00:00:12,120 --> 00:00:12,830 Bentornato. 5 00:00:12,830 --> 00:00:13,890 Questo è CS50. 6 00:00:13,890 --> 00:00:15,570 Questa è la fine della settimana 8. 7 00:00:15,570 --> 00:00:18,360 E come sapete, abbiamo abbastanza orario d'ufficio regolari in alcuni 8 00:00:18,360 --> 00:00:21,090 delle sale da pranzo, compresi Annenberg. 9 00:00:21,090 --> 00:00:23,860 E alcuni dei team gentilmente ha preso alcune foto ultimamente. 10 00:00:23,860 --> 00:00:26,230 E in onore di Halloween, abbiamo pensato di 11 00:00:26,230 --> 00:00:30,160 condividere quello che invece ci ha colto di sorpresa qui in Annenberg padiglione appena 12 00:00:30,160 --> 00:00:31,490 l'altra sera. 13 00:00:31,490 --> 00:00:36,300 Il tuo compagno di classe Jacob ha posato per questa foto, ma era più divertente 14 00:00:36,300 --> 00:00:39,760 era su Facebook, la conseguente conversazione che è successo dopo. 15 00:00:39,760 --> 00:00:43,020 >> Il suo primo post in risposta per la sua foto era questo. 16 00:00:43,020 --> 00:00:46,740 Pochi minuti dopo, ha deciso ad uno se stesso con questo. 17 00:00:46,740 --> 00:00:53,800 Ha continuato poi ad andare a questo, e poi, ancora di più in modo divertente 18 00:00:53,800 --> 00:00:55,320 è quando sua madre intervenne. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 E quindi in ultima analisi, sembra che questo era solo 21 00:01:01,800 --> 00:01:04,860 un meraviglioso stratagemma per un gioco che sta succedendo. 22 00:01:04,860 --> 00:01:07,080 >> Quindi, se volete per vedere Jacob e gli altri, 23 00:01:07,080 --> 00:01:10,880 tra cui Cynthia Meng, che è dietro le quinte del personale zona CS50, 24 00:01:10,880 --> 00:01:13,970 testa a questo URL e questo gioco qui. 25 00:01:13,970 --> 00:01:18,810 Quindi, senza ulteriori indugi, oggi siamo continuare questo sguardo alla programmazione web, 26 00:01:18,810 --> 00:01:21,810 e la creazione effettiva dei programmi che non vengono eseguiti a riga di comando, 27 00:01:21,810 --> 00:01:24,080 ma invece eseguire all'interno di un browser. 28 00:01:24,080 --> 00:01:26,320 >> Presumibilmente ora, o molto in breve, si sta andando 29 00:01:26,320 --> 00:01:30,200 di essere nel bel mezzo di attuazione il proprio server web, che 30 00:01:30,200 --> 00:01:31,700 è differente dalla programmazione web. 31 00:01:31,700 --> 00:01:36,210 Il server web in pset6 è tutto software di scrittura che sa prendere 32 00:01:36,210 --> 00:01:39,300 Richieste HTTP da un browser, o anche da voi, un essere umano, 33 00:01:39,300 --> 00:01:42,340 con un programma chiamato Telnet, e poi rispondere a tali richieste o 34 00:01:42,340 --> 00:01:48,600 sputando fuori un file HTML, o un jpeg o gif, o anche un file .php. 35 00:01:48,600 --> 00:01:52,490 >> Ma con un server web, non è dovrebbe aprire solo un file PHP, 36 00:01:52,490 --> 00:01:55,260 qualcosa che termina in .php, e poi sputare il contenuto. 37 00:01:55,260 --> 00:01:58,440 Si dovrebbe fare ciò che a quel file prima? 38 00:01:58,440 --> 00:01:59,390 Per così dire. 39 00:01:59,390 --> 00:02:04,060 Non compilarlo, abbiamo detto il Lunedi, ma rather-- Quindi, interpretarlo. 40 00:02:04,060 --> 00:02:08,070 >> PHP è un linguaggio interpretato, e così una delle caratteristiche fondamentali del Web 41 00:02:08,070 --> 00:02:11,550 Server, seppur attuato da noi, è questa capacità per il proprio server web 42 00:02:11,550 --> 00:02:12,490 da notare, oh. 43 00:02:12,490 --> 00:02:14,580 Si tratta di un file con estensione .php. 44 00:02:14,580 --> 00:02:17,970 Permettetemi non mi basta inviare al utente come se fosse contenuto statico, 45 00:02:17,970 --> 00:02:20,970 ma mi permetta di leggere riga per linea, da sinistra a destra, e interpretarlo. 46 00:02:20,970 --> 00:02:23,030 >> E per farlo, che si ragazzi sarà essenzialmente 47 00:02:23,030 --> 00:02:26,520 punt a un programma nell'apparecchio, e un sacco di sistemi informatici, 48 00:02:26,520 --> 00:02:27,500 appena chiamato PHP. 49 00:02:27,500 --> 00:02:30,579 Questo è il nome del PHP interprete di lingua. 50 00:02:30,579 --> 00:02:33,120 Così, quel pezzo implementiamo per voi, e ciò che rimane per voi, 51 00:02:33,120 --> 00:02:35,240 infine, è un numero di pezzi, tra cui 52 00:02:35,240 --> 00:02:37,960 è l'attuazione del sostegno per i contenuti statici. 53 00:02:37,960 --> 00:02:40,180 >> Ma ora, e con problema impostare sette, sei 54 00:02:40,180 --> 00:02:43,660 sta per iniziare la transizione a in realtà la scrittura del codice PHP 55 00:02:43,660 --> 00:02:45,970 che verrà interpretato a parlare con un back-end 56 00:02:45,970 --> 00:02:47,960 database che memorizza le informazioni. 57 00:02:47,960 --> 00:02:51,020 Quindi cerchiamo di capire meglio prima un paio di questi superglobals 58 00:02:51,020 --> 00:02:53,720 e quanta potenza si uscire dalla scatola per libero 59 00:02:53,720 --> 00:02:55,250 con un linguaggio come PHP. 60 00:02:55,250 --> 00:02:57,350 Le cose non si dispone di per implementare voi stessi. 61 00:02:57,350 --> 00:03:01,700 >> Quindi, abbiamo visto il Lunedi $ _GET, che è un superglobale, 62 00:03:01,700 --> 00:03:05,496 che è solo PHP parlare per un globale variabile è possibile accedere ovunque. 63 00:03:05,496 --> 00:03:06,620 E quello che c'è dentro di $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Cosa c'è all'interno di questo superglobale che vediamo? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Sicuramente statisticamente a almeno una persona sa. 68 00:03:19,020 --> 00:03:21,590 Che cosa c'è dentro di $ _GET? 69 00:03:21,590 --> 00:03:22,426 Sì? 70 00:03:22,426 --> 00:03:24,130 >> PUBBLICO: E 'le variabili si mette nella stringa di query. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfect. 72 00:03:24,530 --> 00:03:26,488 Sono le variabili inserire nella stringa di query. 73 00:03:26,488 --> 00:03:29,910 Quindi, nel nostro esempio precedente di reimplementare Google quando abbiamo avuto 74 00:03:29,910 --> 00:03:34,130 un URL, e quindi il punto interrogativo, che delimita l'inizio di HTTP 75 00:03:34,130 --> 00:03:37,950 parametri, poi abbiamo avuto q pari qualcosa, come q è uguale a gatti, 76 00:03:37,950 --> 00:03:41,500 ciò che sarebbe andato automaticamente all'interno di che $ _GET super-globale per voi, 77 00:03:41,500 --> 00:03:47,430 causa di PHP, è una chiave di Q, e del loro valore di gatti. 78 00:03:47,430 --> 00:03:51,250 >> In altre parole, $ _GET e tutti queste cose sono gli array associativi, 79 00:03:51,250 --> 00:03:54,530 tabelle hash di sorta, che le chiavi dei negozi e dei valori. 80 00:03:54,530 --> 00:03:57,980 Ora, nel pset5, l'hash tabella che si potrebbe avere attuato, 81 00:03:57,980 --> 00:04:00,220 o la si potrebbe provare hanno attuato, in realtà 82 00:04:00,220 --> 00:04:04,010 era effettivamente un associativa matrice, una struttura di dati 83 00:04:04,010 --> 00:04:07,220 in base al quale è possibile associare chiavi con valori. 84 00:04:07,220 --> 00:04:09,690 >> Ma in pset5, i valori erano banali. 85 00:04:09,690 --> 00:04:12,430 Il valore è sostanzialmente vero o falso. 86 00:04:12,430 --> 00:04:13,900 E 'la parola nel dizionario? 87 00:04:13,900 --> 00:04:18,279 Così, quando si hash una parola come mela per vedere se la mela è presente nel dizionario, 88 00:04:18,279 --> 00:04:21,820 la funzione di controllo presumibilmente tornato vero o falso. 89 00:04:21,820 --> 00:04:24,120 Quindi, questo è effettivamente il valore che stai ricevendo indietro. 90 00:04:24,120 --> 00:04:26,456 >> Ma abbiamo visto il Lunedi brevemente, si può certamente 91 00:04:26,456 --> 00:04:28,830 associare più interessante valori che solo vero o falso 92 00:04:28,830 --> 00:04:30,790 con i tasti, come Apple. 93 00:04:30,790 --> 00:04:33,909 Si potrebbe effettivamente restituire un stringa arbitraria, e in effetti, 94 00:04:33,909 --> 00:04:36,200 questo è quello che $ _GET e questi altre variabili consentono di fare. 95 00:04:36,200 --> 00:04:40,595 >> Quindi, $ _POST è simile nello spirito, ma se si invia un modulo via posta, 96 00:04:40,595 --> 00:04:44,490 un metodo HTTP diverso che è utilizzato per cose come le carte di credito, 97 00:04:44,490 --> 00:04:48,410 e informazioni private, e anche informazioni binarie come foto, 98 00:04:48,410 --> 00:04:51,840 quelle cose finiscono all'interno di $ _POST. 99 00:04:51,840 --> 00:04:53,770 E in realtà per i file come jpeg e quant'altro, 100 00:04:53,770 --> 00:04:58,290 c'è anche un altro che non è qui chiamato $ _FILES pure. 101 00:04:58,290 --> 00:05:01,280 >> Quindi, il server non ci dilungheremo troppo molto, ma ti dà accesso 102 00:05:01,280 --> 00:05:04,860 per ordinare dei dettagli di basso livello su il server stesso che si sta utilizzando. 103 00:05:04,860 --> 00:05:07,430 Cookie e seduta, però, faremo in modo efficace vediamo oggi. 104 00:05:07,430 --> 00:05:10,940 L'ultimo è quello che usiamo per implementare l'idea di un carrello della spesa. 105 00:05:10,940 --> 00:05:14,480 Un super semplice, ma di richiamo che abbiamo avuto questo esempio qui, 106 00:05:14,480 --> 00:05:17,640 contando quante volte si aveva visitato questa pagina prima. 107 00:05:17,640 --> 00:05:20,850 >> Ma oggi, piuttosto che guardare l'effetto di questo, apriamo up 108 00:05:20,850 --> 00:05:22,640 Ispettore di Chrome, che di solito si può 109 00:05:22,640 --> 00:05:25,740 fare cliccando con il tasto destro o Control Cliccando in qualsiasi punto di una pagina web, 110 00:05:25,740 --> 00:05:27,250 e poi scegliere ispezionare elemento. 111 00:05:27,250 --> 00:05:31,600 Oppure si può passare attraverso il menu che descriviamo nelle specifiche di pset6. 112 00:05:31,600 --> 00:05:35,020 E ho intenzione di scheda di rete qui, e cerchiamo di guardare per un momento 113 00:05:35,020 --> 00:05:37,590 il traffico HTTP che è andando avanti e indietro. 114 00:05:37,590 --> 00:05:40,929 >> Permettetemi innanzitutto di andare avanti e cancellare la cache di Chrome. 115 00:05:40,929 --> 00:05:43,470 Così alcuni di voi potrebbero avere familiarità già con questa tecnica, 116 00:05:43,470 --> 00:05:45,790 e abbiamo intenzione di usarlo a scopo di debug qui. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Ora noi, come del computer gli scienziati stanno per iniziare 119 00:05:50,890 --> 00:05:53,920 facendo questo per il debug scopi, per cui 120 00:05:53,920 --> 00:05:55,910 ci sarà cancellare la cache, tipicamente, in modo da 121 00:05:55,910 --> 00:05:57,670 può sbarazzarsi di cose cd cookies. 122 00:05:57,670 --> 00:06:01,700 Quindi probabilmente stai generalmente familiare con ciò biscotti sono, o almeno 123 00:06:01,700 --> 00:06:04,370 che esistono, ma che cosa è la vostra comprensione di essi, 124 00:06:04,370 --> 00:06:06,920 come solo un utente di computer, che cosa è un cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Sì. 127 00:06:09,990 --> 00:06:14,391 >> PUBBLICO: E 'un po' di-- bene, non bit in un periodo di informatica. 128 00:06:14,391 --> 00:06:18,303 E 'un pezzo di dati che un sito manda a voi per 129 00:06:18,303 --> 00:06:20,209 per essere in grado di registrare le statistiche su di voi. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, bene. 131 00:06:21,250 --> 00:06:24,980 Quindi è un pezzo di dati che un del server, mette sul computer, 132 00:06:24,980 --> 00:06:28,840 e cerchiamo di generalizzare ancora di più, è una chiave value-- bene, 133 00:06:28,840 --> 00:06:30,064 che è sempre più precisa. 134 00:06:30,064 --> 00:06:31,980 Si tratta di un pezzo di informazione, un pezzo di dati, 135 00:06:31,980 --> 00:06:34,430 che un server è in grado di mettere sul vostro computer 136 00:06:34,430 --> 00:06:38,592 e molto spesso, il server fa questo al fine di ricordare chi sei. 137 00:06:38,592 --> 00:06:40,300 Così, per esempio, le probabilità sono probabilmente stai 138 00:06:40,300 --> 00:06:42,982 effettuato l'accesso a siti come Facebook, o Gmail, o altri prima, 139 00:06:42,982 --> 00:06:44,940 e si accede con il tuo username e password, 140 00:06:44,940 --> 00:06:49,000 e poi, dopo che, per un certo numero di di minuti o di ore o anche giorni, 141 00:06:49,000 --> 00:06:52,970 il server si ricorda che si sono, infatti, collegato. 142 00:06:52,970 --> 00:06:54,600 Ora, come è che effettivamente accadendo? 143 00:06:54,600 --> 00:06:58,630 Perché tu non sei certo ridigitare il tuo nome utente e la password ogni volta 144 00:06:58,630 --> 00:07:00,760 si passa a un pagina diversa su Facebook. 145 00:07:00,760 --> 00:07:02,570 Così si scopre il biscotti sono la risposta. 146 00:07:02,570 --> 00:07:05,360 >> Un cookie si può pensare come, Un po 'come, una mano digitale 147 00:07:05,360 --> 00:07:09,200 timbro che si potrebbe ottenere in un divertimento parco o un club che in sostanza 148 00:07:09,200 --> 00:07:11,740 Indica che sei stato qui prima, e hai già 149 00:07:11,740 --> 00:07:16,070 mostrato il vostro ID per il buttafuori, per esempio, e che il club o il parco 150 00:07:16,070 --> 00:07:19,050 dovrebbe ora pensare che si hanno già autenticato. 151 00:07:19,050 --> 00:07:21,270 Si sono già state identificate da essa. 152 00:07:21,270 --> 00:07:24,740 >> Quindi, con questo in mente, apriamo contatore in avanti qui. 153 00:07:24,740 --> 00:07:27,220 Lasciami andare avanti, ho appena fatto, e cancellare tutti i miei biscotti. 154 00:07:27,220 --> 00:07:29,970 E ora che cosa ho intenzione di fare è premuto il tasto Maiusc, per buona misura, 155 00:07:29,970 --> 00:07:31,740 e con la forza ricaricare la pagina. 156 00:07:31,740 --> 00:07:34,170 Maiusc basta assicurarsi che nulla viene memorizzato nella cache. 157 00:07:34,170 --> 00:07:36,850 Ed ecco la richiesta che è andato avanti e indietro. 158 00:07:36,850 --> 00:07:41,560 Quindi qui abbiamo una richiesta, e lasciamo mi zoom di qui, e un sacco di questo 159 00:07:41,560 --> 00:07:44,710 è una sorta di dettagli poco interessanti per ora che il browser ha automaticamente 160 00:07:44,710 --> 00:07:47,800 inviato, ma cerchiamo di fare clic su Visualizza Fonte per vedere le intestazioni prime. 161 00:07:47,800 --> 00:07:51,700 >> E se hai fatto immersioni in pset6 già, vi sarà certamente riconoscere le cose 162 00:07:51,700 --> 00:07:54,990 in questo modo, e forse un po ' di queste altre linee qui, 163 00:07:54,990 --> 00:07:59,040 ma ciò che è più interessante per oggi se ho scorrere verso il basso, non alla richiesta 164 00:07:59,040 --> 00:08:02,870 ma la cosiddetta risposta, questa linea probabilmente sembra familiare. 165 00:08:02,870 --> 00:08:04,977 Questa è una buona cosa quando si vede un 200 OK. 166 00:08:04,977 --> 00:08:07,060 A quanto pare questo è il la data e l'ora sul server 167 00:08:07,060 --> 00:08:08,268 e c'è un sacco di roba. 168 00:08:08,268 --> 00:08:09,290 Oh, questo è interessante. 169 00:08:09,290 --> 00:08:13,430 >> Si scopre che ogni volta che si utilizza PHP, almeno in questo server, 170 00:08:13,430 --> 00:08:16,360 il server sputa fuori che cosa versione di PHP che si sta utilizzando. 171 00:08:16,360 --> 00:08:18,962 Il che, in realtà, per la sicurezza scopi, non è una buona cosa. 172 00:08:18,962 --> 00:08:21,170 Ma, torneremo a quella un'altra volta, forse. 173 00:08:21,170 --> 00:08:25,740 Ma ora questa è la linea succosa oggi, e abbiamo visto brevemente alcuni di questi, 174 00:08:25,740 --> 00:08:29,240 Penso che con Facebook, quando ci veniva forato in giro per l'ispettore in quel momento, 175 00:08:29,240 --> 00:08:33,380 set di cookie è ciò che sta piantando quel piccolo pezzo di informazioni 176 00:08:33,380 --> 00:08:34,890 sul vostro computer. 177 00:08:34,890 --> 00:08:37,490 >> Ciò è un'intestazione HTTP che è efficace 178 00:08:37,490 --> 00:08:39,970 dire al vostro browser Chrome, IE, qualunque sia, 179 00:08:39,970 --> 00:08:44,480 hey browser archivio per l'utente del disco rigido, o nella RAM dell'utente, 180 00:08:44,480 --> 00:08:49,680 una chiave denominata PHPSESSID, che è un notazione abbreviata per ID di sessione, 181 00:08:49,680 --> 00:08:53,670 e dargli un valore di 0vlk8t, dot, dot, dot. 182 00:08:53,670 --> 00:08:56,480 Un posto davvero lunga pseudo stringa alfanumerica casuale. 183 00:08:56,480 --> 00:08:59,480 E 'solo un numero molto grande, ma è codificato con lettere e numeri 184 00:08:59,480 --> 00:09:03,550 in modo che la dimensione può essere ancora più grande di numeri da soli. 185 00:09:03,550 --> 00:09:06,947 E poi, tra l'altro, Path = /, che significa semplicemente che questo cookie dovrebbe essere 186 00:09:06,947 --> 00:09:08,780 associato totalità del sito web, 187 00:09:08,780 --> 00:09:11,150 non solo una specifica pagina il tutto. 188 00:09:11,150 --> 00:09:12,930 Quindi questo è che il timbro mano virtuale. 189 00:09:12,930 --> 00:09:16,330 E 'come se il server di Facebook, nel nostro caso l'apparecchio, 190 00:09:16,330 --> 00:09:21,140 0vlk8t ha letteralmente scritto e così via, sulla vostra mano. 191 00:09:21,140 --> 00:09:24,360 Notate ciò che il server del, non farlo è che non è 192 00:09:24,360 --> 00:09:27,730 memorizzare il mio nome utente, certamente non memorizzare la password. 193 00:09:27,730 --> 00:09:31,710 >> Invece, sembra essere la memorizzazione delle informazioni pseudo casuali 194 00:09:31,710 --> 00:09:35,010 in modo che nessuno può indovinare qual è il mio timbro di mano è. 195 00:09:35,010 --> 00:09:37,590 Sul lato server, Nel frattempo, il server 196 00:09:37,590 --> 00:09:40,370 sta per ricordare, probabilmente in un database o qualcosa del genere, 197 00:09:40,370 --> 00:09:46,490 che l'utente, che in futuro presenta un timbro mano di 0vlk8t, dot, 198 00:09:46,490 --> 00:09:51,440 dot, dot, dovrebbe essere associata a questo particolare carrello della spesa, per così dire. 199 00:09:51,440 --> 00:09:55,060 In altre parole, se io ora vado di nuovo qui e ricarica questa pagina, 200 00:09:55,060 --> 00:09:58,020 come fa sapere il server che ho visitato una sola volta? 201 00:09:58,020 --> 00:10:01,730 >> O se lo faccio di nuovo, come fa il server So che ho visitato è due volte? 202 00:10:01,730 --> 00:10:04,680 Beh, se scendo a questo più recente richiesta, che 203 00:10:04,680 --> 00:10:09,150 ora è il terzo che ho inviato in totale, notare la mia richiesta ora. 204 00:10:09,150 --> 00:10:11,300 C'è ancora questo richiedere qui, stesso 205 00:10:11,300 --> 00:10:15,040 come prima, c'è ancora un sacco di roba che abbiamo ignorato come prima, 206 00:10:15,040 --> 00:10:19,350 ma l'ultima intestazione, questo tempo, perché sono stato qui prima, 207 00:10:19,350 --> 00:10:21,980 è una presentazione di questo francobollo mano virtuale. 208 00:10:21,980 --> 00:10:28,957 >> Biscotto per cui questa linea qui, non impostare ma biscotto colon PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 questo è solo il mio browser di automatica presentazione di questo francobollo mano in modo che 210 00:10:32,040 --> 00:10:37,910 Ora il server, non appena si realizza, ooh, questo è utente 0vlk8t dot, dot, dot, 211 00:10:37,910 --> 00:10:42,010 Ora ricordo che lui o lei è e riassociare con quella dell'utente, indipendentemente 212 00:10:42,010 --> 00:10:46,450 informazioni che voglio, e tutti che le informazioni possono essere memorizzate da voi, 213 00:10:46,450 --> 00:10:50,130 il programmatore, in $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> Quindi, per essere chiari, se apro reale veloce in gedit il file vero e proprio, counter.php, 215 00:10:57,170 --> 00:11:02,340 nel mio elenco pubblico host locale come prima, si noti che, in effetti, 216 00:11:02,340 --> 00:11:06,860 Sto in ultima analisi, la memorizzazione in $ _SESSION Tra virgolette "contro", 217 00:11:06,860 --> 00:11:10,110 il valore del contatore precedente, Che ricevo da queste righe qui che abbiamo 218 00:11:10,110 --> 00:11:13,010 guardato l'ultima volta più uno. 219 00:11:13,010 --> 00:11:14,980 Quindi, sotto il cofano, ecco tutti i cookie sono. 220 00:11:14,980 --> 00:11:17,563 E 'proprio il tipo di digitale timbro mano andando avanti e indietro, 221 00:11:17,563 --> 00:11:20,450 e francamente se si apre Chrome Ispettore su qualsiasi sito web 222 00:11:20,450 --> 00:11:22,580 si visita oggi, con altissima probabilità, 223 00:11:22,580 --> 00:11:25,450 si sta andando a vedere forse uno, forse una mezza dozzina di biscotti 224 00:11:25,450 --> 00:11:26,650 essere ricordato da voi. 225 00:11:26,650 --> 00:11:29,500 >> E peggio ancora, se i sito che stai visitando 226 00:11:29,500 --> 00:11:32,640 tutti hanno pubblicità, che è certamente abbastanza comune oggi, 227 00:11:32,640 --> 00:11:36,100 e se questi annunci sono in arrivo da qualche parte centrale, qualcuno 228 00:11:36,100 --> 00:11:39,000 come Google AdWords o in quanto chiamare uno dei loro prodotti 229 00:11:39,000 --> 00:11:42,880 o altri tali fornitori che vendere gli annunci, ciò che è interessante, 230 00:11:42,880 --> 00:11:46,510 e francamente ciò che è un po ' preoccupante, su come funziona HTTP, 231 00:11:46,510 --> 00:11:50,855 è che se si dispone di un annuncio incorporato in Facebook.com e Google.com, 232 00:11:50,855 --> 00:11:54,240 e Harvard.edu, un numero qualsiasi di siti web, in modo che sia tale 233 00:11:54,240 --> 00:11:58,130 che c'è un uomo di mezza che sta scontando up pubblicitari di tutti e tre questi siti web, 234 00:11:58,130 --> 00:12:02,110 si scopre che il i cookie sono per dominio. 235 00:12:02,110 --> 00:12:05,910 >> Quindi, se avete un annuncio proveniente dal stessa società su diversi siti web, 236 00:12:05,910 --> 00:12:11,140 che la società può effettivamente tenere traccia di chi tu sei in tutti quei siti. 237 00:12:11,140 --> 00:12:13,140 Harvard potrebbe non sapere si sta visitando Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook potrebbe non conoscere e si sta visitando Harvard. 239 00:12:15,306 --> 00:12:18,160 Ma qualunque servizio di annunci Stanno usando se tale dominio è 240 00:12:18,160 --> 00:12:21,710 presente in entrambi Harvard.edu web pagine e pagine web Facebook.com, 241 00:12:21,710 --> 00:12:26,850 questo uomo di mezza sicuramente sa chi sei a causa di questi biscotti condivise 242 00:12:26,850 --> 00:12:30,910 attraverso, o meglio a, che la cosiddetta intermediario. 243 00:12:30,910 --> 00:12:33,820 >> Quindi torneremo a questo in implicazioni per la sicurezza degli stessi, 244 00:12:33,820 --> 00:12:37,170 ma c'è un sacco di informazioni essere memorizzati su di te ogni volta che si 245 00:12:37,170 --> 00:12:40,120 visitare la maggior parte qualsiasi pagina web sul Internet e realmente 246 00:12:40,120 --> 00:12:42,877 riduce a questo meccanismo molto semplice. 247 00:12:42,877 --> 00:12:44,710 Cosa succede, allora, se sei super-paranoico 248 00:12:44,710 --> 00:12:48,190 e si decide di andare in Chrome o IE o qualsiasi altra cosa e disattivare i cookie? 249 00:12:48,190 --> 00:12:49,365 Che succede? 250 00:12:49,365 --> 00:12:50,790 Sì? 251 00:12:50,790 --> 00:12:53,170 Si really-- hai fatto questo diritto? 252 00:12:53,170 --> 00:12:54,350 Ok. 253 00:12:54,350 --> 00:12:55,994 No, andare avanti. 254 00:12:55,994 --> 00:12:59,645 >> PUBBLICO: Alcuni siti web non hanno una funzione senza di essa come Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Yeah! 256 00:13:00,520 --> 00:13:02,311 Così alcuni siti web sarà solo smettere di lavorare. 257 00:13:02,311 --> 00:13:05,520 E nella maggior parte dei siti web di questi giorni che fondamentalmente si basano su cookie, 258 00:13:05,520 --> 00:13:08,360 soprattutto se hanno si accede in, sono solo andando a rompere. 259 00:13:08,360 --> 00:13:10,360 Perché prendere in considerazione la alternativa, se il sito web 260 00:13:10,360 --> 00:13:14,480 non ha modo di ricordare chi sei, e quindi il vostro browser non è 261 00:13:14,480 --> 00:13:16,949 che rappresenta con ogni HTTP richiesta di questo francobollo mano, 262 00:13:16,949 --> 00:13:18,740 in modo efficace un sito web come andare di Facebook 263 00:13:18,740 --> 00:13:22,050 di dover richiedere di log in ogni volta darn 264 00:13:22,050 --> 00:13:26,200 si modificano le pagine, o fa clic su un link, che Non è sicuramente un utente particolarmente buona 265 00:13:26,200 --> 00:13:26,920 esperienza. 266 00:13:26,920 --> 00:13:30,020 >> Così che, anche, è tra i compromessi. 267 00:13:30,020 --> 00:13:34,140 Quindi, senza ulteriori indugi, diamo per scontato che con la programmazione web, 268 00:13:34,140 --> 00:13:37,630 in linguaggi come PHP, si può ricordare informazioni del genere in problema impostato 269 00:13:37,630 --> 00:13:41,550 sette anni quando si implementa il proprio Sito E * Trade-simile con cui acquistare 270 00:13:41,550 --> 00:13:45,710 e vendere azioni, vi ricordate esattamente ciò che l'utente ha acquistato e venduto 271 00:13:45,710 --> 00:13:49,110 e che lui o lei è a titolo di questa sessione. 272 00:13:49,110 --> 00:13:51,110 Ma stiamo andando ad avere bisogno un modo più elegante e-mail 273 00:13:51,110 --> 00:13:52,640 per iniziare a tenere le informazioni in giro. 274 00:13:52,640 --> 00:13:53,140 Giusto? 275 00:13:53,140 --> 00:13:56,780 >> Lunedi ', abbiamo parlato di Frosh IM e come in una versione di questo sito web, 276 00:13:56,780 --> 00:14:00,250 anni fa, tutti abbiamo fatto è stato e-mail il Proctor chi è 277 00:14:00,250 --> 00:14:04,250 responsabile degli sport da palestra programma, il nome e il genere, 278 00:14:04,250 --> 00:14:07,330 e anche se non sono un capitano, e il dormitorio di qualcuno che è 279 00:14:07,330 --> 00:14:10,136 registrazione per uno sport intramurale. 280 00:14:10,136 --> 00:14:13,010 Quindi non è male, ma lui o lei allora dovuto troll attraverso la loro e-mail, 281 00:14:13,010 --> 00:14:16,010 fare un foglio di calcolo o qualcosa di simile che, per mantenere tutto organizzato. 282 00:14:16,010 --> 00:14:19,750 Quindi, sicuramente noi, come i programmatori può fare questo per quella Proctor. 283 00:14:19,750 --> 00:14:22,970 E così entra in SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 che sta andando a guardare piuttosto differente sia C e PHP, 285 00:14:26,050 --> 00:14:30,990 e ti immerge in molto di più mani su PHP e problema impostare sette, ma anche SQL, 286 00:14:30,990 --> 00:14:35,310 o SQL, questo è un linguaggio che si utilizza per parlare con un database. 287 00:14:35,310 --> 00:14:36,480 >> Ma che cosa è una banca dati? 288 00:14:36,480 --> 00:14:38,440 Beh, si pensa di un banca dati, almeno per ora, 289 00:14:38,440 --> 00:14:41,750 come solo di essere come un file Excel, o se sei un file di numeri utente a Mac, 290 00:14:41,750 --> 00:14:44,400 o se sei un Google Apps utente un foglio di calcolo di Google, 291 00:14:44,400 --> 00:14:49,120 è effettivamente un database, o realmente specificamente un database relazionale. 292 00:14:49,120 --> 00:14:53,070 Un database relazionale è solo qualcosa che ha righe e colonne, 293 00:14:53,070 --> 00:14:56,440 ed è possibile memorizzare qualsiasi tipo di informazioni di queste righe o colonne. 294 00:14:56,440 --> 00:15:00,480 >> Ma cosa c'è di bello su SQL, e su basi di dati reali, e non solo 295 00:15:00,480 --> 00:15:04,910 fogli di calcolo o fogli di calcolo di Google, è che si può usare una lingua 296 00:15:04,910 --> 00:15:09,000 per eseguire le query in realtà a inserire i dati, per rimuovere i dati, 297 00:15:09,000 --> 00:15:11,620 alla ricerca di dati, anche cosa più importante, e si 298 00:15:11,620 --> 00:15:16,110 non c'è bisogno di usarlo abbastanza manualmente come si potrebbe tipicamente un Google 299 00:15:16,110 --> 00:15:17,690 foglio di calcolo come questo. 300 00:15:17,690 --> 00:15:22,217 >> Quindi, in SQL, c'è un gruppo di dichiarazioni fondamentali o pezzi 301 00:15:22,217 --> 00:15:23,300 di funzionalità incorporata. 302 00:15:23,300 --> 00:15:26,450 Ci sono molti più di questi, ma si può andare una distanza enorme 303 00:15:26,450 --> 00:15:28,620 semplicemente sapendo che questo linguaggio chiamato 304 00:15:28,620 --> 00:15:30,840 SQL ha almeno quattro dichiarazioni è possibile sfruttare. 305 00:15:30,840 --> 00:15:34,420 >> Elimina, per la rimozione dei dati, Inserire, per l'aggiunta di file, 306 00:15:34,420 --> 00:15:37,340 Aggiornamento, per cambiare righe e Selezione, 307 00:15:37,340 --> 00:15:39,860 per ottenere di nuovo le righe e questo è davvero quello che fa SQL. 308 00:15:39,860 --> 00:15:43,810 Opera interamente su righe in modo che quando si inserisce o rimuove, 309 00:15:43,810 --> 00:15:47,470 o l'aggiornamento, oppure selezionare quello che stai tornare come un cosiddetto set di risultati, 310 00:15:47,470 --> 00:15:49,690 come una matrice di righe. 311 00:15:49,690 --> 00:15:51,700 Un gruppo di righe da una tabella. 312 00:15:51,700 --> 00:15:54,050 >> Quindi, di nuovo nel corso della giornata, e anche a questo giorno, 313 00:15:54,050 --> 00:15:56,560 è possibile interagire con il database utilizzando una riga di comando, 314 00:15:56,560 --> 00:15:59,691 ma non è particolarmente divertente da usare questa finestra in bianco e nero stile 315 00:15:59,691 --> 00:16:02,190 ed effettivamente eseguire comandi e curiosare il database. 316 00:16:02,190 --> 00:16:06,054 Un'interfaccia utente grafica, o GUI, è molto più preferibile, forse, 317 00:16:06,054 --> 00:16:08,970 e così lo strumento si consiglia e preinstallato per voi sull'apparecchio 318 00:16:08,970 --> 00:16:10,580 è chiamato phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 E 'una coincidenza totale che il nome di questa cosa ha PHP in esso, 320 00:16:14,060 --> 00:16:17,430 significa solo che il popolo che ha scritto questo programma si 321 00:16:17,430 --> 00:16:18,670 lo ha scritto in PHP. 322 00:16:18,670 --> 00:16:23,740 >> Ma è in ultima analisi, sull'amministrazione un server di database, come un server MySQL 323 00:16:23,740 --> 00:16:26,589 che si potrebbe avere, come si fare, l'apparecchio CS50. 324 00:16:26,589 --> 00:16:29,130 Quindi non c'è più in dettaglio qui di abbiamo bisogno di preoccuparsi di oggi, 325 00:16:29,130 --> 00:16:33,280 ma ciò che è fondamentale è che a sinistra lato è un elenco dei database 326 00:16:33,280 --> 00:16:36,040 che avete sul vostro computer, sul vostro apparecchio CS50, 327 00:16:36,040 --> 00:16:40,090 o venire progetti finali che si potrebbe avere su un terzo, di una società 328 00:16:40,090 --> 00:16:43,415 sito web o server web, che si potrebbe pagare per lo spazio. 329 00:16:43,415 --> 00:16:45,290 Quindi a sinistra è il database, una delle quali 330 00:16:45,290 --> 00:16:48,750 è pset7 che ho preso in prestito a partire dal prossimo settimane pset, e poi sulla cima 331 00:16:48,750 --> 00:16:51,570 ci notare c'è un mazzo di schede, una delle quali 332 00:16:51,570 --> 00:16:55,150 è database, SQL, lo stato, utenti, l'esportazione e così via. 333 00:16:55,150 --> 00:16:56,900 Così si può fare molto modo giusto realizzando 334 00:16:56,900 --> 00:16:59,770 che la maggior parte dell'interfaccia utente è nella colonna in alto a sinistra 335 00:16:59,770 --> 00:17:02,650 e nella parte superiore proprio lì. 336 00:17:02,650 --> 00:17:04,980 Che cosa possiamo realmente fare con questo? 337 00:17:04,980 --> 00:17:08,609 Bene, iniziamo la creazione di un bit di informazioni come segue. 338 00:17:08,609 --> 00:17:11,760 >> Supponiamo che il seguente è il caso, come sarà in pochi giorni, 339 00:17:11,760 --> 00:17:14,440 si desidera implementare un sito web, chiamato CS50 Finanza, 340 00:17:14,440 --> 00:17:17,328 e questo sito ti permette di acquistare tra virgolette e vendere azioni. 341 00:17:17,328 --> 00:17:19,619 E sta andando a capire il prezzo di tali titoli, 342 00:17:19,619 --> 00:17:22,380 in ultima analisi, come si vedrà, parlando con Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Il che, meravigliosamente, dispone di un servizio gratuito in base al quale è possibile passare in una quotazione di borsa 344 00:17:26,250 --> 00:17:29,830 come GOOG per Google, e sarà dare indietro stock attuale di Google 345 00:17:29,830 --> 00:17:32,250 prezzo nel corso dell'ultimo pochi minuti almeno. 346 00:17:32,250 --> 00:17:35,080 >> Così che verrà utilizzato che, in ultima analisi, far finta per l'utente 347 00:17:35,080 --> 00:17:37,750 per comprare e vendere reale scorte che utilizzano denaro virtuale, 348 00:17:37,750 --> 00:17:39,750 ma la prima cosa l'utente sta andando a vedere 349 00:17:39,750 --> 00:17:43,850 È questa schermata di login che chiede loro per il loro username e password. 350 00:17:43,850 --> 00:17:46,540 E così, uno dei primi sfide per voi a pset7 351 00:17:46,540 --> 00:17:50,460 sta per essere per attuare il back-end banca dati, il foglio di calcolo se si vuole, 352 00:17:50,460 --> 00:17:53,369 che sta per memorizzare I nomi utenti e le password 353 00:17:53,369 --> 00:17:56,660 e, infine, quali azioni di loro proprietà, e quanti, e quanto denaro che hanno, 354 00:17:56,660 --> 00:18:00,110 così un sacco di altre cose in altre tabelle o fogli di calcolo. 355 00:18:00,110 --> 00:18:05,020 >> Quindi, diamo un'occhiata a come questo potrebbe sembrare a prima vista. 356 00:18:05,020 --> 00:18:06,980 Ho intenzione di tornare a l'apparecchio e sono 357 00:18:06,980 --> 00:18:14,102 intenzione di andare a questo URL qui phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 e vedrete che mi porta a un'interfaccia 359 00:18:16,060 --> 00:18:18,520 esattamente come abbiamo visto sul screen shot, e qui mi 360 00:18:18,520 --> 00:18:21,560 disporre di un database aggiuntivo chiamato lezione per oggi 361 00:18:21,560 --> 00:18:24,280 e lasciami andare avanti prima e fare clic su pset7. 362 00:18:24,280 --> 00:18:27,940 >> Mi sembra di avere un paio di opzioni, uno per il nuovo, per la creazione di una nuova tabella, 363 00:18:27,940 --> 00:18:30,770 e un link per gli utenti, che è un tavolo ho già creato. 364 00:18:30,770 --> 00:18:31,790 Così che cosa è un tavolo? 365 00:18:31,790 --> 00:18:33,740 Quindi, se è stato utilizzato Excel prima, e se avete 366 00:18:33,740 --> 00:18:37,110 numeri usati o Google Fogli di calcolo, si apre una finestra 367 00:18:37,110 --> 00:18:39,350 e si ottiene un sacco di righe e colonne, 368 00:18:39,350 --> 00:18:43,120 ma poi di solito si hanno fogli di lavoro lungo il fondo, o schede separate. 369 00:18:43,120 --> 00:18:46,140 Si può pensare di ogni foglio di lavoro come una tabella 370 00:18:46,140 --> 00:18:51,150 in modo tale database, in definitiva, è un combinazione di una o più tabelle, una 371 00:18:51,150 --> 00:18:54,064 o più fogli, nel mondo di un foglio normale. 372 00:18:54,064 --> 00:18:55,980 Quindi lasciami andare avanti e clicca su questo foglio di lavoro 373 00:18:55,980 --> 00:18:59,420 che ho già pronti, chiamati gli utenti, pseudonimo 374 00:18:59,420 --> 00:19:00,700 Tabella di database. 375 00:19:00,700 --> 00:19:04,130 E se ho scorrere verso il basso qui, mi permetta di eseguire lo zoom indietro un po ', 376 00:19:04,130 --> 00:19:08,479 questo è ciò che sta dicendo phpMyAdmin noi è all'interno di questa tabella al momento. 377 00:19:08,479 --> 00:19:11,020 E 'un po' di confusione in un primo momento sguardo perché l'interfaccia utente non è 378 00:19:11,020 --> 00:19:15,140 la cosa più bella del mondo, ma ciò che è interessante è questa parte qui. 379 00:19:15,140 --> 00:19:17,970 ID, il nome utente e hash. 380 00:19:17,970 --> 00:19:20,510 >> In anticipo, e ti verrà consegnato questo problema impostare sette, 381 00:19:20,510 --> 00:19:25,050 vi diamo un file contenente un super tabella di database piccolo, preso in prestito in realtà 382 00:19:25,050 --> 00:19:27,070 dall'edizione degli hacker del problema impostare due, 383 00:19:27,070 --> 00:19:29,480 all'interno della quale ci sono sei righe. 384 00:19:29,480 --> 00:19:32,720 Uno per Belinda tutte le fino in fondo a uno per Zamyla, 385 00:19:32,720 --> 00:19:35,980 e notare a fianco di quelli nomi utente sono ID univoci come uno, 386 00:19:35,980 --> 00:19:39,410 due, tre, quattro, cinque, sei, numeri interi, e poi a destra sono hash. 387 00:19:39,410 --> 00:19:42,780 >> E se, le probabilità sono, non hai fatto il problema edizione di hacker ha impostato due, 388 00:19:42,780 --> 00:19:46,560 ma un hash è proprio come un crittografato la password con alcune precisazioni. 389 00:19:46,560 --> 00:19:49,470 E così, quello che vedete qui sono le versioni crittografate di tutti e sei 390 00:19:49,470 --> 00:19:52,950 delle nostre password da problema impostare edizione due hacker. 391 00:19:52,950 --> 00:19:56,500 Ora a sinistra è solo un po 'di roba GUI, modifica questa riga, la copia di questa riga, 392 00:19:56,500 --> 00:19:57,630 l'eliminazione di questa riga. 393 00:19:57,630 --> 00:19:59,840 >> Ma ciò che è interessante Ora è il seguente. 394 00:19:59,840 --> 00:20:03,810 Posso effettivamente iniziare la sperimentazione di questa tabella. 395 00:20:03,810 --> 00:20:07,330 Quindi, se vado e fare clic sul SQL scheda, ho questa grande casella di testo. 396 00:20:07,330 --> 00:20:10,190 E questo non è il modo in cui andremo a farlo quando in realtà la scrittura di codice. 397 00:20:10,190 --> 00:20:12,700 Per essere chiari, phpMyAdmin è solo uno strumento che è 398 00:20:12,700 --> 00:20:16,450 andando a farci curiosare database e di farci sperimentare con le query. 399 00:20:16,450 --> 00:20:19,430 >> Così, per esempio, si supponga che Eseguo esattamente questo. 400 00:20:19,430 --> 00:20:22,820 Seleziona, che è uno di quelli parole chiave che ho menzionato prima, stelle, 401 00:20:22,820 --> 00:20:25,900 che rappresenta tutto le colonne di una tabella. 402 00:20:25,900 --> 00:20:26,820 Da quello tavolo? 403 00:20:26,820 --> 00:20:27,990 Beh, gli utenti. 404 00:20:27,990 --> 00:20:29,950 E notate c'è questo convenzione strano in SQL 405 00:20:29,950 --> 00:20:32,140 dove effettivamente utilizzati indietro zecche, in genere, 406 00:20:32,140 --> 00:20:35,940 Non apici singoli e non doppi quando si parla di tabelle nomi, 407 00:20:35,940 --> 00:20:38,990 così la citazione posteriore è la cosa sul in alto a sinistra della tastiera più 408 00:20:38,990 --> 00:20:39,720 probabile. 409 00:20:39,720 --> 00:20:41,850 >> Quindi lasciami andare avanti ora e lasciare che da sola 410 00:20:41,850 --> 00:20:46,020 e scorrere verso il basso e fare clic su Vai, e siamo in realtà andando a vedere la stessa cosa. 411 00:20:46,020 --> 00:20:52,410 Abbiamo appena eseguito una query SQL dicendo selezionare tutto stelle 412 00:20:52,410 --> 00:20:55,610 da tavolo chiamato degli utenti, e quello che si ottiene di nuovo è questo. 413 00:20:55,610 --> 00:20:58,400 In ultima analisi, noi saremo in grado di fare la stessa cosa nel codice, 414 00:20:58,400 --> 00:21:02,109 ma per ora tutto quello che volevo non era vederlo nel mio browser. 415 00:21:02,109 --> 00:21:03,900 Beh, facciamo qualcosa un po 'diverso. 416 00:21:03,900 --> 00:21:08,330 Torniamo alla scheda SQL, e diciamo solo che cosa? 417 00:21:08,330 --> 00:21:11,520 Zamyla ha perso tutto il suo denaro, e quindi è 418 00:21:11,520 --> 00:21:13,190 giunto il momento di cancellare il suo come un utente. 419 00:21:13,190 --> 00:21:14,630 Non è più l'accesso. 420 00:21:14,630 --> 00:21:18,870 >> Quindi ho intenzione di dire eliminare from-- bene, mantenere la capitalizzazione 421 00:21:18,870 --> 00:21:23,080 per coerenza, eliminare da parte degli utenti dove. 422 00:21:23,080 --> 00:21:25,430 E così, possiamo avere questi predicati, o questi 423 00:21:25,430 --> 00:21:31,180 qualificazioni, alla fine del mio intervento dove e come potrei eliminare Zamyla? 424 00:21:31,180 --> 00:21:34,190 Con il suo nome Zamyla, in modo che il Colonna, una delle colonne 425 00:21:34,190 --> 00:21:37,950 è stato nominato, in modo da dove name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 E qui io uso doppia virgolette o apici singoli, 427 00:21:40,000 --> 00:21:42,958 si usa solo la parte posteriore zecche quando parlando di nomi, per esempio, 428 00:21:42,958 --> 00:21:45,130 di tabelle o campi. 429 00:21:45,130 --> 00:21:47,440 E mi permetta di fare clic su Vai qui. 430 00:21:47,440 --> 00:21:50,400 E ora, la pagina web è essere un po 'teso. 431 00:21:50,400 --> 00:21:53,620 >> Oppure, vuoi veramente eseguire cancellare da parte degli utenti cui nome è uguale Zamyla? 432 00:21:53,620 --> 00:21:54,680 Sì. 433 00:21:54,680 --> 00:22:01,900 Così ora, se torniamo al mio tavolo dagli utenti cliccando, notare che Hm. 434 00:22:01,900 --> 00:22:02,530 Ho preso una cantonata. 435 00:22:02,530 --> 00:22:04,070 E infatti, io tipo di cliccato via così in fretta 436 00:22:04,070 --> 00:22:06,195 non hai nemmeno vedere il messaggio di errore rosso, forse. 437 00:22:06,195 --> 00:22:07,649 Che cosa ho fatto di sbagliato? 438 00:22:07,649 --> 00:22:09,690 PUBBLICO: Non hai bisogno di capitalizzare il suo nome. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Sì, lo capitalizzato il suo nome, 440 00:22:11,260 --> 00:22:13,770 ma il suo username-- in realtà io fatto un paio di errori, giusto? 441 00:22:13,770 --> 00:22:16,720 Uno, il suo nome utente è zamyla, minuscolo Z, 442 00:22:16,720 --> 00:22:20,140 e il nome della colonna è il nome utente, non il nome, quindi cerchiamo di farlo di nuovo. 443 00:22:20,140 --> 00:22:25,750 Lasciami andare avanti e eliminare dagli utenti in cui 444 00:22:25,750 --> 00:22:28,990 nome utente uguale tra virgolette "Zamyla". 445 00:22:28,990 --> 00:22:29,490 Bene? 446 00:22:29,490 --> 00:22:32,600 Quindi questo sembra un po 'meglio, lasciare che andare scorrere verso il basso e fare clic su Vai. 447 00:22:32,600 --> 00:22:34,730 E 'ancora in corso a urlare contro di me per essere sicuro. 448 00:22:34,730 --> 00:22:37,500 I Fare clic su Sì, e ora ci vedo, francamente questo è accaduto, davvero 449 00:22:37,500 --> 00:22:39,870 veloce, meno di un secondo dubbio, questo 450 00:22:39,870 --> 00:22:41,720 è esattamente la query che ha ottenuto eseguita. 451 00:22:41,720 --> 00:22:45,617 Per confermare, mi permetta di fare clic su Utenti e in effetti ora Zamyla non c'è più. 452 00:22:45,617 --> 00:22:46,700 Ora facciamo il contrario. 453 00:22:46,700 --> 00:22:49,320 Supponiamo che Gabe vuole iscriversi al sito. 454 00:22:49,320 --> 00:22:52,825 Qual è la query SQL, qual è il comando potrei digitare aggiungere Gabe? 455 00:22:52,825 --> 00:22:54,200 Beh, è ​​abbastanza semplice. 456 00:22:54,200 --> 00:22:58,260 Inserire in utenti, e ora diventa un po 'criptico. 457 00:22:58,260 --> 00:23:03,190 Ho bisogno di specificare, al server, quali campi che voglio assegnare. 458 00:23:03,190 --> 00:23:06,630 Non mi importa di quello di Gabe ID numero è, quindi ho intenzione di saltare questo. 459 00:23:06,630 --> 00:23:11,360 Io invece intenzione di dire nome utente, hash, e poi 460 00:23:11,360 --> 00:23:14,960 i valori che vogliono mettere ci sta per essere Gabe. 461 00:23:14,960 --> 00:23:16,800 E poi il suo hash, non lo so. 462 00:23:16,800 --> 00:23:19,900 Quindi per ora, ho intenzione di lasciare che, come un grande da fare. 463 00:23:19,900 --> 00:23:21,650 Torneremo a che nel problema impostato 464 00:23:21,650 --> 00:23:23,390 specifiche su come effettivamente farlo. 465 00:23:23,390 --> 00:23:24,630 >> Così notare, ancora una volta, la sintassi. 466 00:23:24,630 --> 00:23:28,430 Inserire nel nome della tabella, quindi una Parentesi elenco dei campi, 467 00:23:28,430 --> 00:23:30,980 le colonne che si desidera aggiungere valori a, e poi basta 468 00:23:30,980 --> 00:23:34,495 lo stesso ordine esatto sinistra a a destra dei valori che si desidera aggiungere, 469 00:23:34,495 --> 00:23:36,870 ed è proprio da imballaggio in quanto il testo è un po 'lungo. 470 00:23:36,870 --> 00:23:38,520 Così ora mi permetta di fare clic su Vai. 471 00:23:38,520 --> 00:23:39,830 Una riga inserita. 472 00:23:39,830 --> 00:23:43,020 E ora se dovessi tornare a gli utenti, ciò che è interessante 473 00:23:43,020 --> 00:23:48,960 è che non solo è Gabe ora nel base di dati, ciò che è apparentemente il suo ID? 474 00:23:48,960 --> 00:23:49,820 >> Beh, è ​​sette. 475 00:23:49,820 --> 00:23:51,479 Perché è sette anni quando io non aggiungerlo? 476 00:23:51,479 --> 00:23:54,020 Quindi anche questo è uno dei caratteristiche si ottiene del database. 477 00:23:54,020 --> 00:23:55,750 Un sacco di costruito in funzionalità. 478 00:23:55,750 --> 00:23:57,950 Si scopre che, quando creato questa tabella, 479 00:23:57,950 --> 00:24:01,390 I preconfigurati che è automaticamente assegnare un ID in modo 480 00:24:01,390 --> 00:24:02,480 che incrementa. 481 00:24:02,480 --> 00:24:05,470 Quindi, se hai mai curiosato, e guardò che cosa il vostro Facebook ID 482 00:24:05,470 --> 00:24:09,292 numero è, in questi giorni non è davvero una cosa da fare, ma Facebook come una API, 483 00:24:09,292 --> 00:24:11,750 Application Programming Interface, in base al quale si può tornare indietro 484 00:24:11,750 --> 00:24:14,430 un sacco di dati su te, per i tuoi amici, 485 00:24:14,430 --> 00:24:15,347 e le connessioni. 486 00:24:15,347 --> 00:24:17,430 E che cosa ha usato per essere gentile di fresco, di nuovo nel corso della giornata, 487 00:24:17,430 --> 00:24:19,510 è stato quello di cercare ciò che il vostro Facebook numero ID è stato. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg di, per esempio, è tre 489 00:24:22,390 --> 00:24:23,890 dato che era l'autore del sito. 490 00:24:23,890 --> 00:24:27,610 E come va la storia, ha creato due account di prova, gli utenti uno e due, 491 00:24:27,610 --> 00:24:28,690 che poi cancellato. 492 00:24:28,690 --> 00:24:32,780 E così, Zuck, come è il suo nome utente su Facebook, è il numero ID di tre, 493 00:24:32,780 --> 00:24:36,110 e tutti noi abbiamo un numero molto più grande di tre in questi giorni. 494 00:24:36,110 --> 00:24:37,980 Infatti, ad un certo punto Facebook si allontanò 495 00:24:37,980 --> 00:24:42,410 da anche con un int, che è un valore di 32 bit, all'utilizzo 496 00:24:42,410 --> 00:24:44,480 il passo successivo, essenzialmente un lungo lungo in modo 497 00:24:44,480 --> 00:24:47,150 che potevano ospitare ancora di più gli utenti si iscrivono. 498 00:24:47,150 --> 00:24:49,420 Quindi un po 'fatto storico divertimento. 499 00:24:49,420 --> 00:24:51,660 >> Ecco, questo è proprio il sintassi di base con la quale 500 00:24:51,660 --> 00:24:54,470 potremmo eseguire un paio di query, ma possiamo in realtà 501 00:24:54,470 --> 00:24:56,744 fare un po 'di più le cose con SQL. 502 00:24:56,744 --> 00:24:58,910 E vedrete, in ultima analisi, nel problema impostare sette 503 00:24:58,910 --> 00:25:01,034 che si deve fare una numero di decisioni di progettazione, 504 00:25:01,034 --> 00:25:03,290 tra i quali sta per essere quali tipi di dati da utilizzare. 505 00:25:03,290 --> 00:25:08,240 Quindi, proprio come in C, ci sono dati tipi in un database, come MySQL, 506 00:25:08,240 --> 00:25:12,640 ed i tipi di dati che si devono scegliere da includere questi campi qui. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, int, int grande, decimale e data ora, e molti altri. 508 00:25:17,287 --> 00:25:18,370 Quindi cerchiamo di fare questo in realtà. 509 00:25:18,370 --> 00:25:21,060 Facciamo finta che non abbiamo fatto mano che il tavolo di questo utente 510 00:25:21,060 --> 00:25:25,080 e lasciami andare avanti e creare, per io stesso, nel corso delle lezioni database-- 511 00:25:25,080 --> 00:25:31,000 in realtà mi permetta di andare avanti e cancellare la tabella che ho qui già 512 00:25:31,000 --> 00:25:32,940 in modo da poter effettivamente creare questo. 513 00:25:32,940 --> 00:25:33,550 Ops. 514 00:25:33,550 --> 00:25:35,970 Ho intenzione di abbandonare questo tavolo, e ora sono 515 00:25:35,970 --> 00:25:38,337 intenzione di andare di nuovo al lezione del database qui, 516 00:25:38,337 --> 00:25:40,420 Ho intenzione di creare una tabella chiamate utenti e cerchiamo di 517 00:25:40,420 --> 00:25:43,010 basta fare tre colonne inizialmente e fare clic su Vai. 518 00:25:43,010 --> 00:25:44,990 >> Ora, per la maggior parte, ancora una volta, questo è solo 519 00:25:44,990 --> 00:25:48,570 utilizzando questo strumento grafico chiamato phpMyAdmin, e quello che stiamo facendo ora 520 00:25:48,570 --> 00:25:49,600 è la creazione di una tabella. 521 00:25:49,600 --> 00:25:53,170 Quindi questo è come andare su File, Nuovo, e la creazione di un nuovo file di Excel. 522 00:25:53,170 --> 00:25:55,440 Quindi mi sta chiedendo alcuni domande, da sinistra a destra, 523 00:25:55,440 --> 00:25:58,620 qual è il nome della prima colonna, quindi il nome della seconda colonna, 524 00:25:58,620 --> 00:25:59,560 e il nome del terzo. 525 00:25:59,560 --> 00:26:00,518 Quindi cerchiamo di ricreare questo. 526 00:26:00,518 --> 00:26:05,460 ID, e quindi il nome utente è stato uno, e poi hash è stato un altro. 527 00:26:05,460 --> 00:26:08,970 Che cosa si deve il tipo di dati essere ora un campo come ID? 528 00:26:08,970 --> 00:26:14,470 >> Ecco la lista completa dei tipi di dati a vostra disposizione in un database, 529 00:26:14,470 --> 00:26:16,070 e per ora facciamo solo andare con int. 530 00:26:16,070 --> 00:26:18,160 Valore a 32 bit, non lo faccio che realisticamente sono 531 00:26:18,160 --> 00:26:21,484 andando ad avere più di 4 miliardi gli utenti nel mio account, nel mio servizio, 532 00:26:21,484 --> 00:26:23,650 così ho intenzione di tenere in movimento alla prossima domanda. 533 00:26:23,650 --> 00:26:25,490 Non ho intenzione di specificare una lunghezza o valori, 534 00:26:25,490 --> 00:26:28,540 non è applicabile qui per un int, per sé. 535 00:26:28,540 --> 00:26:30,740 E ora posso specificare, a quanto pare, un default 536 00:26:30,740 --> 00:26:33,970 valore, che non ho intenzione di specificare. 537 00:26:33,970 --> 00:26:36,050 Le regole di confronto, non so di cosa si tratta. 538 00:26:36,050 --> 00:26:37,290 Un attributo. 539 00:26:37,290 --> 00:26:39,455 Ora abbiamo effettivamente facciamo una decisione di progettazione. 540 00:26:39,455 --> 00:26:42,580 Quindi c'è qualche campo qui, non tutti dei quali si applica, ma non firmato 541 00:26:42,580 --> 00:26:43,380 significa semplicemente che cosa? 542 00:26:43,380 --> 00:26:45,400 Che l'int deve essere? 543 00:26:45,400 --> 00:26:46,210 Basta non negativo. 544 00:26:46,210 --> 00:26:48,090 Quindi deve essere 0 su. 545 00:26:48,090 --> 00:26:51,120 No, non ho intenzione di controllare perché Voglio ogni utente di avere un ID, 546 00:26:51,120 --> 00:26:52,470 non può essere nullo. 547 00:26:52,470 --> 00:26:55,949 E poi, si arriva a un po 'di più decisioni di progettazione interessanti come questo. 548 00:26:55,949 --> 00:26:58,990 Torneremo a questo in un momento, ma ciò che un'altra caratteristica di base di dati 549 00:26:58,990 --> 00:27:04,200 è, è che si può dire il server di database andare avanti 550 00:27:04,200 --> 00:27:07,100 e ottimizzare te stesso, la tua RAM e spazio su disco rigido, 551 00:27:07,100 --> 00:27:11,770 in modo che seleziona e inserti, e elimina, e gli aggiornamenti sono veramente veloce. 552 00:27:11,770 --> 00:27:13,250 In contrasto con pset5. 553 00:27:13,250 --> 00:27:16,259 >> Se si voleva cercare qualcosa nella tabella hash, che 554 00:27:16,259 --> 00:27:18,300 si pensa come un database, che ha dovuto fare tutto il 555 00:27:18,300 --> 00:27:21,500 lavorare per rendere la vostra tabella hash veloce. 556 00:27:21,500 --> 00:27:22,840 E 'come, ovviamente, si. 557 00:27:22,840 --> 00:27:23,060 Giusto? 558 00:27:23,060 --> 00:27:26,080 Dovevi mettere in tutto il tempo bene messa a punto le cose, ottenendo una funzione di hash 559 00:27:26,080 --> 00:27:27,820 a destra, per capire come molti secchi di avere. 560 00:27:27,820 --> 00:27:29,611 >> Ma ciò che è bello, ancora una volta, circa un database 561 00:27:29,611 --> 00:27:31,762 basta punt tutti questo ad altre persone 562 00:27:31,762 --> 00:27:33,720 che hanno pensato che questo attraverso di voi, e che cosa 563 00:27:33,720 --> 00:27:37,170 Io vado a dire qui sotto indice è che il mio campo ID 564 00:27:37,170 --> 00:27:41,149 sta per essere il modo principale di identificare gli utenti in questo database. 565 00:27:41,149 --> 00:27:42,940 Non ho intenzione di pensare di Zamyla come Zamyla, 566 00:27:42,940 --> 00:27:45,800 Ho intenzione di pensare a lei come il numero 6. 567 00:27:45,800 --> 00:27:49,814 >> Perché è, forse, meglio intuitivamente pensare e il modello 568 00:27:49,814 --> 00:27:52,480 ciascuno dei vostri file individuali con un numero invece di qualcosa 569 00:27:52,480 --> 00:27:56,480 come una corda, come il Zamyla o Gabe o stringa più lunga ancora? 570 00:27:56,480 --> 00:27:57,444 Sì? 571 00:27:57,444 --> 00:28:00,117 >> PUBBLICO: Un ID è unico? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: dire ancora? 573 00:28:01,200 --> 00:28:02,283 PUBBLICO: Un ID è unico? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Un ID è unica, ma suppose-- 575 00:28:04,400 --> 00:28:06,320 se del caso, in generale, con nomi utente, supponiamo 576 00:28:06,320 --> 00:28:10,110 Ho anche detto che ci può essere un solo Zamyla nel mondo, e solo uno Gabe. 577 00:28:10,110 --> 00:28:13,730 Ho potuto imporre l'unicità vincolo sulle stringhe, anche se avessi voluto. 578 00:28:13,730 --> 00:28:15,550 Quindi non è un cattivo pensiero. 579 00:28:15,550 --> 00:28:16,500 >> PUBBLICO: Più sicuro. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Più sicuro, perché? 581 00:28:17,874 --> 00:28:20,705 PUBBLICO: Non si può dire che è che, come in uso. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, non può dire quale utente 583 00:28:22,580 --> 00:28:24,380 è che quindi c'è una privacy aspetto da esso, 584 00:28:24,380 --> 00:28:27,810 specialmente se gli ID forse che appare negli URL. 585 00:28:27,810 --> 00:28:29,960 Così sicuro, che potrebbe tipo di lavoro, anche. 586 00:28:29,960 --> 00:28:30,640 Altri pensieri? 587 00:28:30,640 --> 00:28:31,383 Sì? 588 00:28:31,383 --> 00:28:34,316 >> PUBBLICO: E 'più facile eseguire operazioni su un int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Questo è il vero kicker. 590 00:28:35,940 --> 00:28:38,850 E 'solo più efficiente, o più facile per il computer, 591 00:28:38,850 --> 00:28:40,431 per eseguire operazioni su un numero intero. 592 00:28:40,431 --> 00:28:40,930 Giusto? 593 00:28:40,930 --> 00:28:43,905 Un int è garantito per essere a 32 bit, mentre Zamyla 594 00:28:43,905 --> 00:28:47,660 è lungo un paio di caratteri, Gabriel è lungo un paio di caratteri, 595 00:28:47,660 --> 00:28:51,930 Davenport è davvero lunga, e quindi è non particolarmente efficiente usare 596 00:28:51,930 --> 00:28:55,860 stringhe per confrontare i valori e guardare per i campi, e campi di aggiornamento, 597 00:28:55,860 --> 00:28:57,790 se si può uscire con un solo numero intero. 598 00:28:57,790 --> 00:28:59,090 A soli 32 bit. 599 00:28:59,090 --> 00:29:02,570 Quindi nomi utente, anche, in questo modo, non c'è bisogno di essere unico, 600 00:29:02,570 --> 00:29:05,040 anche se probabilmente dovrebbe essere, e anche in questo modo troppo 601 00:29:05,040 --> 00:29:07,520 un utente potrebbe essere consentito di cambiare il proprio nome utente. 602 00:29:07,520 --> 00:29:10,810 >> Quindi cerchiamo di ora lasciare questo come il mezzo principale di identificare l'utente. 603 00:29:10,810 --> 00:29:13,510 Questo dice la banca dati andare avanti e ottimizzare te 604 00:29:13,510 --> 00:29:17,065 in modo che i look up su ID sono super veloce. 605 00:29:17,065 --> 00:29:19,620 AI, orribilmente nome, solo significa Incremento automatico, 606 00:29:19,620 --> 00:29:21,500 e questo è il controllo Box abbiamo bisogno di controllare 607 00:29:21,500 --> 00:29:24,614 per specificare che il campo ID essere aggiornati automaticamente per me, 608 00:29:24,614 --> 00:29:26,530 e poi ho intenzione di scorrere verso destra qui 609 00:29:26,530 --> 00:29:29,279 e francamente io non sono realmente interessati in più di questi campi. 610 00:29:29,279 --> 00:29:30,630 Di certo non oggi. 611 00:29:30,630 --> 00:29:33,770 >> Quindi ho intenzione di tornare qui, la prima colonna, dove 612 00:29:33,770 --> 00:29:35,830 Ho bisogno di specificare il nome utente e hash, e cerchiamo di 613 00:29:35,830 --> 00:29:38,080 almeno focus sulla secondo per ora. 614 00:29:38,080 --> 00:29:41,498 Int non è probabilmente la scelta giusta, così che cosa ha più senso, forse? 615 00:29:41,498 --> 00:29:42,741 >> PUBBLICO: Testo. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: dire ancora? 617 00:29:43,824 --> 00:29:44,710 PUBBLICO: Testo. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Testo? 619 00:29:44,980 --> 00:29:45,590 OK, ho sentito il testo. 620 00:29:45,590 --> 00:29:46,090 Cos'altro? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Abbiamo tipo di avere un gruppo di scelte che sono testuali in natura. 623 00:29:53,860 --> 00:29:55,990 Così, quando, e perché, fare di utilizzare alcuni di questi? 624 00:29:55,990 --> 00:29:59,560 Beh char, contrariamente a quanto si potrebbe pensare, non è un singolo carattere. 625 00:29:59,560 --> 00:30:01,550 E 'un numero specifico di caratteri. 626 00:30:01,550 --> 00:30:04,600 Quindi, se sappiamo che tutti i nomi utente deve essere come otto caratteri, 627 00:30:04,600 --> 00:30:08,490 come usato per essere comune a più vecchio sistemi informatici, potrei dire char 628 00:30:08,490 --> 00:30:09,830 e poi potrei dire 8 qui. 629 00:30:09,830 --> 00:30:12,930 Questo è quando la terza colonna diventa applicabili durante la creazione di una tabella. 630 00:30:12,930 --> 00:30:15,450 >> Ma questo è un po 'fastidioso perché alcune persone potrebbero 631 00:30:15,450 --> 00:30:17,660 vogliono avere un nome utente più di otto caratteri, 632 00:30:17,660 --> 00:30:19,743 alcune persone potrebbero voler disporre di un nome utente più breve, 633 00:30:19,743 --> 00:30:22,210 quindi perché mi impegno per un numero specifico? 634 00:30:22,210 --> 00:30:24,710 Perché non avere una variabile numero di caratteri e solo 635 00:30:24,710 --> 00:30:28,580 dire che la lunghezza massima di un nome è, non lo so, come 64 caratteri. 636 00:30:28,580 --> 00:30:31,780 Non riesco a pensare a degli amici che hanno nomi più lungo di 64 caratteri, 637 00:30:31,780 --> 00:30:34,810 e anche se è troppo corto si potrebbe certamente aumentarlo arbitrariamente. 638 00:30:34,810 --> 00:30:37,330 >> Così varchar è una variabile numero di caratteri. 639 00:30:37,330 --> 00:30:41,010 Il testo non è un cattivo istinto, e francamente che tipo di fa quello che dice, 640 00:30:41,010 --> 00:30:45,460 tuttavia il campo di testo può essere come 65.000 byte almeno. 641 00:30:45,460 --> 00:30:50,790 Questo è probabilmente eccessivo per un campo, e in effetti, proprio così, 65.535. 642 00:30:50,790 --> 00:30:53,740 Questo è probabilmente eccessivo per un nome, quindi ci atteniamo, in genere, 643 00:30:53,740 --> 00:30:56,910 con VARCHAR per testuali campo e hash, troppo. 644 00:30:56,910 --> 00:30:59,990 Hash, si scopre, si potrebbe fare un varchar così o qualcosa del genere, 645 00:30:59,990 --> 00:31:03,080 ma non ci concentreremo oggi sul la crittografia lì e numeri 646 00:31:03,080 --> 00:31:05,210 che potrebbe effettivamente consiglia di utilizzare per la sua lunghezza. 647 00:31:05,210 --> 00:31:07,430 >> Ma mi permetta di scorrere verso il basso a destra. 648 00:31:07,430 --> 00:31:11,280 È possibile avere un solo indice primario per una tabella, 649 00:31:11,280 --> 00:31:16,380 ma voglio applicare uno di questi, ora, per il nome utente, diresti? 650 00:31:16,380 --> 00:31:21,980 Che cosa dovrebbe nomeutente essere basata su un vago comprensione di queste quattro opzioni? 651 00:31:21,980 --> 00:31:23,340 Solo con il loro nome? 652 00:31:23,340 --> 00:31:24,140 >> PUBBLICO: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: così unico, giusto? 654 00:31:25,100 --> 00:31:28,190 Così si scopre che non solo poteva dici di un database, in anticipo, 655 00:31:28,190 --> 00:31:30,380 questo è il modo primario di individuare campi. 656 00:31:30,380 --> 00:31:32,990 Si può anche dire che questo è sarà un campo univoco. 657 00:31:32,990 --> 00:31:34,700 Non sarà la cosa mi baso su, 658 00:31:34,700 --> 00:31:38,490 ma vorrei che la base di dati di in sostanza, avere quella se la condizione, in modo da 659 00:31:38,490 --> 00:31:42,340 che se avessi mai provato a registrarmi due utenti con lo stesso nome, 660 00:31:42,340 --> 00:31:44,360 la flat out del database non ha intenzione di lasciarmi. 661 00:31:44,360 --> 00:31:47,490 Potrei avere qualche codice aggiuntivo in PHP che impedisce tanto, 662 00:31:47,490 --> 00:31:50,640 ma il database, inoltre, può garantire che questo è mai succederà. 663 00:31:50,640 --> 00:31:53,370 >> Ora, per inciso, tanto più pensi di progetti finali, 664 00:31:53,370 --> 00:31:57,030 tenere a mente l'indice e completa testo sono in realtà molto utile. 665 00:31:57,030 --> 00:32:01,080 Se si dispone di un database più grande, non con decine, ma con centinaia o migliaia 666 00:32:01,080 --> 00:32:05,270 o addirittura milioni di campi, è possibile anche dire la base di dati in anticipo 667 00:32:05,270 --> 00:32:07,980 questo è un campo che sto di essere alla ricerca su un terreno. 668 00:32:07,980 --> 00:32:10,520 Forse il suo nome utente, forse è bio, se siete 669 00:32:10,520 --> 00:32:13,750 fare un sito web di Facebook, come quello ha punti che l'utente è permesso 670 00:32:13,750 --> 00:32:16,799 per salvare, e se si vuole dire il database in anticipo 671 00:32:16,799 --> 00:32:20,090 Ho intenzione di essere alla ricerca in questo campo molto, ma non è necessariamente unico, 672 00:32:20,090 --> 00:32:22,800 è possibile specificare me creare un indice. 673 00:32:22,800 --> 00:32:27,990 In alternativa, si può dire anche permettere che io faccia sorta di perquisizioni arbitrarie come Command 674 00:32:27,990 --> 00:32:30,420 o di controllo F, come voi potrebbe in un elaboratore di testi, 675 00:32:30,420 --> 00:32:34,184 così si poteva guardare stringhe arbitrarie o sottostringhe in questo campo. 676 00:32:34,184 --> 00:32:36,600 In altre parole, stiamo ottenendo al punto nel semestre 677 00:32:36,600 --> 00:32:40,720 dove non dovete preoccuparvi di come implementare le cose in modo efficiente. 678 00:32:40,720 --> 00:32:44,540 Hai solo bisogno di sapere su che cosa decisioni di progettazione per fare in modo che tu sia 679 00:32:44,540 --> 00:32:48,470 utilizzando gli strumenti giusti per il commercio, al fine di sfruttare le caratteristiche 680 00:32:48,470 --> 00:32:50,380 che altre persone hanno costruito per voi. 681 00:32:50,380 --> 00:32:54,240 Quindi, per ricapitolare, primario dovrebbe solo avere uno, si può avere un solo, 682 00:32:54,240 --> 00:32:59,630 ed è la cosa che sta impegnandosi a usando per identificare in modo univoco i campi. 683 00:32:59,630 --> 00:33:02,710 Unico è solo simile nello spirito, ma si potrebbe solo occasionalmente utilizzarlo, 684 00:33:02,710 --> 00:33:04,530 ma si desidera che il database di imporla. 685 00:33:04,530 --> 00:33:08,050 Indice significa solo preventivamente accelerare le cose in futuro 686 00:33:08,050 --> 00:33:10,230 in modo che posso cercare le cose in questo campo. 687 00:33:10,230 --> 00:33:13,700 E poi il testo completo è in generale per paragrafi, o saggi, o grandi enti 688 00:33:13,700 --> 00:33:16,270 di testo in cui si potrebbe anche avere 689 00:33:16,270 --> 00:33:19,420 jolly come l'equivalente della stella. 690 00:33:19,420 --> 00:33:19,920 Destra. 691 00:33:19,920 --> 00:33:22,580 >> In modo che era una sorta di molto a tutti in una volta. 692 00:33:22,580 --> 00:33:25,220 Vediamo se non siamo in grado di distillare un paio di queste caratteristiche 693 00:33:25,220 --> 00:33:29,540 e poi costruire qualcosa abbastanza semplice, ma potente. 694 00:33:29,540 --> 00:33:31,380 Così tra l'altro decisioni di progettazione che siete 695 00:33:31,380 --> 00:33:34,005 in ultima analisi, sta per avere è lungo le linee di motori di archiviazione. 696 00:33:34,005 --> 00:33:37,370 E vorrei solo fare menzione di questo in previsione di progetti finali, 697 00:33:37,370 --> 00:33:42,020 e l'anticipazione di LET'S say-- non facciamo questo. 698 00:33:42,020 --> 00:33:43,820 Costruiamo questo piccolo prima applicazione. 699 00:33:43,820 --> 00:33:48,070 Ho intenzione di andare nel mio terminale finestra, e qui non è 700 00:33:48,070 --> 00:33:52,500 solo counter.php, che ora stiamo andando per sbarazzarsi di come non più germano, 701 00:33:52,500 --> 00:33:54,570 ma abbiamo un sacco di directory e questo 702 00:33:54,570 --> 00:33:58,080 sta per essere molto simile nello spirito di quello che vedrete nel problema impostare sette. 703 00:33:58,080 --> 00:34:00,980 >> Quindi abbiamo tre directory include pubblici e modelli, che 704 00:34:00,980 --> 00:34:05,040 è esattamente dove avevamo lasciato su Lunedi con tutto il nostro paradigma MVC. 705 00:34:05,040 --> 00:34:09,290 E per ricapitolare, in pubblico sta per andare tutti i file che voglio agli utenti di realtà 706 00:34:09,290 --> 00:34:12,969 v essere in grado di visitare in proprio browser mediante URL. 707 00:34:12,969 --> 00:34:13,502 Template. 708 00:34:13,502 --> 00:34:14,710 Che cosa abbiamo messo in modelli? 709 00:34:14,710 --> 00:34:17,070 Che tipo di cose? 710 00:34:17,070 --> 00:34:21,659 Non c'era molto ma un paio file di almeno il Lunedi. 711 00:34:21,659 --> 00:34:22,619 Sì. 712 00:34:22,619 --> 00:34:23,100 >> PUBBLICO: Intestazione e piè di pagina? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Intestazione e piè di pagina. 714 00:34:24,516 --> 00:34:26,679 Così abbiamo qualcosa di simile anche oggi. 715 00:34:26,679 --> 00:34:30,330 Abbiamo un paio di file, ma Piè di pagina vedo, intestazione vedo, 716 00:34:30,330 --> 00:34:31,909 e poi un sacco di altri file. 717 00:34:31,909 --> 00:34:35,482 Quindi questo è l'equivalente della vista V MVC, che, 718 00:34:35,482 --> 00:34:37,690 di nuovo, sarà un po 'più chiaro nel problema set di sette, 719 00:34:37,690 --> 00:34:40,380 ma questo è solo una cartella sono mettendo un sacco di miei estetica. 720 00:34:40,380 --> 00:34:42,840 Un sacco di mia HTML, un sacco di mie forme. 721 00:34:42,840 --> 00:34:46,899 Nel frattempo, comprende, è un altro directory che ha questi tre file 722 00:34:46,899 --> 00:34:48,440 e diamo un rapido sguardo a questi. 723 00:34:48,440 --> 00:34:51,699 >> Ho intenzione di andare avanti e di aprire config.php. 724 00:34:51,699 --> 00:34:54,610 Come si è visto, molto come in precedenza nel termine, 725 00:34:54,610 --> 00:34:57,850 si sharp incluso CS50 dot h con pset7. 726 00:34:57,850 --> 00:35:00,780 Nell'esempio di oggi, si sta andando per fare l'equivalente di tale 727 00:35:00,780 --> 00:35:03,600 con una dichiarazione richiedere che effettivamente 728 00:35:03,600 --> 00:35:05,340 comprende le diverse linee. 729 00:35:05,340 --> 00:35:08,225 Quindi, per essere chiari, questo è un file chiamato config.php. 730 00:35:08,225 --> 00:35:09,350 E notare quello che sta facendo. 731 00:35:09,350 --> 00:35:11,970 E 'a quanto pare fare qualcosa criptici svolta sui messaggi di errore, 732 00:35:11,970 --> 00:35:13,680 in modo che li si può vedere nel browser. 733 00:35:13,680 --> 00:35:15,860 È, poi, pare richiede altri due file 734 00:35:15,860 --> 00:35:19,530 quindi questo è come #include in C, e allora questo abbiamo visto, 735 00:35:19,530 --> 00:35:22,720 e ci siamo affidati a, questo si accende carrello della spesa che come funzionalità. 736 00:35:22,720 --> 00:35:25,610 >> Ciò significa che una volontà biscotto essere inviati avanti e indietro. 737 00:35:25,610 --> 00:35:27,290 Allora, perché è interessante? 738 00:35:27,290 --> 00:35:32,460 Beh, se torniamo a questo directory e aprire, per esempio, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Si noti che PHP fa costanti di sostegno, non è abbastanza come #define in C. 741 00:35:38,840 --> 00:35:41,290 Al contrario, è letteralmente dire definiti, e l'avviso 742 00:35:41,290 --> 00:35:44,110 che ho memorizzato in anticipo quattro costanti in questo file. 743 00:35:44,110 --> 00:35:47,020 Uno per il database di oggi, per la mia parola d'ordine, per il mio nome utente, 744 00:35:47,020 --> 00:35:48,690 e per il nome del server. 745 00:35:48,690 --> 00:35:51,644 Quindi, questi sono in realtà per essere molto simile a problema impostare sette. 746 00:35:51,644 --> 00:35:54,560 E, infine, e questo è dove sono intenzione di ottenere qualche bella funzionalità 747 00:35:54,560 --> 00:35:59,000 da parte del personale, in functions.php è un mucchio di codice che abbiamo scritto, 748 00:35:59,000 --> 00:36:01,040 e ho rubato un po 'di questo dal problema impostare sette 749 00:36:01,040 --> 00:36:05,920 per oggi, che fa un sacco di cose e diamo un'occhiata ad uno di essi 750 00:36:05,920 --> 00:36:07,270 in particolare. 751 00:36:07,270 --> 00:36:09,720 Questa funzione qui, ricerca, sta per essere 752 00:36:09,720 --> 00:36:13,600 la funzione di PHP che chiamiamo per eseguire SQL. 753 00:36:13,600 --> 00:36:16,070 Un momento fa eravamo con phpMyAdmin, ma questo è solo 754 00:36:16,070 --> 00:36:18,720 per genere di scopi di apprendimento e scopi diagnostici 755 00:36:18,720 --> 00:36:20,494 e dimenticando il set di database. 756 00:36:20,494 --> 00:36:22,660 Quando si utilizza la realtà database, è, l'umano, 757 00:36:22,660 --> 00:36:24,100 sono ovviamente non andare da tirare su un sito web 758 00:36:24,100 --> 00:36:25,740 pagina ogni volta che qualcuno registra. 759 00:36:25,740 --> 00:36:29,870 Hai intenzione di scrivere codice che Inserti e cancella gli utenti on demand, 760 00:36:29,870 --> 00:36:32,490 e stiamo andando a fare questo mediante la funzione di interrogazione. 761 00:36:32,490 --> 00:36:35,360 Se ora scorrere verso il basso, c'è sarà un paio di caratteristiche. 762 00:36:35,360 --> 00:36:37,170 Redirect sta per essere una funzione che abbiamo scritto 763 00:36:37,170 --> 00:36:40,160 per te, che si permette di inviare l'utente ad un altro URL, 764 00:36:40,160 --> 00:36:43,780 e il rendering è una funzione, piuttosto come abbiamo visto il Lunedi, che in realtà rende 765 00:36:43,780 --> 00:36:48,000 un template, ma più su questi in forma di cammino proprio di pset7 attraverso. 766 00:36:48,000 --> 00:36:50,500 Per ora, andiamo avanti e fare questo. 767 00:36:50,500 --> 00:36:54,860 >> Lasciami andare nel mio tavolo conferenze e vedi che non c'è attualmente nulla 768 00:36:54,860 --> 00:36:59,640 qui appena ancora, e fammi anche andare nel mio elenco pubblico, dove 769 00:36:59,640 --> 00:37:02,780 c'è solo un unico file, index.php. 770 00:37:02,780 --> 00:37:06,920 Questo file sembra essere super semplice al momento, sembra proprio come questo. 771 00:37:06,920 --> 00:37:09,110 Molto simile il modo in cui lasciato fuori il Lunedi. 772 00:37:09,110 --> 00:37:11,945 Sto richiedendo questo file, config.php, che è in 773 00:37:11,945 --> 00:37:15,160 una comprende directory, che è in punto punto, i miei genitori, 774 00:37:15,160 --> 00:37:17,650 e poi è solo il rendering questo file. 775 00:37:17,650 --> 00:37:18,960 Così che cosa è questo file? 776 00:37:18,960 --> 00:37:24,700 >> Apriamo nei miei modelli form.php, e vedremo questo. 777 00:37:24,700 --> 00:37:28,500 Super semplice, a quanto pare questa forma è andando a presentare entro un $ _GET o $ _POST. 778 00:37:28,500 --> 00:37:29,320 Controllo di integrità rapida. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Letteralmente cercare visivamente il file. 781 00:37:35,690 --> 00:37:36,610 Metodo equals posta. 782 00:37:36,610 --> 00:37:39,280 Quindi non sta andando a utilizzare l'URL, come Google fa, sta andando a ordinare di pelle 783 00:37:39,280 --> 00:37:41,030 le informazioni dietro le scene e il suo 784 00:37:41,030 --> 00:37:43,580 andare a sottoporsi ad un file chiamato register.php, 785 00:37:43,580 --> 00:37:45,660 e questo è il file non abbiamo ancora scritto 786 00:37:45,660 --> 00:37:47,610 ma ciò che questo sta andando a guardare come è questo. 787 00:37:47,610 --> 00:37:52,670 >> Se vado ad una pagina a parte questo è cosa localhost / index.php assomiglia. 788 00:37:52,670 --> 00:37:56,930 E ancora, il server di solo assumendo index.php. 789 00:37:56,930 --> 00:37:57,910 Invio. 790 00:37:57,910 --> 00:37:59,870 Ecco dove siamo a, e quello che voglio fare 791 00:37:59,870 --> 00:38:02,450 è in grado di scrivere cose come Davide, e poi 792 00:38:02,450 --> 00:38:08,050 il mio numero di telefono, che dire 617-555-1212 per ora, registrati 793 00:38:08,050 --> 00:38:09,910 e ora register.php non è stato trovato. 794 00:38:09,910 --> 00:38:11,440 Quindi ho bisogno di implementare questa. 795 00:38:11,440 --> 00:38:13,320 Quindi cerchiamo di frusta in fretta qualcosa di simile a questo. 796 00:38:13,320 --> 00:38:18,640 Lasciami andare nel mio elenco pubblico e fare gedit di register.php, 797 00:38:18,640 --> 00:38:22,300 e ora ho intenzione di andare avanti e avviare la modalità di PHP, come abbiamo fatto il Lunedi, 798 00:38:22,300 --> 00:38:25,430 e tag di chiusura di PHP, e facciamo un paio di cose. 799 00:38:25,430 --> 00:38:28,336 >> Quindi, lo so, da aver scritto quella forma, 800 00:38:28,336 --> 00:38:29,960 che voglio verificare quanto segue. 801 00:38:29,960 --> 00:38:35,670 Se è vuoto, qualunque sia l'utente digitato il campo del nome, quindi 802 00:38:35,670 --> 00:38:39,860 Sto per dire qualcosa come chiedere scusa manca il nome. 803 00:38:39,860 --> 00:38:42,380 Apologize, nel frattempo, è non una cosa costruita nel PHP, 804 00:38:42,380 --> 00:38:45,970 si tratta di una funzione che abbiamo scritto in functions.php per pset7 805 00:38:45,970 --> 00:38:47,940 in modo da avere accesso ad esso. 806 00:38:47,940 --> 00:38:53,830 Altrimenti, se l'altro campo è vuoto, il numero, allora sono 807 00:38:53,830 --> 00:38:58,370 intenzione di chiedere scusa al utente e dire numero mancante. 808 00:38:58,370 --> 00:38:59,320 Salvare il file. 809 00:38:59,320 --> 00:39:02,640 >> Ora torniamo al mio browser, tornare al forum riprovare. 810 00:39:02,640 --> 00:39:04,070 Registrati. 811 00:39:04,070 --> 00:39:05,090 Ok. 812 00:39:05,090 --> 00:39:06,730 Non è successo niente, che è buono. 813 00:39:06,730 --> 00:39:08,120 Non ho ricevuto un messaggio di errore. 814 00:39:08,120 --> 00:39:11,651 Ma se invece, cerchiamo di ricaricare questa pagina, e non fornisce nulla. 815 00:39:11,651 --> 00:39:12,150 Accidenti. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Farlo. 818 00:39:17,140 --> 00:39:18,810 Registrati. 819 00:39:18,810 --> 00:39:20,350 Che cosa ho fatto di sbagliato? 820 00:39:20,350 --> 00:39:24,860 Se vuoto, il nome $ _POST. 821 00:39:24,860 --> 00:39:26,350 Dire di nuovo? 822 00:39:26,350 --> 00:39:27,670 >> Oh, certo. 823 00:39:27,670 --> 00:39:30,919 Ho dimenticato la parte più importante, che è require ("../ include / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Ho bisogno di avere accesso al funzione di scusarsi, che 826 00:39:36,460 --> 00:39:37,770 è il motivo per cui non succedeva niente. 827 00:39:37,770 --> 00:39:39,460 La funzione in realtà non esiste. 828 00:39:39,460 --> 00:39:40,640 Quindi, proviamo di nuovo. 829 00:39:40,640 --> 00:39:42,350 Cerchiamo di ricaricare la pagina, fare clic su Registra. 830 00:39:42,350 --> 00:39:43,060 Ok. 831 00:39:43,060 --> 00:39:43,770 Eccola. 832 00:39:43,770 --> 00:39:45,700 Così, l'uscita siamo vedendo qui è il risultato 833 00:39:45,700 --> 00:39:47,685 di chiamare una scusa funzione, super semplice, 834 00:39:47,685 --> 00:39:50,060 e viene stampato appena fuori qualunque cosa Ho dato come argomento. 835 00:39:50,060 --> 00:39:51,370 >> Va bene, quindi cerchiamo di cooperare. 836 00:39:51,370 --> 00:39:54,240 Cerchiamo di fornire il mio nome come David, registrare, 837 00:39:54,240 --> 00:39:56,890 manca il numero OK LET'S prevedere che, troppo. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registrati. 840 00:39:59,250 --> 00:39:59,750 Ok. 841 00:39:59,750 --> 00:40:02,760 Quindi va tutto bene ora, proprio niente interessante sta accadendo. 842 00:40:02,760 --> 00:40:06,000 Così ora facciamo qualcosa di più interessante come questo accada. 843 00:40:06,000 --> 00:40:09,980 Lasciami andare in phpMyAdmin, e cerchiamo di effettivamente creare una tabella denominata utenti, 844 00:40:09,980 --> 00:40:12,330 Ho intenzione di dare tre colonne, e mi prende subito 845 00:40:12,330 --> 00:40:16,250 creare ID, e poi nome, e poi il numero, 846 00:40:16,250 --> 00:40:18,832 e il campo ID io sono intenzione di lasciare come un int. 847 00:40:18,832 --> 00:40:20,790 Il campo del nome che sto lasciare come varchar, 848 00:40:20,790 --> 00:40:23,257 e diremo a 64, un po 'arbitrariamente. 849 00:40:23,257 --> 00:40:25,090 Il numero Vado da fare, sai una cosa? 850 00:40:25,090 --> 00:40:27,350 Stiamo andando in sostenere numeri degli Stati Uniti qui, 851 00:40:27,350 --> 00:40:31,510 così ho intenzione di fare qualcosa come char e poi 10 caratteri 852 00:40:31,510 --> 00:40:34,540 max per un codice di area e poi sette cifre. 853 00:40:34,540 --> 00:40:37,870 E poi qui, ho intenzione di specificare incremento automatico questo campo, 854 00:40:37,870 --> 00:40:40,550 fanno di questo una chiave primaria, e Ho intenzione di andare avanti e non 855 00:40:40,550 --> 00:40:42,240 controllare qualsiasi di queste altre caselle. 856 00:40:42,240 --> 00:40:48,030 >> Così, quando ho finalmente fare clic su Salva, e torno al mio tavolo utenti, 857 00:40:48,030 --> 00:40:52,270 questo è quello che sembra, se io Ora fare clic su una struttura di nuova scheda. 858 00:40:52,270 --> 00:40:54,550 Quindi questo, per intenderci, è solo il modo di phpMyAdmin 859 00:40:54,550 --> 00:40:58,570 di dire la tua tabella di database ha un ID, un nome e un numero 860 00:40:58,570 --> 00:41:02,040 con quelle configurazioni particolari e noi ignoreremo il resto dei campi 861 00:41:02,040 --> 00:41:03,140 lì per ora. 862 00:41:03,140 --> 00:41:04,810 >> Così ora che cosa voglio fare? 863 00:41:04,810 --> 00:41:09,060 Quindi, se vado ora nel mio codice sorgente, se tutto va bene 864 00:41:09,060 --> 00:41:11,190 Voglio eseguire la seguente query. 865 00:41:11,190 --> 00:41:14,970 Inserire nel, e posso solo dicono gli utenti che non sono strettamente 866 00:41:14,970 --> 00:41:18,620 bisogno di chi è rimasto a zecche se è Non una parola pericolosa come utenti. 867 00:41:18,620 --> 00:41:22,810 Ho intenzione di dire il nome, numero, e poi qui sono 868 00:41:22,810 --> 00:41:24,960 non andare a codificare il cifre dei valori ancora. 869 00:41:24,960 --> 00:41:26,760 Ho intenzione di mettere due punti interrogativi. 870 00:41:26,760 --> 00:41:29,320 E questa è una convenzione in molte lingue 871 00:41:29,320 --> 00:41:31,730 per cui se si vuole avere un segnaposto per una stringa 872 00:41:31,730 --> 00:41:34,105 avete intenzione di utilizzare la domanda marchi, per motivi faremo 873 00:41:34,105 --> 00:41:36,370 tornare a parlare di sicurezza, e qui 874 00:41:36,370 --> 00:41:39,420 Ho intenzione di passare a quelle due campi d'invio Nome, 875 00:41:39,420 --> 00:41:44,850 e poi inserire il numero, e ora salvare il file. 876 00:41:44,850 --> 00:41:47,090 >> E ora ho intenzione di vai qui è un super 877 00:41:47,090 --> 00:41:55,690 semplicemente dire rendersuccess.php, che sta per essere un altro modello. 878 00:41:55,690 --> 00:41:57,380 Ho intenzione di creare veramente veloce. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php e sto solo andando a dire il successo H1 in quel file. 880 00:42:06,270 --> 00:42:06,990 Bene. 881 00:42:06,990 --> 00:42:11,312 Così ora, torniamo al del browser, dove ho visitato prima. 882 00:42:11,312 --> 00:42:14,270 Andiamo avanti e confermare che ho scritto in David, ho scritto un numero di telefono, 883 00:42:14,270 --> 00:42:15,390 registrarsi. 884 00:42:15,390 --> 00:42:16,100 Accidenti. 885 00:42:16,100 --> 00:42:17,420 Che cosa ho fatto di sbagliato? 886 00:42:17,420 --> 00:42:20,850 Così sto vedendo un errore qui, avere un errore nella sintassi SQL. 887 00:42:20,850 --> 00:42:24,900 Permettetemi di saltare di nuovo a gedit, permettetemi mi tornare a register.php, 888 00:42:24,900 --> 00:42:28,830 e che cosa ho che tralascio era importante l'ultima volta? 889 00:42:28,830 --> 00:42:29,722 Ho bisogno di questo. 890 00:42:29,722 --> 00:42:32,930 Volete sapere che oltre a avendo notato prima, ma ho bisogno di questo. 891 00:42:32,930 --> 00:42:35,596 >> Così ora torniamo, e questo è stato utile vedere nel browser 892 00:42:35,596 --> 00:42:37,680 ed è per questo che in config.php abbiamo sputare errori. 893 00:42:37,680 --> 00:42:41,770 Andiamo avanti e ricaricare, fare clic su Continua, il successo. 894 00:42:41,770 --> 00:42:47,060 Così ora lasciami andare a casa mia database di qui e fare clic su Utenti, 895 00:42:47,060 --> 00:42:51,680 e navigare, e notare ora avere David nel mio database qui. 896 00:42:51,680 --> 00:42:55,810 Ora tecnicamente questo sito è non ancora su internet pubblico, 897 00:42:55,810 --> 00:42:57,890 quindi non posso avere altro persone a mettere qui, 898 00:42:57,890 --> 00:43:01,120 ma se ora volessi, per esempio, inviare io stesso un messaggio di testo. 899 00:43:01,120 --> 00:43:03,920 Andiamo su un arto qui e vedere se questo funziona realmente. 900 00:43:03,920 --> 00:43:07,331 Ho intenzione di andare avanti e cancellare la riga 901 00:43:07,331 --> 00:43:09,080 e noi provvederemo a Blur questo nel successivo video 902 00:43:09,080 --> 00:43:11,900 così noi non abbiamo il tutta internet texting me, 903 00:43:11,900 --> 00:43:17,270 e noi ora salire al browser e andremo oltre a tenere una conferenza 904 00:43:17,270 --> 00:43:22,040 e noi digitiamo in diversi numero qui, registrare, il successo. 905 00:43:22,040 --> 00:43:25,550 >> Così ora, il mio numero è presumibilmente in il database, e ora la parte divertente. 906 00:43:25,550 --> 00:43:28,774 Facciamo in realtà utilizzare PHP per fare qualcosa a livello di programmazione, 907 00:43:28,774 --> 00:43:30,940 sia dal comando line o da qualche altra parte, 908 00:43:30,940 --> 00:43:32,773 e per ora io sono solo intenzione di mantenere le cose semplici 909 00:43:32,773 --> 00:43:36,230 e ho intenzione di andare nel mio elenco qui e procedere come segue. 910 00:43:36,230 --> 00:43:44,920 Sceneggiatura Gedit diciamo, ce la faremo chiamare il testo, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 come abbiamo visto l'ultima volta. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Ora ho intenzione di fare richiedere include config.php, 914 00:43:55,055 --> 00:43:57,360 anche se questo potrebbe indurre un leggero errore. 915 00:43:57,360 --> 00:44:03,960 E ora ho intenzione di andare avanti e dire righe, di interrogazione, selezione stelle da parte degli utenti, 916 00:44:03,960 --> 00:44:08,149 e ora qui ho intenzione di fare una tecnica dall'ultima volta per ogni righe come fila. 917 00:44:08,149 --> 00:44:09,690 E ho intenzione di fare qualcosa di semplice. 918 00:44:09,690 --> 00:44:19,090 Printf diciamo che il nome è questo, e il numero è questo, backslash n. 919 00:44:19,090 --> 00:44:23,320 E ora ho intenzione di passare in fila citare il nome unquote, 920 00:44:23,320 --> 00:44:28,140 e il numero di riga tra virgolette, e ora andiamo avanti 921 00:44:28,140 --> 00:44:31,430 e finestra il mio terminale chmod a + x questo per rendere 922 00:44:31,430 --> 00:44:33,970 questo script eseguibile chiamato testo. 923 00:44:33,970 --> 00:44:36,080 E ora corriamo il testo. 924 00:44:36,080 --> 00:44:37,590 >> OK, così progredire. 925 00:44:37,590 --> 00:44:39,960 Un così ora ho scritto script della riga di comando, 926 00:44:39,960 --> 00:44:43,300 in un linguaggio chiamato PHP, che, a causa di tale richiede la linea, 927 00:44:43,300 --> 00:44:46,380 ha accesso a tutti coloro configurazione costanti che ho specificato. 928 00:44:46,380 --> 00:44:48,177 Il nome del database e così via. 929 00:44:48,177 --> 00:44:50,260 Infatti, tanto per essere chiari che questo non è un colpo di fortuna, 930 00:44:50,260 --> 00:44:54,730 lasciami andare avanti e registrare, veramente veloce, qualcun altro come Rob 931 00:44:54,730 --> 00:44:58,890 e gli darà il numero 555-1212. 932 00:44:58,890 --> 00:45:01,557 >> E ora, se ho eseguito lo script ancora una volta, notare il potere 933 00:45:01,557 --> 00:45:03,140 di quello che stiamo facendo con il database. 934 00:45:03,140 --> 00:45:07,680 Ora ho subito visto ciò che il altre due righe sono nel mio database. 935 00:45:07,680 --> 00:45:10,699 Così ora cerchiamo di fare qualcosa anche amatore dentro, 936 00:45:10,699 --> 00:45:12,740 e questa è la parte che abbiamo non testato in anticipo, 937 00:45:12,740 --> 00:45:15,910 così l'ultima volta che ho fatto questo le cose sono andate terribilmente male, 938 00:45:15,910 --> 00:45:17,120 abbiamo video in tal senso. 939 00:45:17,120 --> 00:45:18,286 >> A dire il vero, sì, divertente da parte. 940 00:45:18,286 --> 00:45:20,480 Così l'ultima volta, in un lezione come due anni fa, 941 00:45:20,480 --> 00:45:23,230 abbiamo deciso, ho deciso, di essere tutto questo sarebbe una grande idea 942 00:45:23,230 --> 00:45:28,150 per generare dinamicamente e-mail in di classe, utilizzando l'intero database di CS50 943 00:45:28,150 --> 00:45:33,390 studenti, che ci avevano dato i loro numeri e loro vettori cellulare che si 944 00:45:33,390 --> 00:45:36,290 potrebbe ricordare da pset0, come alla ragione, si scopre 945 00:45:36,290 --> 00:45:40,650 Ho avuto un piccolo bug nel mio programma e ha fatto un paio di errori nel 2012, credo. 946 00:45:40,650 --> 00:45:43,997 >> Per cui, quella che avevo ciclo for che ha fatto esattamente questo genere di cose, 947 00:45:43,997 --> 00:45:46,580 iterare su database, ottenere un nome dal database, 948 00:45:46,580 --> 00:45:49,940 nome dal database, e poi su ogni iterazione del ciclo che mi ha inviato una e-mail. 949 00:45:49,940 --> 00:45:54,130 Ma invece di inviare una e-mail, ho inviata una e-mail prima iterazione, 950 00:45:54,130 --> 00:45:58,200 e due e-mail una seconda iterazione, inviati tre email una seconda iterazione, che 951 00:45:58,200 --> 00:46:01,230 come si potrebbe ricordare dal nostro la discussione della notazione asintotica 952 00:46:01,230 --> 00:46:06,400 questo grande O di male, come n al quadrato è il numero di messaggi che ho inviato, 953 00:46:06,400 --> 00:46:08,560 ma non era nemmeno messaggi di posta elettronica era di messaggi di testo. 954 00:46:08,560 --> 00:46:12,070 >> E come sapete, la frequenza non è super high verso la fine del semestre 955 00:46:12,070 --> 00:46:15,360 e così ho pensato che sarebbe stato carino a il tempo di dire: "Perché non sei di classe?" 956 00:46:15,360 --> 00:46:17,880 Nel testo del messaggio I trasmesso a tutta la classe, 957 00:46:17,880 --> 00:46:22,140 ed è stato divertente come 50% del classe, ma l'altro 50%, alcuni dei quali 958 00:46:22,140 --> 00:46:26,102 fuori di testa, ho inviato incredibilmente dolci note apologetiche 959 00:46:26,102 --> 00:46:28,560 al personale scusandosi per aver perso la lezione appena 960 00:46:28,560 --> 00:46:29,530 per questa volta, giusto? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> In modo che sarebbe terribilmente storto. 963 00:46:34,030 --> 00:46:37,030 Quindi, in questo spirito, proviamo questo di nuovo, ma solo con il mio numero. 964 00:46:37,030 --> 00:46:41,940 In anticipo, in functions.php, Ho scritto questa funzione qui. 965 00:46:41,940 --> 00:46:44,250 Si chiama testo, e prende in tre argomenti. 966 00:46:44,250 --> 00:46:46,360 Un numero, un vettore, e un messaggio. 967 00:46:46,360 --> 00:46:50,390 >> Sto utilizzando un'istruzione switch, che meravigliosamente PHP prendere le stringhe, e non solo 968 00:46:50,390 --> 00:46:53,350 numeri interi, e non ho attuazione tutto il supporto per questo ancora, 969 00:46:53,350 --> 00:46:55,370 Ho appena fatto AT & T e Verizon. 970 00:46:55,370 --> 00:46:57,610 Poiché risulta che con questi vettori 971 00:46:57,610 --> 00:47:00,570 hanno e-mail ai gateway SMS, per cui si può effettivamente 972 00:47:00,570 --> 00:47:05,529 inviare una e-mail a un indirizzo come il numero di telefono a vtext.com 973 00:47:05,529 --> 00:47:08,070 e se l'utente non ha bloccato i messaggi, sarà passare attraverso 974 00:47:08,070 --> 00:47:09,340 è un messaggio di testo. 975 00:47:09,340 --> 00:47:13,270 >> Ora, per fare questo, ho intenzione di dover aggiungere un campo veramente veloce per il mio database. 976 00:47:13,270 --> 00:47:15,470 Ho intenzione di andare in la mia struttura, e sono 977 00:47:15,470 --> 00:47:21,880 intenzione di andare avanti e aggiungere un campo alla fine della tabella. 978 00:47:21,880 --> 00:47:25,227 Facciamo clic su Go, e io sono andando a chiamare questo vettore 979 00:47:25,227 --> 00:47:27,310 e per ora ho intenzione di lasciare questo come un testo di bar, 980 00:47:27,310 --> 00:47:29,320 ma possiamo essere più elaborato in futuro. 981 00:47:29,320 --> 00:47:31,961 Ho intenzione di andare in fretta nel mio tavolo, e io sono 982 00:47:31,961 --> 00:47:34,210 intenzione di sbarazzarsi di Rob, perché è un numero falso, 983 00:47:34,210 --> 00:47:38,540 Ho intenzione di andare in modifica qui e sono andando a modificare manualmente la mia carriera 984 00:47:38,540 --> 00:47:43,410 essere Verizon, che è, e ora qui. 985 00:47:43,410 --> 00:47:44,980 >> Facciamo un controllo di integrità veloce. 986 00:47:44,980 --> 00:47:52,730 Apriamo il nostro script di testo, che assomiglia a questo, vettore è% s. 987 00:47:52,730 --> 00:47:58,230 Stiamo facendo molto di più di errore il controllo che ho fatto nel 2012, vettore. 988 00:47:58,230 --> 00:48:01,160 E ora, ho intenzione di andare avanti e ri-eseguire lo script. 989 00:48:01,160 --> 00:48:01,660 Ok. 990 00:48:01,660 --> 00:48:06,100 Carrier è Verizon, il che significa ora spero di fare proprio questo. 991 00:48:06,100 --> 00:48:08,360 Correttamente quest'anno, si spera, ci siamo. 992 00:48:08,360 --> 00:48:12,200 >> Quindi all'interno di questo ciclo for, io sono andando ad avere non solo questo printf, 993 00:48:12,200 --> 00:48:15,990 Ho anche intenzione di chiamare testo e l'utilizzo di questa funzione di richiamo 994 00:48:15,990 --> 00:48:19,670 era ci vuole un numero, un portante, e un messaggio. 995 00:48:19,670 --> 00:48:23,310 Vediamo quindi, il numero sta per essere citazione fila unquote "numero" 996 00:48:23,310 --> 00:48:31,660 citazione fila unquote "vettore" e l'ultimo è stato messaggio. 997 00:48:31,660 --> 00:48:36,250 Non rovinare quest'anno, punto e virgola. 998 00:48:36,250 --> 00:48:36,780 >> Ok. 999 00:48:36,780 --> 00:48:38,280 Incrociamo le dita. 1000 00:48:38,280 --> 00:48:39,970 Vediamo se questo funziona. 1001 00:48:39,970 --> 00:48:41,720 Va bene, così. 1002 00:48:41,720 --> 00:48:43,000 Eccoci qui. 1003 00:48:43,000 --> 00:48:47,380 Cerchiamo di sbloccare il telefono, incrocia le dita, dannazione. 1004 00:48:47,380 --> 00:48:50,300 Undefined may-- variabili oh aspetta, aspetta, aspetta, veloce reale. 1005 00:48:50,300 --> 00:48:51,340 In fretta, molto in fretta. 1006 00:48:51,340 --> 00:48:53,380 Questo è totalmente valsa la pena. 1007 00:48:53,380 --> 00:48:57,710 Mi permetta di afferrare, mi permetta di afferrare, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Grazie, i testi hanno iniziato da qualcun altro. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Lasciami andare avanti e apro reale veloce, dropbox.php / mail qui. 1011 00:49:11,650 --> 00:49:12,660 Standby. 1012 00:49:12,660 --> 00:49:14,455 Ne vale la pena. 1013 00:49:14,455 --> 00:49:17,430 Download. 1014 00:49:17,430 --> 00:49:18,560 OK, fonte src8m. 1015 00:49:18,560 --> 00:49:19,700 Ok. 1016 00:49:19,700 --> 00:49:21,380 >> Hai bisogno di un ulteriore linea qui. 1017 00:49:21,380 --> 00:49:24,530 Oh, eccolo, è in Frosh IM, è nel registro alle tre. 1018 00:49:24,530 --> 00:49:28,820 Oh ciao, Margo, grazie mille. 1019 00:49:28,820 --> 00:49:31,130 OK, e mi mancava questa linea qui. 1020 00:49:31,130 --> 00:49:33,010 Quindi, mi permetta di prendere rapidamente questa riga di codice, 1021 00:49:33,010 --> 00:49:36,200 che comprende la posta o libreria che io in realtà voglio usare, 1022 00:49:36,200 --> 00:49:38,300 Ho intenzione di fretta tornare in funzioni, 1023 00:49:38,300 --> 00:49:42,337 Ho intenzione di andare in cima di questa file e richiedere il file pure, 1024 00:49:42,337 --> 00:49:45,420 e ora ho intenzione di attraversare proprio il mio dita quando torno al comando 1025 00:49:45,420 --> 00:49:49,530 script di linea, che si trova all'interno di directory host locale di oggi. 1026 00:49:49,530 --> 00:49:50,610 Esegui il testo. 1027 00:49:50,610 --> 00:49:52,720 Invio. 1028 00:49:52,720 --> 00:49:53,220 Mail. 1029 00:49:53,220 --> 00:49:53,719 Standby. 1030 00:49:53,719 --> 00:49:58,850 1031 00:49:58,850 --> 00:49:59,600 Standby. 1032 00:49:59,600 --> 00:50:01,680 Mail. 1033 00:50:01,680 --> 00:50:02,290 Oh, OK. 1034 00:50:02,290 --> 00:50:03,870 Eccoci qui. 1035 00:50:03,870 --> 00:50:06,880 >> Posta ottiene nuovo mailer PHP. 1036 00:50:06,880 --> 00:50:09,970 Ho fatto questo diritto? 1037 00:50:09,970 --> 00:50:11,067 Accidenti. 1038 00:50:11,067 --> 00:50:12,150 A-- oh, aspetta, aspetta, aspetta. 1039 00:50:12,150 --> 00:50:12,649 Stand-by. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Te lo prometto, questo è sarà così ne vale la pena. 1042 00:50:18,630 --> 00:50:20,340 Indirizzo. 1043 00:50:20,340 --> 00:50:24,390 Questo è il motivo per cui non faccio il Esempi di destra prima classe. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 I seguenti destinatari non è riuscito. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Proviamo un'ultima cosa. 1048 00:50:33,040 --> 00:50:40,660 SMTP impostato da, aggiungere l'indirizzo, l'indirizzo sia effettivamente quello. 1049 00:50:40,660 --> 00:50:43,980 Proviamo questa ultima parte in indirizzo. 1050 00:50:43,980 --> 00:50:47,210 Aw, sono davvero triste in questo momento. 1051 00:50:47,210 --> 00:50:47,854 Grazie. 1052 00:50:47,854 --> 00:50:50,270 Ma ho davvero apprezzato tutto i testi che hai state inviando. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Hai questo David. 1055 00:50:56,320 --> 00:50:59,310 Stai soffia. 1056 00:50:59,310 --> 00:51:01,720 Lasciamo lì e fisseremo il Lunedi. 1057 00:51:01,720 --> 00:51:04,290 Ci vediamo allora. 1058 00:51:04,290 --> 00:51:08,090 >> Daven FARNHAM: E ora profonda Pensieri di Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Se un albero binario cade in una foresta e nessuno è in giro a C it-- [ridacchia]. 1061 00:51:17,590 --> 00:51:18,998