1 00:00:00,000 --> 00:00:10,393 >> [Musik zu spielen] 2 00:00:10,393 --> 00:00:11,037 3 00:00:11,037 --> 00:00:12,120 DAVID J. MALAN: Alles klar. 4 00:00:12,120 --> 00:00:12,830 Willkommen zurück. 5 00:00:12,830 --> 00:00:13,890 Dies ist CS50. 6 00:00:13,890 --> 00:00:15,570 Dies ist das Ende der 8. Woche. 7 00:00:15,570 --> 00:00:18,360 Und wie Sie wissen, haben wir ziemlich üblichen Bürozeiten in einigen 8 00:00:18,360 --> 00:00:21,090 der Speisesäle, einschließlich Annenberg. 9 00:00:21,090 --> 00:00:23,860 Und einige von der Mannschaft freundlicher ein paar Fotos in letzter Zeit. 10 00:00:23,860 --> 00:00:26,230 Und zu Ehren Halloween, dachten wir, wir würden 11 00:00:26,230 --> 00:00:30,160 eine, die eher erwischt uns teilen Überraschung hier in Annenberg Halle nur 12 00:00:30,160 --> 00:00:31,490 die andere Nacht. 13 00:00:31,490 --> 00:00:36,300 Ihr Klassenkamerad Jacob posierte für Dieses Foto war aber amüsanter 14 00:00:36,300 --> 00:00:39,760 war auf Facebook, die anschließende Gespräch, das danach passiert. 15 00:00:39,760 --> 00:00:43,020 >> Sein erster Beitrag in Reaktion um sein Foto war. 16 00:00:43,020 --> 00:00:46,740 Ein paar Minuten später, entschied er einem bis sich mit diesem. 17 00:00:46,740 --> 00:00:53,800 So ging es dann zu, dies zu gehen, und dann, noch amüsant 18 00:00:53,800 --> 00:00:55,320 ist, wenn seine Mutter stimmte. 19 00:00:55,320 --> 00:00:59,240 20 00:00:59,240 --> 00:01:01,800 Und dann schließlich, es scheint dies nur war 21 00:01:01,800 --> 00:01:04,860 ein wunderbarer Trick für ein spielen, dass es geht. 22 00:01:04,860 --> 00:01:07,080 >> Also, wenn Sie möchten, Jakob und andere sehen, 23 00:01:07,080 --> 00:01:10,880 darunter Cynthia Meng, wer ist hinter die Kulissen des CS50 Zone Personal, 24 00:01:10,880 --> 00:01:13,970 Kopf auf diese URL und dieses Spiel hier. 25 00:01:13,970 --> 00:01:18,810 So ohne weiteres, heute sind wir weiterhin diesen Blick auf Web-Programmierung, 26 00:01:18,810 --> 00:01:21,810 und der tatsächlichen Programmerstellung die nicht auf der Kommandozeile nicht ausführen, 27 00:01:21,810 --> 00:01:24,080 sondern innerhalb eines Browsers ausgeführt. 28 00:01:24,080 --> 00:01:26,320 >> Vermutlich jetzt oder sehr Kurz, Sie gehen 29 00:01:26,320 --> 00:01:30,200 in der Mitte der Umsetzung werden Ihren eigenen Web-Server, der 30 00:01:30,200 --> 00:01:31,700 unterscheidet sich von Web-Programmierung. 31 00:01:31,700 --> 00:01:36,210 Der Web-Server in pset6 dreht sich alles um Schreiben von Software, die weiß, wie man nehmen 32 00:01:36,210 --> 00:01:39,300 HTTP-Anfragen von einem Browser, oder sogar von euch, ein Mensch, 33 00:01:39,300 --> 00:01:42,340 mit einem Programm namens Telnet und dann auf diese Anfragen reagieren entweder 34 00:01:42,340 --> 00:01:48,600 durch spuckt eine HTML-Datei oder eine JPEG, GIF, oder sogar eine .php Datei. 35 00:01:48,600 --> 00:01:52,490 >> Aber mit einem Web-Server, ist es nicht soll nur eine PHP-Datei zu öffnen, 36 00:01:52,490 --> 00:01:55,260 etwas mit der Endung .php, und dann spuckte den Inhalt. 37 00:01:55,260 --> 00:01:58,440 Es soll zu tun was zu dieser Datei zuerst? 38 00:01:58,440 --> 00:01:59,390 Sozusagen. 39 00:01:59,390 --> 00:02:04,060 Nicht kompilieren, sagten wir am Montag, aber rather-- So interpretieren. 40 00:02:04,060 --> 00:02:08,070 >> PHP ist eine interpretierte Sprache, und so eine der wichtigsten Funktionen in Ihrem Web 41 00:02:08,070 --> 00:02:11,550 Server, wenn auch von uns umgesetzt, ist diese Fähigkeit für Ihren Webserver 42 00:02:11,550 --> 00:02:12,490 zu bemerken, oh. 43 00:02:12,490 --> 00:02:14,580 Dies ist eine Datei mit der Endung .php. 44 00:02:14,580 --> 00:02:17,970 Lassen Sie mich nicht nur senden Sie es an die Benutzer, wie es statische Inhalte, 45 00:02:17,970 --> 00:02:20,970 sondern lassen Sie mich lesen Zeile Linie von links nach rechts, und zu interpretieren. 46 00:02:20,970 --> 00:02:23,030 >> Und zu tun, dass Sie Jungs werden im wesentlichen 47 00:02:23,030 --> 00:02:26,520 Punt, um ein Programm in dem Gerät, und auf eine Menge von Computersystemen, 48 00:02:26,520 --> 00:02:27,500 gerade angerufen PHP. 49 00:02:27,500 --> 00:02:30,579 Das ist der Name der PHP die Sprache eigenen Dolmetscher. 50 00:02:30,579 --> 00:02:33,120 So, das Stück umzusetzen, die wir für Sie, und was für Sie gelassen, 51 00:02:33,120 --> 00:02:35,240 Letztlich ist eine Zahl von Stücken, von denen 52 00:02:35,240 --> 00:02:37,960 wird die Implementierung der Unterstützung für statische Inhalte. 53 00:02:37,960 --> 00:02:40,180 >> Aber jetzt, und mit Problem stellte sieben, du bist 54 00:02:40,180 --> 00:02:43,660 werde, um den Übergang zu starten tatsächlich das Schreiben der PHP-Code 55 00:02:43,660 --> 00:02:45,970 dass wird interpretiert in Gespräch mit einem Back-End 56 00:02:45,970 --> 00:02:47,960 Datenbank, die Informationen speichert. 57 00:02:47,960 --> 00:02:51,020 Lassen Sie uns also besser zuerst verstehen ein paar dieser superglobals 58 00:02:51,020 --> 00:02:53,720 und wie viel Leistung Sie raus aus der Box kostenlos 59 00:02:53,720 --> 00:02:55,250 mit einer Sprache wie PHP. 60 00:02:55,250 --> 00:02:57,350 Dinge, die Sie nicht haben um sich zu implementieren. 61 00:02:57,350 --> 00:03:01,700 >> So sahen wir am Montag, $ _GET, das ist ein superglobal, 62 00:03:01,700 --> 00:03:05,496 das ist genau das PHP sprechen für eine globale Variable, die Sie von überall zugreifen können. 63 00:03:05,496 --> 00:03:06,620 Und was drin ist von $ _GET? 64 00:03:06,620 --> 00:03:09,930 65 00:03:09,930 --> 00:03:12,110 Was ist in der Innenseite dieser Superglobal, dass wir sehen? 66 00:03:12,110 --> 00:03:15,900 67 00:03:15,900 --> 00:03:19,020 Sicherlich statistisch mindestens eine Person kennt. 68 00:03:19,020 --> 00:03:21,590 Was ist in der Innenseite des $ _GET? 69 00:03:21,590 --> 00:03:22,426 Ja? 70 00:03:22,426 --> 00:03:24,130 >> PUBLIKUM: Es ist die Variablen Sie setzen in der Abfragezeichenfolge. 71 00:03:24,130 --> 00:03:24,530 >> DAVID J. MALAN: Perfect. 72 00:03:24,530 --> 00:03:26,488 Es sind die Variablen, die Sie legte im Query-String. 73 00:03:26,488 --> 00:03:29,910 Also, in unserer älteren Beispiel Neuimplementierung Google als wir 74 00:03:29,910 --> 00:03:34,130 eine URL, und dann Fragezeichen, die den Beginn der HTTP abgrenzt 75 00:03:34,130 --> 00:03:37,950 Parameter, dann hatten wir q gleich etwas, wie q gleich Katzen, 76 00:03:37,950 --> 00:03:41,500 was würden automatisch hineingehen dieser $ _GET Super globale für Sie, 77 00:03:41,500 --> 00:03:47,430 wegen der PHP ist eine Taste Q, und der Wert desselben von Katzen. 78 00:03:47,430 --> 00:03:51,250 >> In anderen Worten, $ _GET und alle diese Dinge sind assoziative Arrays, 79 00:03:51,250 --> 00:03:54,530 Hash-Tabellen der Art, dass store Schlüssel und Werte. 80 00:03:54,530 --> 00:03:57,980 Nun, zurück in pset5, der Hash Tabelle, die Sie vielleicht implementiert haben, 81 00:03:57,980 --> 00:04:00,220 oder versuchen Sie vielleicht umgesetzt haben, wirklich 82 00:04:00,220 --> 00:04:04,010 war effektiv ein assoziatives Anordnung, eine Datenstruktur, 83 00:04:04,010 --> 00:04:07,220 wobei Sie zuordnen können Schlüssel mit Werten. 84 00:04:07,220 --> 00:04:09,690 >> Aber in pset5 waren die Werte trivial. 85 00:04:09,690 --> 00:04:12,430 Der Wert war im Wesentlichen wahr oder falsch. 86 00:04:12,430 --> 00:04:13,900 Ist das Wort im Wörterbuch? 87 00:04:13,900 --> 00:04:18,279 Also, wenn Sie ein Wort wie Apfel gehasht zu sehen, ob Apfel ist im Wörterbuch, 88 00:04:18,279 --> 00:04:21,820 Ihr Check-Funktion vermutlich zurück wahr oder falsch. 89 00:04:21,820 --> 00:04:24,120 Also, das ist effektiv der Wert bekommen wir zurück. 90 00:04:24,120 --> 00:04:26,456 >> Aber wir am Montag sah kurz, können Sie sicher 91 00:04:26,456 --> 00:04:28,830 assoziieren interessanter Werte als nur wahr oder falsch 92 00:04:28,830 --> 00:04:30,790 mit Tasten, wie Apfel. 93 00:04:30,790 --> 00:04:33,909 Sie könnte tatsächlich zurückkehren ein beliebige Zeichenkette, und in der Tat, 94 00:04:33,909 --> 00:04:36,200 das ist, was $ _GET und diese andere Variablen können Sie tun. 95 00:04:36,200 --> 00:04:40,595 >> Also $ _POST ist im Geiste, aber wenn Sie ein Formular absenden per Post, 96 00:04:40,595 --> 00:04:44,490 eine andere HTTP-Methode, die es für Dinge wie Kreditkarten verwendet, 97 00:04:44,490 --> 00:04:48,410 und private Informationen und sogar binäre Informationen wie Fotos, 98 00:04:48,410 --> 00:04:51,840 diese Dinge am Ende innerhalb von $ _POST. 99 00:04:51,840 --> 00:04:53,770 Und eigentlich für Dateien wie JPEGs und was nicht alles, 100 00:04:53,770 --> 00:04:58,290 es gibt sogar ein anderes, das nicht hier oben genannten $ _FILES auch. 101 00:04:58,290 --> 00:05:01,280 >> Also, Server, den wir nicht zu verweilen viel, aber es gibt Ihnen Zugriff 102 00:05:01,280 --> 00:05:04,860 zu der unteren Ebene Einzelheiten zu sortieren der Server selbst, dass Sie verwenden. 103 00:05:04,860 --> 00:05:07,430 Cookie und Session, obwohl, wir effektiv zu sehen bekommen. 104 00:05:07,430 --> 00:05:10,940 Die letzte ist, was wir verwenden, um zu implementieren die Vorstellung von einem Einkaufswagen. 105 00:05:10,940 --> 00:05:14,480 Ein super einfaches, aber Rückruf dass wir dieses Beispiel hier 106 00:05:14,480 --> 00:05:17,640 Zählen, wie oft Sie hatte diese zuvor besuchte Seite. 107 00:05:17,640 --> 00:05:20,850 >> Aber heute, und nicht nur zu betrachten Der Effekt davon, lassen Sie uns eröffnen 108 00:05:20,850 --> 00:05:22,640 Chrome Inspector, die Sie in der Regel 109 00:05:22,640 --> 00:05:25,740 tun mit einem rechten Mausklick oder Strg Klicken irgendwo auf einer Webseite, 110 00:05:25,740 --> 00:05:27,250 und wählen Sie dann inspizieren Element. 111 00:05:27,250 --> 00:05:31,600 Oder Sie können durch die Menüs gehen dass wir beschreiben in pset6 der spec. 112 00:05:31,600 --> 00:05:35,020 Und ich bin auf der Registerkarte Netzwerk gehen hier, und lassen Sie uns sehen für einen Moment 113 00:05:35,020 --> 00:05:37,590 der HTTP-Datenverkehr, der ist hin und her. 114 00:05:37,590 --> 00:05:40,929 >> Lassen Sie mich zunächst vorangehen und klar Chrome Cache. 115 00:05:40,929 --> 00:05:43,470 Also einige von euch vielleicht bekannt sein mit dieser Technik bereits 116 00:05:43,470 --> 00:05:45,790 und wir werden es zu benutzen für Debugging-Zwecke hier. 117 00:05:45,790 --> 00:05:48,890 118 00:05:48,890 --> 00:05:50,890 Jetzt sind wir als Computer Wissenschaftler gehen zu starten 119 00:05:50,890 --> 00:05:53,920 tun dies für das Debugging Zwecke, wobei 120 00:05:53,920 --> 00:05:55,910 wir werden den Cache zu löschen, typischerweise, so dass wir 121 00:05:55,910 --> 00:05:57,670 können loszuwerden Dinge genannte Cookies. 122 00:05:57,670 --> 00:06:01,700 So sind Sie wahrscheinlich allgemein bekannt mit welchem ​​Plätzchen sind, oder zumindest 123 00:06:01,700 --> 00:06:04,370 dass es sie gibt, aber was ist Ihr Verständnis von ihnen, 124 00:06:04,370 --> 00:06:06,920 nur als ein Benutzer Computer, was ist ein Cookie? 125 00:06:06,920 --> 00:06:09,490 126 00:06:09,490 --> 00:06:09,990 Ja. 127 00:06:09,990 --> 00:06:14,391 >> PUBLIKUM: Es ist ein bisschen von-- na ja, nicht Bit in einem Begriff der Informatik. 128 00:06:14,391 --> 00:06:18,303 Es ist ein Stück von Daten, die eine Website sendet, um Sie, um 129 00:06:18,303 --> 00:06:20,209 in der Lage sein, Statistiken über die Sie aufnehmen. 130 00:06:20,209 --> 00:06:21,250 DAVID J. MALAN: OK, gut. 131 00:06:21,250 --> 00:06:24,980 So ist es ein Stück von Daten, die eine Server, legt auf Ihren Computer, 132 00:06:24,980 --> 00:06:28,840 und lassen Sie uns zu verallgemeinern es noch mehr, es ist ein Schlüssel value-- gut, 133 00:06:28,840 --> 00:06:30,064 dass wird immer präziser. 134 00:06:30,064 --> 00:06:31,980 Es ist ein Stück Informationen, ein Stück von Daten, 135 00:06:31,980 --> 00:06:34,430 dass ein Server in der Lage ist auf Ihrem Computer abgelegt 136 00:06:34,430 --> 00:06:38,592 und sehr oft, führt der Server dies um so mehr, wer du bist. 137 00:06:38,592 --> 00:06:40,300 So zum Beispiel, Quoten sind Sie wahrscheinlich 138 00:06:40,300 --> 00:06:42,982 in Websites wie Facebook eingeloggt sind, oder Gmail oder andere vor, 139 00:06:42,982 --> 00:06:44,940 und loggen Sie sich mit Ihren Benutzernamen und Passwort, 140 00:06:44,940 --> 00:06:49,000 und danach für eine Zahl Minuten oder Stunden oder sogar Tage, 141 00:06:49,000 --> 00:06:52,970 der Server merkt sich, dass Sie sind in der Tat eingeloggt. 142 00:06:52,970 --> 00:06:54,600 Nun, wie ist das eigentlich passiert? 143 00:06:54,600 --> 00:06:58,630 Da Sie sicher nicht Abtippen Ihr Benutzername und Kennwort jedes Mal 144 00:06:58,630 --> 00:07:00,760 Du navigieren andere Seite auf Facebook. 145 00:07:00,760 --> 00:07:02,570 So stellt sich heraus das Cookies sind die Antwort. 146 00:07:02,570 --> 00:07:05,360 >> Ein Cookie Sie als denken können, So ähnlich wie ein digitales Hand 147 00:07:05,360 --> 00:07:09,200 Stempel, die Sie vielleicht in einem Freizeit bekommen Park oder ein Verein, der im Wesentlichen 148 00:07:09,200 --> 00:07:11,740 bedeutet, dass Sie hier gewesen vor, und schon haben 149 00:07:11,740 --> 00:07:16,070 gezeigt wird, Ihre ID an die Türsteher, für Instanz und dass der Verein oder der Park 150 00:07:16,070 --> 00:07:19,050 sollte nun annehmen, dass Sie bereits authentifiziert. 151 00:07:19,050 --> 00:07:21,270 Sie haben schon von ihr identifiziert. 152 00:07:21,270 --> 00:07:24,740 >> Also in diesem Sinne, wir eröffnen Gegen hier. 153 00:07:24,740 --> 00:07:27,220 Lassen Sie mich los, ich gerade tat, und deaktivieren Sie alle meine Cookies. 154 00:07:27,220 --> 00:07:29,970 Und nun, was ich tun werde, ist halten Sie die Umschalttaste, nur für eine gute Maßnahme, 155 00:07:29,970 --> 00:07:31,740 und gewaltsam die Seite neu laden. 156 00:07:31,740 --> 00:07:34,170 Umschalt nur sicherstellen, dass dass nichts im Cache gespeichert. 157 00:07:34,170 --> 00:07:36,850 Und hier ist der Wunsch das ging hin und her. 158 00:07:36,850 --> 00:07:41,560 Also hier haben wir eine Anfrage, und lassen mich heran hier unten, und eine Menge von dieser 159 00:07:41,560 --> 00:07:44,710 ist eine Art uninteressante Details für jetzt, dass der Browser automatisch 160 00:07:44,710 --> 00:07:47,800 geschickt, aber lassen Sie uns auf View Quelle, die rohen Header sehen. 161 00:07:47,800 --> 00:07:51,700 >> Und wenn Sie bereits in pset6 betaucht habe, Sie sicherlich Dinge zu erkennen 162 00:07:51,700 --> 00:07:54,990 wie diese, und vielleicht noch einige dieser anderen Linien hier, 163 00:07:54,990 --> 00:07:59,040 aber was ist interessanter für heute wenn ich nach unten scrollen, nicht auf die Anfrage 164 00:07:59,040 --> 00:08:02,870 sondern zu den sogenannten Reaktions, diese Linie wahrscheinlich kommt mir bekannt vor. 165 00:08:02,870 --> 00:08:04,977 Das ist eine gute Sache wenn Sie sehen, ein 200 OK. 166 00:08:04,977 --> 00:08:07,060 Offensichtlich ist dies der Datum und Zeit auf dem Server 167 00:08:07,060 --> 00:08:08,268 und es gibt ein paar Sachen. 168 00:08:08,268 --> 00:08:09,290 Oh, das ist interessant. 169 00:08:09,290 --> 00:08:13,430 >> Es stellte sich heraus, wann immer Sie verwenden PHP, zumindest in diesem Server, 170 00:08:13,430 --> 00:08:16,360 der Server ausspuckt, was PHP-Version Sie verwenden. 171 00:08:16,360 --> 00:08:18,962 Welches eigentlich für die Sicherheit Zwecke ist nicht eine gute Sache. 172 00:08:18,962 --> 00:08:21,170 Aber, wir werden darauf zurückkommen ein anderes Mal vielleicht. 173 00:08:21,170 --> 00:08:25,740 Aber jetzt ist die saftige Linie heute, und wir kurz sah einige von ihnen, 174 00:08:25,740 --> 00:08:29,240 Ich denke, mit Facebook, wenn wir stocherte rund um den Inspektor zu dieser Zeit, 175 00:08:29,240 --> 00:08:33,380 Set-Cookie ist, was ist das Einpflanzen das kleine Stück Information 176 00:08:33,380 --> 00:08:34,890 auf Ihren Computer. 177 00:08:34,890 --> 00:08:37,490 >> Dies ist ein HTTP-Header das ist effektiv 178 00:08:37,490 --> 00:08:39,970 erzählen Sie Ihren Browser, Chrome, IE, was auch immer, 179 00:08:39,970 --> 00:08:44,480 hey Browser Speicher auf dem Benutzer- Festplatte oder im RAM des Benutzers, 180 00:08:44,480 --> 00:08:49,680 einen Schlüssel namens PHPSESSID, die eine ist Kurznotation für Session-ID, 181 00:08:49,680 --> 00:08:53,670 und geben Sie ihm einen Wert von 0vlk8t, Punkt, Punkt, Punkt. 182 00:08:53,670 --> 00:08:56,480 Eine wirklich lange Pseudo Zufallsalphanumerische Zeichenfolge. 183 00:08:56,480 --> 00:08:59,480 Es ist nur eine wirklich große Zahl, aber es ist mit Buchstaben und Zahlen codiert 184 00:08:59,480 --> 00:09:03,550 so dass die Größe der es sein kann, sogar größer als Zahlen allein. 185 00:09:03,550 --> 00:09:06,947 Und, nebenbei, Path = /, dass bedeutet nur, dass dieses Cookie sein sollte 186 00:09:06,947 --> 00:09:08,780 wobei die zugehörige Teilen der Website, 187 00:09:08,780 --> 00:09:11,150 nicht nur eine bestimmte Seite die ganze Sache. 188 00:09:11,150 --> 00:09:12,930 Also das ist, dass virtuelle Handstempel. 189 00:09:12,930 --> 00:09:16,330 Es ist, als ob der Server, Facebook, oder in unserem Fall das Gerät, 190 00:09:16,330 --> 00:09:21,140 hat buchstäblich geschrieben 0vlk8t und so weiter, auf der Hand. 191 00:09:21,140 --> 00:09:24,360 Beachten Sie, was der Server ist, nicht tun, ist es nicht 192 00:09:24,360 --> 00:09:27,730 Speichern meinen Benutzernamen, natürlich mein Passwort nicht speichern. 193 00:09:27,730 --> 00:09:31,710 >> Stattdessen scheint es zu sein, Speichern Pseudozufallsinformationen 194 00:09:31,710 --> 00:09:35,010 so dass niemand erraten kann was meine Handstempel ist. 195 00:09:35,010 --> 00:09:37,590 Auf der Serverseite, Inzwischen hat die Server 196 00:09:37,590 --> 00:09:40,370 wird sich erinnern, wahrscheinlich in einer Datenbank oder etwas, 197 00:09:40,370 --> 00:09:46,490 dass der Benutzer, der in der Zukunft präsentiert eine Handstempel von 0vlk8t, punkt, 198 00:09:46,490 --> 00:09:51,440 Punkt, Punkt, sollte damit verbunden werden insbesondere Einkaufswagen, sozusagen. 199 00:09:51,440 --> 00:09:55,060 In anderen Worten, wenn ich jetzt gehen wieder hier und laden Sie diese Seite, 200 00:09:55,060 --> 00:09:58,020 wie funktioniert der Server wissen dass ich besuchte eine Zeit? 201 00:09:58,020 --> 00:10:01,730 >> Oder wenn ich es wieder tun, wie funktioniert der Server weiß, dass ich es zweimal besucht? 202 00:10:01,730 --> 00:10:04,680 Nun, wenn ich nach unten gehen, um dies die letzte Anforderung, die 203 00:10:04,680 --> 00:10:09,150 Es ist jetzt die dritte, dass ich geschickt Insgesamt bemerken jetzt meine Anfrage. 204 00:10:09,150 --> 00:10:11,300 Es gibt immer noch diese fordern hier oben, gleiche 205 00:10:11,300 --> 00:10:15,040 wie zuvor, es gibt noch eine ganze Reihe Sachen, die wir nach wie vor ignoriert habe, 206 00:10:15,040 --> 00:10:19,350 aber das allerletzte Header, dies Zeit, denn ich war schon einmal hier, 207 00:10:19,350 --> 00:10:21,980 ist eine Darstellung von Diese virtuelle Handstempel. 208 00:10:21,980 --> 00:10:28,957 >> Wobei diese Linie hier, nicht gesetzt Cookie aber Cookie Dick PHPSESSI = 0vlk8t, 209 00:10:28,957 --> 00:10:32,040 das ist nur meine Browsers automatische Präsentation dieser Handstempel, so dass 210 00:10:32,040 --> 00:10:37,910 nun der Server, sobald es erkennt, ooh, ist dieser Benutzer 0vlk8t Punkt, Punkt, Punkt, 211 00:10:37,910 --> 00:10:42,010 Ich kann jetzt daran erinnern, wer er oder sie ist und reassoziieren mit diesem Benutzer unabhängig 212 00:10:42,010 --> 00:10:46,450 Informationen Ich möchte, und alle dass Informationen von Ihnen gespeichert, 213 00:10:46,450 --> 00:10:50,130 der Programmierer, in $ _SESSION. 214 00:10:50,130 --> 00:10:57,170 >> So klar zu sein, wenn ich eröffnen ganz schnell in gedit, dass eigentliche Datei, counter.php, 215 00:10:57,170 --> 00:11:02,340 in meinem lokalen Host öffentliches Verzeichnis wie zuvor, feststellen, dass in der Tat, 216 00:11:02,340 --> 00:11:06,860 Ich bin letztlich Speicherung in $ _SESSION Zitat unquote "counter" 217 00:11:06,860 --> 00:11:10,110 der Wert des vorherigen Zähler, Ich von dieser Zeilen bekommen hier oben, dass wir 218 00:11:10,110 --> 00:11:13,010 sah letztes Mal plus eins. 219 00:11:13,010 --> 00:11:14,980 Also unter der Haube, Das ist alles, Plätzchen sind. 220 00:11:14,980 --> 00:11:17,563 Es ist genau die Art von digitalen Handstempel hin und her, 221 00:11:17,563 --> 00:11:20,450 und ehrlich gesagt, wenn Sie öffnen Chrome Inspector auf jeder Website 222 00:11:20,450 --> 00:11:22,580 Sie heute besuchen, mit super hohe Wahrscheinlichkeit, 223 00:11:22,580 --> 00:11:25,450 wirst du vielleicht eines sehen, vielleicht ein halbes Dutzend Cookies 224 00:11:25,450 --> 00:11:26,650 von Ihnen in Erinnerung. 225 00:11:26,650 --> 00:11:29,500 >> Und schlimmer noch, wenn diejenigen, Webseite Sie gerade besuchen 226 00:11:29,500 --> 00:11:32,640 alle Anzeigen, die ist sicherlich durchaus üblich heute, 227 00:11:32,640 --> 00:11:36,100 und wenn diese Anzeigen kommen von einigen zentralen Partei, jemand 228 00:11:36,100 --> 00:11:39,000 wie Google oder AdWords, da sie rufen eines ihrer Produkte 229 00:11:39,000 --> 00:11:42,880 oder andere solche Anbieter, die verkaufen Anzeigen, was ist interessant, 230 00:11:42,880 --> 00:11:46,510 und ehrlich gesagt, was ein wenig besorgniserregend, wie HTTP funktioniert, 231 00:11:46,510 --> 00:11:50,855 ist, dass, wenn Sie eine Anzeige eingebettet in Facebook.com und Google.com, 232 00:11:50,855 --> 00:11:54,240 und Harvard.edu, eine beliebige Anzahl von Websites, so dass es wie 233 00:11:54,240 --> 00:11:58,130 dass es einen mittleren Mann, der dient, up-Anzeigen für alle drei dieser Websites, 234 00:11:58,130 --> 00:12:02,110 es stellt sich heraus, dass die Cookies sind pro Domain. 235 00:12:02,110 --> 00:12:05,910 >> Also, wenn Sie eine Anzeige aus dem Kommen gleichen Firma auf verschiedenen Websites, 236 00:12:05,910 --> 00:12:11,140 dass Unternehmen effektiv zu verfolgen, die Sie sind für alle Websites. 237 00:12:11,140 --> 00:12:13,140 Harvard vielleicht nicht wissen Sie besuchen Facebook. 238 00:12:13,140 --> 00:12:15,306 Facebook vielleicht nicht wissen, und Sie besuchen Harvard. 239 00:12:15,306 --> 00:12:18,160 Aber was auch immer Anzeigenservice sie verwenden, wenn die Domäne ist 240 00:12:18,160 --> 00:12:21,710 sowohl Harvard.edu Bahn vorhanden Seiten und Facebook.com Webseiten 241 00:12:21,710 --> 00:12:26,850 Dieser Mittelsmann weiß sicherlich, wer du bist Aufgrund dieser Cookies geteilt 242 00:12:26,850 --> 00:12:30,910 ganz oder vielmehr, dass so genannte Mittels. 243 00:12:30,910 --> 00:12:33,820 >> Also werden wir wieder auf diese kommen Auswirkungen auf die Sicherheit davon 244 00:12:33,820 --> 00:12:37,170 aber es gibt eine Vielzahl von Informationen über Sie zu jeder Zeit gespeichert Sie 245 00:12:37,170 --> 00:12:40,120 besuchen die meisten jede Web-Seite auf das Internet und es ist wirklich 246 00:12:40,120 --> 00:12:42,877 reduziert sich dieser sehr einfachen Mechanismus. 247 00:12:42,877 --> 00:12:44,710 Was passiert, dann, wenn Sie sind super paranoid bist 248 00:12:44,710 --> 00:12:48,190 und Sie entscheiden sich in Chrome oder IE gehen oder drehen Sie unabhängig und Sie Ihre Cookies? 249 00:12:48,190 --> 00:12:49,365 Was passiert? 250 00:12:49,365 --> 00:12:50,790 Ja? 251 00:12:50,790 --> 00:12:53,170 Sie really-- haben Sie diesen richtig gemacht? 252 00:12:53,170 --> 00:12:54,350 Ok. 253 00:12:54,350 --> 00:12:55,994 Nein, nur zu. 254 00:12:55,994 --> 00:12:59,645 >> PUBLIKUM: Bestimmte Websites müssen nicht eine Funktion ohne sie mag Facebook. 255 00:12:59,645 --> 00:13:00,520 DAVID J. MALAN: Yeah! 256 00:13:00,520 --> 00:13:02,311 So bestimmte Websites wird nur aufhören zu arbeiten. 257 00:13:02,311 --> 00:13:05,520 Und in den meisten Websites in diesen Tagen dass grundsätzlich auf Cookies angewiesen, 258 00:13:05,520 --> 00:13:08,360 vor allem, wenn sie dich anmelden zu können in, sie sind gerade dabei, zu brechen. 259 00:13:08,360 --> 00:13:10,360 Da halten die Alternative, wenn die Website 260 00:13:10,360 --> 00:13:14,480 keine Möglichkeit hat, zu erinnern, wer Sie sind, und damit Ihr Browser unterstützt kein 261 00:13:14,480 --> 00:13:16,949 repräsentiert mit jeder HTTP Anfrage dieser Handstempel, 262 00:13:16,949 --> 00:13:18,740 effektiv eine Webseite wie Facebook los 263 00:13:18,740 --> 00:13:22,050 , Sie zu veranlassen, haben log in jedes verdammte Mal 264 00:13:22,050 --> 00:13:26,200 Sie Seiten zu ändern, oder klicken Sie auf einen Link, der ist sicherlich kein besonders guter Benutzer 265 00:13:26,200 --> 00:13:26,920 Erlebnis. 266 00:13:26,920 --> 00:13:30,020 >> So, dass es auch das ist unter den Kompromisse. 267 00:13:30,020 --> 00:13:34,140 So ohne weiteres lassen Sie uns für selbstverständlich, dass mit Web-Programmierung, 268 00:13:34,140 --> 00:13:37,630 in Sprachen wie PHP, die Sie sich erinnern können Informationen wie die in Problem eingestellt 269 00:13:37,630 --> 00:13:41,550 sieben, wenn Sie Ihre eigenen zu implementieren E * Trade-ähnlichen Website mit denen zu kaufen 270 00:13:41,550 --> 00:13:45,710 und Verkauf von Aktien, werden Sie genau erinnern was der Benutzer gekauft und verkauft 271 00:13:45,710 --> 00:13:49,110 und wer er oder sie ist über diese Sitzung. 272 00:13:49,110 --> 00:13:51,110 Aber wir gehen zu müssen, ein schicker Weg, als E-Mail 273 00:13:51,110 --> 00:13:52,640 zu starten halten Informationen rund um. 274 00:13:52,640 --> 00:13:53,140 Richtig? 275 00:13:53,140 --> 00:13:56,780 >> Am Montag, ca. Frosh IMs sprachen wir und wie in der Version einer dieser Website, 276 00:13:56,780 --> 00:14:00,250 vor Jahren, alles, was wir taten, war Die e-mail Proctor wer 277 00:14:00,250 --> 00:14:04,250 verantwortlich für die internen Sport Programms den Namen und das Geschlecht, 278 00:14:04,250 --> 00:14:07,330 und ob oder nicht sie sind ein Hauptmann, und das Wohnheim von jemanden, der 279 00:14:07,330 --> 00:14:10,136 Anmeldung zu einer intramuralen Sport. 280 00:14:10,136 --> 00:14:13,010 Also ist es nicht schlecht, aber er oder sie dann mussten durch ihre E-Mail troll, 281 00:14:13,010 --> 00:14:16,010 machen Sie eine Tabelle oder so ähnlich dass, damit alles organisiert. 282 00:14:16,010 --> 00:14:19,750 So sicher wir als Programmierer Dies kann für die Proctor zu tun. 283 00:14:19,750 --> 00:14:22,970 Und so geben Sie in SQL, Structured Query Language, 284 00:14:22,970 --> 00:14:26,050 die gehen auch hübsch aussehen verschiedenen, sowohl C und PHP, 285 00:14:26,050 --> 00:14:30,990 und du wirst viel mehr Hände auf tauchen in PHP und Problem set sieben sondern auch SQL, 286 00:14:30,990 --> 00:14:35,310 oder SQL, eine Sprache ist das, dass Sie verwenden, um auf eine Datenbank zu sprechen. 287 00:14:35,310 --> 00:14:36,480 >> Aber was ist eine Datenbank? 288 00:14:36,480 --> 00:14:38,440 Nun, Sie von einem denken Datenbank, zumindest derzeit, 289 00:14:38,440 --> 00:14:41,750 als einfach nur wie eine Excel-Datei, oder Wenn Sie ein Mac-Benutzer ein Zahlen-Datei sind, 290 00:14:41,750 --> 00:14:44,400 oder wenn Sie ein Google Apps sind Anwender eine Google-Tabelle, 291 00:14:44,400 --> 00:14:49,120 es ist tatsächlich eine Datenbank, oder wirklich insbesondere eine relationale Datenbank. 292 00:14:49,120 --> 00:14:53,070 Eine relationale Datenbank ist nur etwas, das Reihen und Spalten hat, 293 00:14:53,070 --> 00:14:56,440 und Sie jede Art von speichern kann Informationen in diesen Zeilen oder Spalten. 294 00:14:56,440 --> 00:15:00,480 >> Aber was ist schön zu SQL und über aktuelle Datenbanken, nicht nur 295 00:15:00,480 --> 00:15:04,910 Tabellen oder Google Spreadsheets, ist, dass man eine Sprache verwenden 296 00:15:04,910 --> 00:15:09,000 um tatsächlich Abfragen auszuführen, um Einfügen von Daten, um Daten zu entfernen, 297 00:15:09,000 --> 00:15:11,620 nach Daten zu suchen, auch am wichtigsten ist, und man 298 00:15:11,620 --> 00:15:16,110 müssen nicht es ziemlich manuell verwenden Wie Sie vielleicht in der Regel ein Google 299 00:15:16,110 --> 00:15:17,690 Tabellenkalkulation wie diese. 300 00:15:17,690 --> 00:15:22,217 >> Also in SQL, es gibt eine Reihe von grundlegende Aussagen oder Stücke 301 00:15:22,217 --> 00:15:23,300 Funktionalität eingebaut. 302 00:15:23,300 --> 00:15:26,450 Es gibt viel mehr als diese, Sie können jedoch einen riesigen Abstand zu gehen 303 00:15:26,450 --> 00:15:28,620 nur durch das Wissen, dass diese Sprache genannt 304 00:15:28,620 --> 00:15:30,840 SQL mindestens vier Aussagen, die Sie nutzen können. 305 00:15:30,840 --> 00:15:34,420 >> Löschen, zum Entfernen von Daten, Legen Sie zum Hinzufügen von Zeilen, 306 00:15:34,420 --> 00:15:37,340 Update, zum Ändern Zeilen und Auswählen, 307 00:15:37,340 --> 00:15:39,860 für immer wieder Zeilen und das ist in der Tat, was SQL tut. 308 00:15:39,860 --> 00:15:43,810 Es arbeitet völlig auf Reihen so dass, wenn Sie einfügen oder entfernen, 309 00:15:43,810 --> 00:15:47,470 oder aktualisieren, oder wählen Sie, was Sie immer wieder als so genannte Ergebnismenge, 310 00:15:47,470 --> 00:15:49,690 wie ein Array von Zeilen. 311 00:15:49,690 --> 00:15:51,700 Ein Bündel von Zeilen aus einer Tabelle. 312 00:15:51,700 --> 00:15:54,050 >> Also zurück in den Tag, und bis auf diesen Tag, 313 00:15:54,050 --> 00:15:56,560 Sie können mit den interagieren Datenbank mit einer Befehlszeile 314 00:15:56,560 --> 00:15:59,691 aber es ist nicht besonders Spaß zu benutzen Diese Schwarzweiss-Fensterstil 315 00:15:59,691 --> 00:16:02,190 und tatsächlich Befehle ausführen und herumzustochern Ihrer Datenbank. 316 00:16:02,190 --> 00:16:06,054 Eine graphische Benutzerschnittstelle oder GUI, ist viel mehr bevorzugt, wohl, 317 00:16:06,054 --> 00:16:08,970 und so das Werkzeug, das wir empfehlen und für Sie vorinstalliert auf dem Gerät 318 00:16:08,970 --> 00:16:10,580 heißt phpMyAdmin. 319 00:16:10,580 --> 00:16:14,060 Es ist ein Gesamt Zufall, dass die Name dieses Ding hat PHP drin, 320 00:16:14,060 --> 00:16:17,430 es bedeutet nur, dass die Menschen, der schrieb dieses Programm selbst 321 00:16:17,430 --> 00:16:18,670 schrieb es in PHP. 322 00:16:18,670 --> 00:16:23,740 >> Aber es ist letztlich über die Verwaltung ein Datenbankserver, wie ein MySQL-Server 323 00:16:23,740 --> 00:16:26,589 dass Sie vielleicht, wie Sie tun, in der CS50-Appliance. 324 00:16:26,589 --> 00:16:29,130 Also gibt es hier näher als wir brauchen, um über die heutige Pflege, 325 00:16:29,130 --> 00:16:33,280 aber was ist Schlüssel ist, dass auf der linken Seite Seite finden Sie eine Liste der Datenbanken 326 00:16:33,280 --> 00:16:36,040 dass Sie auf Ihrem Computer haben, auf Ihrem CS50 Appliance 327 00:16:36,040 --> 00:16:40,090 oder kommen letzten Projekte, die Sie vielleicht haben auf einen Dritten, einer Gesellschaft 328 00:16:40,090 --> 00:16:43,415 Website oder Web-Server, dass Sie könnte die Zahlung für Raum. 329 00:16:43,415 --> 00:16:45,290 Also auf der linken Seite ist die Datenbanken, von denen eine 330 00:16:45,290 --> 00:16:48,750 ist pset7 die ich ab dem nächsten ausgeliehen pset Wochen, und dann auf der oberen 331 00:16:48,750 --> 00:16:51,570 es feststellen, es gibt eine Bündel von Registerkarten, von denen 332 00:16:51,570 --> 00:16:55,150 ist Datenbanken, SQL, Status, Benutzer, Export und so weiter. 333 00:16:55,150 --> 00:16:56,900 So können Sie eine lange gehen Weg nur durch die Realisierung 334 00:16:56,900 --> 00:16:59,770 dass die meisten Benutzerschnitt ist in der linken oberen Spalte 335 00:16:59,770 --> 00:17:02,650 und über der Spitze bis es. 336 00:17:02,650 --> 00:17:04,980 Also, was können wir eigentlich damit zu tun? 337 00:17:04,980 --> 00:17:08,609 Nun, lassen Sie uns beginnen die Schaffung eines Bit an Information wie folgt. 338 00:17:08,609 --> 00:17:11,760 >> Angenommen, die folgenden der Fall ist, wie in nur wenigen Tagen, 339 00:17:11,760 --> 00:17:14,440 Sie implementieren Gesuch Website, genannt CS50 Finanzen, 340 00:17:14,440 --> 00:17:17,328 und diese Website können Sie kaufen zitieren unquote und verkaufen Aktien. 341 00:17:17,328 --> 00:17:19,619 Und es wird, um herauszufinden, der Preis für diejenigen Bestände, 342 00:17:19,619 --> 00:17:22,380 letztlich wie Sie sehen werden, durch Gespräche mit Yahoo Finance. 343 00:17:22,380 --> 00:17:26,250 Welche, wunderbar, hat eine kostenlose Service wobei Sie in einem Börsenticker geben 344 00:17:26,250 --> 00:17:29,830 wie GOOG für Google, und es wird geben Sie wieder aktuelle Aktien Google 345 00:17:29,830 --> 00:17:32,250 Preis innerhalb der Vergangenheit wenige Minuten mindestens. 346 00:17:32,250 --> 00:17:35,080 >> So werden Sie, dass zu verwenden, letztlich für den Benutzer vorgeben 347 00:17:35,080 --> 00:17:37,750 zum Kauf und Verkauf tatsächlichen Aktien mit virtuellem Geld, 348 00:17:37,750 --> 00:17:39,750 aber das erste, was der Benutzer geht, um zu sehen 349 00:17:39,750 --> 00:17:43,850 ist dieses Anmeldebildschirm, der sie fragt, für ihre Benutzernamen und Passwort. 350 00:17:43,850 --> 00:17:46,540 Und so, einer der ersten Herausforderungen für Sie in pset7 351 00:17:46,540 --> 00:17:50,460 sein wird, um das Backend zu implementieren Datenbank, die Tabellenkalkulation, wenn man so will, 352 00:17:50,460 --> 00:17:53,369 das wird gespeichert Nutzer Namen und Passwörter 353 00:17:53,369 --> 00:17:56,660 und schließlich, welche Aktien sie besitzen, und wie viele, und wie viel Geld sie haben, 354 00:17:56,660 --> 00:18:00,110 so ein paar andere Dinge in anderen Tabellen oder Tabellenkalkulationen. 355 00:18:00,110 --> 00:18:05,020 >> Werfen wir also einen Blick auf, wie diese auf den ersten Blick erscheinen. 356 00:18:05,020 --> 00:18:06,980 Ich werde zurück zu gehen das Gerät und ich bin 357 00:18:06,980 --> 00:18:14,102 gehen auf diese URL hier gehen phpMyAdmin localhost / phpmyadmin 358 00:18:14,102 --> 00:18:16,060 und du wirst sehen, dass es bringt mich zu einer Schnittstelle 359 00:18:16,060 --> 00:18:18,520 genau so, wie wir an der Säge Screenshot, und hier bin 360 00:18:18,520 --> 00:18:21,560 haben eine zusätzliche Datenbank genannt Vortrag für heute 361 00:18:21,560 --> 00:18:24,280 und lass mich weitermachen ersten und klicken Sie auf pset7. 362 00:18:24,280 --> 00:18:27,940 >> Ich glaube mich zu ein paar Optionen haben, ein neuer, zum Erstellen einer neuen Tabelle, 363 00:18:27,940 --> 00:18:30,770 und einen Link für die Nutzer, die ist eine Tabelle habe ich bereits erstellt. 364 00:18:30,770 --> 00:18:31,790 Also, was ist ein Tisch? 365 00:18:31,790 --> 00:18:33,740 Also, wenn Sie Excel verwendet zuvor, und wenn Sie noch 366 00:18:33,740 --> 00:18:37,110 gebrauchte Nummern oder Google Tabellenkalkulationen, ein Fenster zu öffnen Sie 367 00:18:37,110 --> 00:18:39,350 und Sie haben eine ganze Reihe bekommen von Zeilen und Spalten, 368 00:18:39,350 --> 00:18:43,120 aber dann müssen Sie normalerweise Arbeitsblätter entlang der unteren oder separaten Registerkarten. 369 00:18:43,120 --> 00:18:46,140 Sie können von jedem zu denken Arbeitsblatt als Tabelle 370 00:18:46,140 --> 00:18:51,150 so dass die Datenbank letztlich ein Kombination aus einer oder mehreren Tabellen, eine 371 00:18:51,150 --> 00:18:54,064 oder mehrere Arbeitsblätter, in die Welt einer normalen Tabelle. 372 00:18:54,064 --> 00:18:55,980 Also lassen Sie mich gehen Sie vor und klicken Sie auf dieses Arbeitsblatt 373 00:18:55,980 --> 00:18:59,420 dass ich vorgefertigt, die so genannte Benutzer, alias 374 00:18:59,420 --> 00:19:00,700 Datenbanktabelle. 375 00:19:00,700 --> 00:19:04,130 Und wenn ich hier unten zu blättern, lassen Sie mich heran ein bisschen, 376 00:19:04,130 --> 00:19:08,479 das ist, was phpMyAdmin erzählt uns innerhalb dieser Tabelle jetzt. 377 00:19:08,479 --> 00:19:11,020 Es ist ein wenig verwirrend auf den ersten Blick, weil das UI ist nicht 378 00:19:11,020 --> 00:19:15,140 die schönste Sache der Welt, aber Interessant ist dieser Teil hier. 379 00:19:15,140 --> 00:19:17,970 ID, Benutzernamen und Hash. 380 00:19:17,970 --> 00:19:20,510 >> Im Voraus, und du wirst gängig sein dies Problem stellte sieben, 381 00:19:20,510 --> 00:19:25,050 wir eine Datei mit einer Super Ihnen kleine Datenbanktabelle, lieh tatsächlich 382 00:19:25,050 --> 00:19:27,070 aus der Hacker-Ausgabe Problem Satz zwei, 383 00:19:27,070 --> 00:19:29,480 innerhalb von denen es sechs Reihen. 384 00:19:29,480 --> 00:19:32,720 Einer für Belinda alle Weg hinunter zum einen für Zamyla, 385 00:19:32,720 --> 00:19:35,980 und beachten Sie auf der linken Seite diejenigen, Benutzernamen sind eindeutige IDs wie einer, 386 00:19:35,980 --> 00:19:39,410 zwei, drei, vier, fünf, sechs, ganzen Zahlen, und dann auf der rechten Seite sind Hashes. 387 00:19:39,410 --> 00:19:42,780 >> Und wenn, Chancen sind, Sie haben nicht zu tun der Hacker Edition Problem stellte zwei, 388 00:19:42,780 --> 00:19:46,560 sondern ein Hash ist wie eine verschlüsselte Passwort mit ein paar Einschränkungen. 389 00:19:46,560 --> 00:19:49,470 Und so, was Sie hier sehen, sind die verschlüsselten Versionen aller sechs 390 00:19:49,470 --> 00:19:52,950 unserer Passwörter von Problem Satz zwei Hacker-Ausgabe. 391 00:19:52,950 --> 00:19:56,500 Jetzt nach links ist nur eine grafische Oberfläche, Bearbeiten Sie diese Zeile, kopieren Sie diese Zeile, 392 00:19:56,500 --> 00:19:57,630 Löschen Sie diese Zeile. 393 00:19:57,630 --> 00:19:59,840 >> Aber was ist interessant Jetzt ist die folgende. 394 00:19:59,840 --> 00:20:03,810 Ich kann tatsächlich beginnen Experimentieren mit dieser Tabelle. 395 00:20:03,810 --> 00:20:07,330 Also, wenn ich hingehe und auf die SQL Registerkarte, bekomme ich diese großen Textfeld ein. 396 00:20:07,330 --> 00:20:10,190 Und das ist nicht, wie wir zu gehen es tun, wenn tatsächlich das Schreiben von Code. 397 00:20:10,190 --> 00:20:12,700 Um es klar, phpMyAdmin ist nur ein Werkzeug, das ist 398 00:20:12,700 --> 00:20:16,450 gehen zu lassen, uns rund um die Datenbank zu stoßen und lassen Sie uns bei Fragen zu experimentieren. 399 00:20:16,450 --> 00:20:19,430 >> So zum Beispiel: Angenommen, Ich ausführen genau diese. 400 00:20:19,430 --> 00:20:22,820 Wählen, die eine von denen ist, Stichworte ich bereits erwähnte, Stern, 401 00:20:22,820 --> 00:20:25,900 Erforderlich ist eine alle die Spalten in einer Tabelle. 402 00:20:25,900 --> 00:20:26,820 Ab welchem ​​Tisch? 403 00:20:26,820 --> 00:20:27,990 Nun, Nutzern. 404 00:20:27,990 --> 00:20:29,950 Und Ankündigung gibt es diese komisch Konvention in SQL 405 00:20:29,950 --> 00:20:32,140 wo Sie tatsächlich nutzen zurück Zecken, typischerweise, 406 00:20:32,140 --> 00:20:35,940 nicht einfache Anführungszeichen und nicht doppelte Anführungszeichen wenn Sie über Tabellen Namen zu sprechen, 407 00:20:35,940 --> 00:20:38,990 so dass die Rückseite Zitat ist der Sache auf den oben links auf der Tastatur die meisten 408 00:20:38,990 --> 00:20:39,720 wahrscheinlich. 409 00:20:39,720 --> 00:20:41,850 >> Also lassen Sie mich voran gehen jetzt und lassen Sie einfach das allein 410 00:20:41,850 --> 00:20:46,020 und blättern Sie nach unten und klicken Sie auf Go, und wir sind eigentlich los, um die gleiche Sache zu sehen. 411 00:20:46,020 --> 00:20:52,410 Wir haben gerade eine SQL-Abfrage ausgeführt sagen select alles Sterne 412 00:20:52,410 --> 00:20:55,610 aus Tabelle namens Benutzer und was Sie zurückbekommen ist dies. 413 00:20:55,610 --> 00:20:58,400 Letztlich werden wir in der Lage zu sein, Tun Sie das Gleiche in Code, 414 00:20:58,400 --> 00:21:02,109 aber jetzt wollte ich Sie war zu sehen in meinem Browser. 415 00:21:02,109 --> 00:21:03,900 Nun lasst uns etwas tun ein wenig anders. 416 00:21:03,900 --> 00:21:08,330 Lassen Sie mich zurück in die Registerkarte SQL, und lassen Sie uns einfach sagen, dass das, was? 417 00:21:08,330 --> 00:21:11,520 Zamyla hat all ihre verloren Geld und daher ist es 418 00:21:11,520 --> 00:21:13,190 Zeit für uns, sie als Benutzer löschen. 419 00:21:13,190 --> 00:21:14,630 Sie ist nicht mehr einloggen. 420 00:21:14,630 --> 00:21:18,870 >> Also werde ich sagen löschen from-- gut, pflegen Kapitalisierung 421 00:21:18,870 --> 00:21:23,080 Konsistenz, löschen von den Benutzern, wo. 422 00:21:23,080 --> 00:21:25,430 Und so können wir diese haben Prädikate, oder diese 423 00:21:25,430 --> 00:21:31,180 Qualifikanten, am Ende meiner Aussage wo und wie könnte ich Zamyla löschen? 424 00:21:31,180 --> 00:21:34,190 Durch ihren Namen Zamyla, so dass die Spalte einer der Spalten 425 00:21:34,190 --> 00:21:37,950 benannt wurde, also wo name = "Zamyla". 426 00:21:37,950 --> 00:21:40,000 Und hier verwende ich Doppel Anführungszeichen oder Apostrophe, 427 00:21:40,000 --> 00:21:42,958 Sie verwenden nur die Rückseite Zecken, wenn Gespräch über den Namen, zum Beispiel, 428 00:21:42,958 --> 00:21:45,130 Tabellen oder Felder. 429 00:21:45,130 --> 00:21:47,440 Und lassen Sie mich klicken Sie hier. 430 00:21:47,440 --> 00:21:50,400 Und jetzt ist die Web-Seite , ein wenig nervös. 431 00:21:50,400 --> 00:21:53,620 >> Oder glauben Sie wirklich ausführen löschen möchten von den Benutzern, in der Name gleich Zamyla? 432 00:21:53,620 --> 00:21:54,680 Ja. 433 00:21:54,680 --> 00:22:01,900 So, jetzt, wenn wir zurückgehen zu meinem Tisch durch Klicken auf Benutzer feststellen, dass Hm. 434 00:22:01,900 --> 00:22:02,530 Ich vermasselte. 435 00:22:02,530 --> 00:22:04,070 Und in der Tat, ich Art von weggeklickt so schnell 436 00:22:04,070 --> 00:22:06,195 Sie sah nicht einmal die rote Fehlermeldung, vielleicht. 437 00:22:06,195 --> 00:22:07,649 Was habe ich falsch gemacht? 438 00:22:07,649 --> 00:22:09,690 PUBLIKUM: Sie brauchte nicht zu ihrem Namen Kapital zu schlagen. 439 00:22:09,690 --> 00:22:11,260 DAVID J. MALAN: Yeah I kapitalisiert ihren Namen, 440 00:22:11,260 --> 00:22:13,770 aber ihr username-- eigentlich bin machte ein paar Fehler, oder? 441 00:22:13,770 --> 00:22:16,720 Eines ist ihr Benutzername zamyla, Kleinbuchstaben Z, 442 00:22:16,720 --> 00:22:20,140 und der Spaltenname Benutzername, nicht nennen, so machen wir das wieder. 443 00:22:20,140 --> 00:22:25,750 Lassen Sie mich gehen Sie vor und von den Benutzern wo löschen 444 00:22:25,750 --> 00:22:28,990 Benutzername gleich Zitat unquote "Zamyla". 445 00:22:28,990 --> 00:22:29,490 In Ordnung? 446 00:22:29,490 --> 00:22:32,600 So sieht das ein wenig besser, lassen mir gehen nach unten scrollen und klicken Sie auf Go. 447 00:22:32,600 --> 00:22:34,730 Es ist immer noch zu schreien mich an, um sicher zu sein. 448 00:22:34,730 --> 00:22:37,500 Ich klicken Sie auf Ja, und jetzt sehen wir, ehrlich gesagt das passiert ist, wirklich 449 00:22:37,500 --> 00:22:39,870 schnell, weniger als ein zweiten natürlich, diese 450 00:22:39,870 --> 00:22:41,720 ist genau die Abfrage, die ausgeführt wurde. 451 00:22:41,720 --> 00:22:45,617 Um zu bestätigen, lassen Sie mich auf Benutzer und in der Tat jetzt Zamyla ist weg. 452 00:22:45,617 --> 00:22:46,700 Nun wollen wir das Gegenteil tun. 453 00:22:46,700 --> 00:22:49,320 Angenommen, Gabe will registrieren Sie sich für die Website. 454 00:22:49,320 --> 00:22:52,825 Was ist die SQL-Abfrage, was ist das Befehl konnte ich eingeben, um Gabe hinzufügen? 455 00:22:52,825 --> 00:22:54,200 Nun, es ist ziemlich einfach. 456 00:22:54,200 --> 00:22:58,260 Legen Sie in Benutzer, und jetzt wird es ein wenig kryptisch. 457 00:22:58,260 --> 00:23:03,190 Ich brauche, um festzulegen, auf den Server, welche Felder Ich möchte zuordnen. 458 00:23:03,190 --> 00:23:06,630 Ich weiß nicht wirklich, was Gabes ID Nummer ist, so werde ich, dass zu überspringen. 459 00:23:06,630 --> 00:23:11,360 Ich bin stattdessen sagen Benutzername, Hash, und dann 460 00:23:11,360 --> 00:23:14,960 die Werte möchte ich setzen es geht um Gabe sein. 461 00:23:14,960 --> 00:23:16,800 Und dann seine Hash, weiß ich nicht. 462 00:23:16,800 --> 00:23:19,900 So jetzt bin ich zu gehen verlassen, dass als eine große zu tun. 463 00:23:19,900 --> 00:23:21,650 Wir kommen wieder zu kommen dass das Problem eingestellt 464 00:23:21,650 --> 00:23:23,390 spec, wie Sie tatsächlich tun. 465 00:23:23,390 --> 00:23:24,630 >> So bemerken, wieder, die Syntax. 466 00:23:24,630 --> 00:23:28,430 Legen Sie in Tabellennamen, dann einen geklammerten Liste der Felder, 467 00:23:28,430 --> 00:23:30,980 die Spalten, die Sie hinzufügen möchten Werte auf, und dann einfach 468 00:23:30,980 --> 00:23:34,495 exakt das gleiche Bestell links nach rechts von den Werten, die Sie hinzufügen möchten, 469 00:23:34,495 --> 00:23:36,870 und es ist nur Verpackung, weil der Text ist ein wenig lang. 470 00:23:36,870 --> 00:23:38,520 So, jetzt lassen Sie mich auf Go. 471 00:23:38,520 --> 00:23:39,830 Eine Zeile eingefügt. 472 00:23:39,830 --> 00:23:43,020 Und jetzt, wenn ich wieder nach Nutzer, was interessant 473 00:23:43,020 --> 00:23:48,960 ist, dass nicht nur Gabe nun in der Datenbank, was offenbar seine ID? 474 00:23:48,960 --> 00:23:49,820 >> Nun, es ist sieben. 475 00:23:49,820 --> 00:23:51,479 Warum ist es sieben, wenn ich es nicht hinzufügen? 476 00:23:51,479 --> 00:23:54,020 So auch dies ist einer der Funktionen erhalten Sie von der Datenbank. 477 00:23:54,020 --> 00:23:55,750 Viele in der Funktionalität gebaut. 478 00:23:55,750 --> 00:23:57,950 Es stellt sich heraus, daß, wenn erstellt diese Tabelle, 479 00:23:57,950 --> 00:24:01,390 Ich vorkonfiguriert ist es automatisch Zuweisung einer ID in der Weise 480 00:24:01,390 --> 00:24:02,480 dass es erhöht. 481 00:24:02,480 --> 00:24:05,470 Also, wenn Sie jemals in der Umgebung gestoßen habe, und sah, was Ihre Facebook-ID 482 00:24:05,470 --> 00:24:09,292 Nummer ist, in diesen Tagen ist es nicht wirklich eine Sache, aber Facebook als eine API zu tun, 483 00:24:09,292 --> 00:24:11,750 Application Programming Interface, wodurch können Sie wieder 484 00:24:11,750 --> 00:24:14,430 eine ganze Reihe von Daten über sich selbst, über deine Freunde, 485 00:24:14,430 --> 00:24:15,347 und Ihre Verbindungen. 486 00:24:15,347 --> 00:24:17,430 Und was früher Art sein von cool, wieder in den Tag, 487 00:24:17,430 --> 00:24:19,510 war nachschlagen, was Ihr Facebook-ID-Nummer war. 488 00:24:19,510 --> 00:24:22,390 Mark Zuckerberg, zum Beispiel ist drei 489 00:24:22,390 --> 00:24:23,890 da war er der Autor der Seiten. 490 00:24:23,890 --> 00:24:27,610 Und wie geht die Geschichte, schuf er zwei Testkonten, Benutzer eins und zwei, 491 00:24:27,610 --> 00:24:28,690 dem er anschließend gelöscht. 492 00:24:28,690 --> 00:24:32,780 Und so, Zuck, wie es seinen Benutzernamen auf Facebook, ist ID die Nummer drei, 493 00:24:32,780 --> 00:24:36,110 und wir alle haben Nummern viel größer als drei in diesen Tagen. 494 00:24:36,110 --> 00:24:37,980 In der Tat an irgendeinem Punkt Facebook wegbewegt 495 00:24:37,980 --> 00:24:42,410 von selbst mit einem int, die ist ein 32-Bit-Wert, zur Verwendung 496 00:24:42,410 --> 00:24:44,480 der nächste Schritt, Wesentlichen eine lange, lange so 497 00:24:44,480 --> 00:24:47,150 dass sie unterbringen konnte noch mehr Nutzer registrieren. 498 00:24:47,150 --> 00:24:49,420 So ein Spaß wenig historische Tatsache. 499 00:24:49,420 --> 00:24:51,660 >> Also das ist nur die grundlegende Syntax, mit denen 500 00:24:51,660 --> 00:24:54,470 wir könnten ein paar ausführen Anfragen, aber wir können tatsächlich 501 00:24:54,470 --> 00:24:56,744 tun ein paar mehr Dinge mit SQL. 502 00:24:56,744 --> 00:24:58,910 Und du wirst sehen, letztendlich, in dem Problem stellte sieben 503 00:24:58,910 --> 00:25:01,034 dass Sie eine zu machen Anzahl von Design-Entscheidungen, 504 00:25:01,034 --> 00:25:03,290 unter ihnen sein wird, Welche Datentypen zu bedienen. 505 00:25:03,290 --> 00:25:08,240 Also genau wie in C gibt es Daten Typen in einer Datenbank, wie MySQL, 506 00:25:08,240 --> 00:25:12,640 und die Datentypen müssen Sie entscheiden aus sind diese Felder hier. 507 00:25:12,640 --> 00:25:17,287 Char, varchar, Int, große int, dezimal und Datum Zeit, und viele andere. 508 00:25:17,287 --> 00:25:18,370 Also lassen Sie uns dies tatsächlich zu tun. 509 00:25:18,370 --> 00:25:21,060 Nehmen wir an, dass wir nicht Hand, die Sie Tabelle des Nutzers 510 00:25:21,060 --> 00:25:25,080 und lassen Sie mich gehen Sie vor und erstellen, für ich selbst, in den Vorlesungen database-- 511 00:25:25,080 --> 00:25:31,000 eigentlich möchte ich voran gehen und löschen Die Tabelle habe ich hier schon 512 00:25:31,000 --> 00:25:32,940 so dass wir tatsächlich schaffen das. 513 00:25:32,940 --> 00:25:33,550 Whoops. 514 00:25:33,550 --> 00:25:35,970 Ich werde diese fallen Tisch, und jetzt bin ich 515 00:25:35,970 --> 00:25:38,337 werde wieder auf dem Sprung Vortrag Datenbank hier, 516 00:25:38,337 --> 00:25:40,420 Ich werde eine Tabelle erstellen genannt Nutzern und lassen Sie uns 517 00:25:40,420 --> 00:25:43,010 just do drei Spalten zunächst und klicken Sie auf Go. 518 00:25:43,010 --> 00:25:44,990 >> Nun, zum größten Teil, wieder, das ist nur 519 00:25:44,990 --> 00:25:48,570 mit diesen grafischen Tool namens phpMyAdmin, und was wir jetzt tun 520 00:25:48,570 --> 00:25:49,600 ist eine Tabelle erstellen. 521 00:25:49,600 --> 00:25:53,170 Also das ist wie wenn man auf Datei, Neu, und die Schaffung einer neuen Excel-Datei. 522 00:25:53,170 --> 00:25:55,440 Es ist also zu fragen mir ein paar Fragen, von links nach rechts, 523 00:25:55,440 --> 00:25:58,620 was ist der Name der ersten Spalte, und dann der Name der zweiten Spalte, 524 00:25:58,620 --> 00:25:59,560 und der Name der dritten. 525 00:25:59,560 --> 00:26:00,518 Also lassen Sie schaffen sich diese. 526 00:26:00,518 --> 00:26:05,460 ID und dann Benutzername war einer, und dann Hash war eine andere. 527 00:26:05,460 --> 00:26:08,970 Also, was soll der Datentyp sein jetzt ein Feld wie ID? 528 00:26:08,970 --> 00:26:14,470 >> Hier ist die ganze Liste der Datentypen Ihnen zur Verfügung in einer Datenbank, 529 00:26:14,470 --> 00:26:16,070 und jetzt lasst uns einfach mit int gehen. 530 00:26:16,070 --> 00:26:18,160 32-Bit-Wert, ich nicht denke realistisch bin ich 531 00:26:18,160 --> 00:26:21,484 gehen, um mehr als 4 Milliarden haben Benutzer in Ihr Konto, in meinem Dienst, 532 00:26:21,484 --> 00:26:23,650 so werde ich in Bewegung zu bleiben auf die nächste Frage. 533 00:26:23,650 --> 00:26:25,490 Ich werde mich nicht festlegen eine Länge oder Werte, 534 00:26:25,490 --> 00:26:28,540 es ist nicht anwendbar hier für ein int, per se. 535 00:26:28,540 --> 00:26:30,740 Und jetzt kann ich angeben, offenbar ein Standard 536 00:26:30,740 --> 00:26:33,970 Wert, den ich werde nicht angeben. 537 00:26:33,970 --> 00:26:36,050 Eine Zusammenstellung, ich weiß nicht, was das ist. 538 00:26:36,050 --> 00:26:37,290 Ein Attribut. 539 00:26:37,290 --> 00:26:39,455 Jetzt haben wir tatsächlich tun eine Design-Entscheidung. 540 00:26:39,455 --> 00:26:42,580 Es gibt also ein paar Felder hier nicht alle von denen erhoben, aber unsignierte 541 00:26:42,580 --> 00:26:43,380 bedeutet nur, was? 542 00:26:43,380 --> 00:26:45,400 Dass die int sein muss? 543 00:26:45,400 --> 00:26:46,210 Nur nicht negativ. 544 00:26:46,210 --> 00:26:48,090 So hat es auf 0 bis sein. 545 00:26:48,090 --> 00:26:51,120 Nein, ich werde nicht zu überprüfen, weil Ich möchte jeden Benutzer eine ID haben, 546 00:26:51,120 --> 00:26:52,470 es kann nicht null sein. 547 00:26:52,470 --> 00:26:55,949 Und dann haben wir, etwas mehr zu bekommen interessante Design-Entscheidungen wie diese. 548 00:26:55,949 --> 00:26:58,990 Wir werden darauf zurückkommen in einem Augenblick, aber was ein weiteres Merkmal der Datenbank 549 00:26:58,990 --> 00:27:04,200 ist, ist, dass man sagen kann, der Datenbankserver weitermachen 550 00:27:04,200 --> 00:27:07,100 und optimieren Sie sich selbst, Ihre RAM und Festplattenspeicher, 551 00:27:07,100 --> 00:27:11,770 so daß auswählt, und Einsätze, und Löschungen und Aktualisierungen wirklich schnell sind. 552 00:27:11,770 --> 00:27:13,250 Vergleichen Sie dies mit pset5. 553 00:27:13,250 --> 00:27:16,259 >> Wenn Sie etwas nachschauen wollte in Ihrer Hash-Tabelle, die 554 00:27:16,259 --> 00:27:18,300 Sie denken, der als Datenbank, , die alle zu tun hatte 555 00:27:18,300 --> 00:27:21,500 arbeiten für die Herstellung Ihrer Hash-Tabelle schnell. 556 00:27:21,500 --> 00:27:22,840 Es ist wie, natürlich, Sie. 557 00:27:22,840 --> 00:27:23,060 Richtig? 558 00:27:23,060 --> 00:27:26,080 Man musste in all der Zeit feine setzen Tuning Dinge, bekommen eine Hash-Funktion 559 00:27:26,080 --> 00:27:27,820 rechts, herauszufinden, wie viele Eimer zu haben. 560 00:27:27,820 --> 00:27:29,611 >> Aber was ist schön, wieder, über eine Datenbank 561 00:27:29,611 --> 00:27:31,762 Sie gerade Punt alle dies auf andere Menschen 562 00:27:31,762 --> 00:27:33,720 die dies gedacht haben durch für Sie, und welche 563 00:27:33,720 --> 00:27:37,170 Ich werde hier unter sagen Index ist, dass meine ID-Feld 564 00:27:37,170 --> 00:27:41,149 wird sich der primäre Weg der sein Identifizierung von Benutzern in dieser Datenbank. 565 00:27:41,149 --> 00:27:42,940 Ich werde nicht zu denken von Zamyla als Zamyla, 566 00:27:42,940 --> 00:27:45,800 Ich werde denken sie als die Nummer 6. 567 00:27:45,800 --> 00:27:49,814 >> Warum ist es vielleicht besser intuitiv von und Modell denken 568 00:27:49,814 --> 00:27:52,480 jede Ihrer einzelnen Reihen mit eine Zahl anstatt etwas 569 00:27:52,480 --> 00:27:56,480 wie eine Kette, wie die Zamyla oder Gabe oder längeren String noch? 570 00:27:56,480 --> 00:27:57,444 Ja? 571 00:27:57,444 --> 00:28:00,117 >> PUBLIKUM: Eine ID ist einzigartig? 572 00:28:00,117 --> 00:28:01,200 DAVID J. MALAN: Sagen Sie wieder? 573 00:28:01,200 --> 00:28:02,283 PUBLIKUM: Eine ID ist einzigartig? 574 00:28:02,283 --> 00:28:04,400 DAVID J. MALAN: Eine ID ist einzigartig, aber suppose-- 575 00:28:04,400 --> 00:28:06,320 wie im allgemeinen Fall mit Benutzernamen, nehme 576 00:28:06,320 --> 00:28:10,110 Ich sagte auch, es kann nur sein, ein Zamyla in der Welt, und nur eine Gabe. 577 00:28:10,110 --> 00:28:13,730 Ich konnte die Einzigartigkeit verhängen Einschränkung für Streicher, auch, wenn ich wollte. 578 00:28:13,730 --> 00:28:15,550 Also keine schlechte Gedanken. 579 00:28:15,550 --> 00:28:16,500 >> PUBLIKUM: sicherer. 580 00:28:16,500 --> 00:28:17,874 >> DAVID J. MALAN: Sicherer, warum? 581 00:28:17,874 --> 00:28:20,705 PUBLIKUM: Sie können nicht sagen, welche ist die, wie in den Benutzer. 582 00:28:20,705 --> 00:28:22,580 DAVID J. MALAN: OK, Sie kann nicht sagen, welcher Benutzer 583 00:28:22,580 --> 00:28:24,380 ist, welche so gibt es eine Privatsphäre Aspekt, um es, 584 00:28:24,380 --> 00:28:27,810 insbesondere, wenn die IDs vielleicht in den URLs erscheinen. 585 00:28:27,810 --> 00:28:29,960 So sicher, das könnte Art von Arbeit, zu. 586 00:28:29,960 --> 00:28:30,640 Andere Gedanken? 587 00:28:30,640 --> 00:28:31,383 Ja? 588 00:28:31,383 --> 00:28:34,316 >> PUBLIKUM: Es ist einfacher, Operationen auf einem int. 589 00:28:34,316 --> 00:28:35,940 DAVID J. MALAN: Das ist die eigentliche Kicker. 590 00:28:35,940 --> 00:28:38,850 Es ist einfach effizienter, oder einfacher für den Computer, 591 00:28:38,850 --> 00:28:40,431 Operationen auf einem ganzzahligen zuführen. 592 00:28:40,431 --> 00:28:40,930 Richtig? 593 00:28:40,930 --> 00:28:43,905 Ein int wird garantiert 32-bit, während Zamyla 594 00:28:43,905 --> 00:28:47,660 ist ein paar Zeichen, Gabriel ist ein paar mehr Zeichen lang, 595 00:28:47,660 --> 00:28:51,930 Davenport ist wirklich lang, und so ist es nicht besonders effizient zu bedienen 596 00:28:51,930 --> 00:28:55,860 Saiten zum Vergleichen von Werten und suchen für Felder und Felder aktualisieren, 597 00:28:55,860 --> 00:28:57,790 wenn Sie weg erhalten können mit nur einem ganzzahligen. 598 00:28:57,790 --> 00:28:59,090 Nur 32 Bit. 599 00:28:59,090 --> 00:29:02,570 Also Benutzernamen, auch auf diese Weise, nicht eindeutig sein, 600 00:29:02,570 --> 00:29:05,040 obwohl sie wahrscheinlich sollte sein, und selbst in dieser Weise zu 601 00:29:05,040 --> 00:29:07,520 einem Benutzer erlaubt werden kann ändern seinen Benutzernamen. 602 00:29:07,520 --> 00:29:10,810 >> Also lassen Sie uns jetzt gehen diese als primäre Mittel zur Identifizierung des Benutzers. 603 00:29:10,810 --> 00:29:13,510 Dies ist die Datenbank erzählen gehen Sie vor und optimieren sich selbst 604 00:29:13,510 --> 00:29:17,065 so dass Look-Ups auf ID sind super schnell. 605 00:29:17,065 --> 00:29:19,620 AI, Schlechtes benannt, nur bedeutet Auto Increment, 606 00:29:19,620 --> 00:29:21,500 und dies ist der Kontroll Box Wir müssen prüfen, 607 00:29:21,500 --> 00:29:24,614 zu, dass das ID-Feld, um anzugeben automatisch für mich auf dem Laufenden sein, 608 00:29:24,614 --> 00:29:26,530 und dann bin ich zu gehen Bildlauf nach rechts hier 609 00:29:26,530 --> 00:29:29,279 und ehrlich gesagt, ich bin nicht wirklich interessiert in jedem dieser Bereiche mehr. 610 00:29:29,279 --> 00:29:30,630 Sicher nicht heute. 611 00:29:30,630 --> 00:29:33,770 >> Also werde ich hier zurückgehen, in die erste Kolonne, in 612 00:29:33,770 --> 00:29:35,830 Ich muss Benutzernamen angeben und Hash, und lassen Sie uns 613 00:29:35,830 --> 00:29:38,080 mindestens Fokus auf die zweite für jetzt. 614 00:29:38,080 --> 00:29:41,498 Int ist wahrscheinlich nicht die richtige Entscheidung, Also, was macht mehr Sinn vielleicht? 615 00:29:41,498 --> 00:29:42,741 >> PUBLIKUM: Text. 616 00:29:42,741 --> 00:29:43,824 DAVID J. MALAN: Sagen Sie wieder? 617 00:29:43,824 --> 00:29:44,710 PUBLIKUM: Text. 618 00:29:44,710 --> 00:29:44,980 DAVID J. MALAN: Text? 619 00:29:44,980 --> 00:29:45,590 OK, ich hörte Text. 620 00:29:45,590 --> 00:29:46,090 Was sonst? 621 00:29:46,090 --> 00:29:50,520 622 00:29:50,520 --> 00:29:53,860 Wir Art habe eine Reihe von Entscheidungen die textlichen Natur sind. 623 00:29:53,860 --> 00:29:55,990 Also wann und warum, tun Sie einige der diese verwenden? 624 00:29:55,990 --> 00:29:59,560 Nun char, entgegen dem, was Dir evtl. zu denken, ist nicht ein einzelnes Zeichen. 625 00:29:59,560 --> 00:30:01,550 Es ist eine bestimmte Anzahl von Zeichen. 626 00:30:01,550 --> 00:30:04,600 Dass alle Benutzernamen Also, wenn wir wissen, muss wie acht Zeichen lang sein, 627 00:30:04,600 --> 00:30:08,490 wie früher in älteren gemeinsam sein Computersysteme, konnte ich sagen, char 628 00:30:08,490 --> 00:30:09,830 und dann könnte ich 8 sagen. 629 00:30:09,830 --> 00:30:12,930 Das ist, wenn die dritte Spalte wird anwendbar, wenn eine Tabelle erstellen. 630 00:30:12,930 --> 00:30:15,450 >> Aber das ist irgendwie nervig weil einige Leute vielleicht 631 00:30:15,450 --> 00:30:17,660 wollen eine längere Benutzername haben als acht Zeichen, 632 00:30:17,660 --> 00:30:19,743 einige Leute möchten vielleicht haben eine kürzere Benutzername, 633 00:30:19,743 --> 00:30:22,210 also warum mich verpflichten auf eine bestimmte Anzahl? 634 00:30:22,210 --> 00:30:24,710 Warum eine Variable nicht Anzahl der Zeichen und einfach 635 00:30:24,710 --> 00:30:28,580 sagen, dass die maximale Länge eines Namens ist, weiß ich nicht, wie 64 Zeichen. 636 00:30:28,580 --> 00:30:31,780 Ich kann mir keine Freunde denken, die haben Namen länger als 64 Zeichen, 637 00:30:31,780 --> 00:30:34,810 und selbst wenn es das ist zu kurz konnte man sicherlich stoßen sie bis beliebig. 638 00:30:34,810 --> 00:30:37,330 >> So varchar ist eine Variable Anzahl der Zeichen. 639 00:30:37,330 --> 00:30:41,010 Text ist kein schlechter Instinkt und ehrlich gesagt, dass Art tut, was es sagt, 640 00:30:41,010 --> 00:30:45,460 aber ein Textfeld kann wie 65.000 Bytes mindestens. 641 00:30:45,460 --> 00:30:50,790 Das ist wahrscheinlich für ein Overkill Feld, und in der Tat, yup, 65.535. 642 00:30:50,790 --> 00:30:53,740 Das ist wahrscheinlich für ein Overkill nennen, so dass wir halten, in der Regel, 643 00:30:53,740 --> 00:30:56,910 mit VARCHARs für textliche Feld und Hash, auch. 644 00:30:56,910 --> 00:30:59,990 Hash, stellt sich heraus, wir eine machen könnte varchar so gut oder so ähnlich, 645 00:30:59,990 --> 00:31:03,080 aber wir werden heute nicht konzentrieren sich auf die Kryptographie gibt und die Nummern 646 00:31:03,080 --> 00:31:05,210 daß wir eigentlich möchte für seine Länge zu verwenden. 647 00:31:05,210 --> 00:31:07,430 >> Aber lassen Sie mich nach unten scrollen nach rechts. 648 00:31:07,430 --> 00:31:11,280 Sie können nur eine Primär Index für eine Tabelle, 649 00:31:11,280 --> 00:31:16,380 aber ich zu einem von ihnen anwenden möchten, Jetzt, um Benutzernamen, würden Sie sagen? 650 00:31:16,380 --> 00:31:21,980 Was soll Benutzernamen auf einer vagen basieren Verständnis dieser vier Optionen? 651 00:31:21,980 --> 00:31:23,340 Nur durch ihre Namen? 652 00:31:23,340 --> 00:31:24,140 >> PUBLIKUM: Unique. 653 00:31:24,140 --> 00:31:25,100 >> DAVID J. MALAN: So einzigartig, nicht wahr? 654 00:31:25,100 --> 00:31:28,190 So stellt sich heraus, dass nicht nur könnte Ihnen sagen, eine Datenbank, im Voraus, 655 00:31:28,190 --> 00:31:30,380 dies ist der primäre Weg identifizieren Felder. 656 00:31:30,380 --> 00:31:32,990 Sie können auch sagen, das ist werde ein einzigartiges Gebiet. 657 00:31:32,990 --> 00:31:34,700 Es wird nicht zu sein das, was ich verlassen sich auf, 658 00:31:34,700 --> 00:31:38,490 aber ich möchte die Datenbank auf Wesentlichen haben, dass, wenn die Bedingung, so 659 00:31:38,490 --> 00:31:42,340 dass, wenn ich jemals versucht sich zu registrieren zwei Benutzer mit dem gleichen Namen, 660 00:31:42,340 --> 00:31:44,360 die Datenbank mit Vollgas ist nicht zu mir lassen. 661 00:31:44,360 --> 00:31:47,490 Ich könnte einige zusätzliche Code haben in PHP, die so viel verhindert, 662 00:31:47,490 --> 00:31:50,640 aber die Datenbank auch sicherstellen kann, dass diese noch nie passiert. 663 00:31:50,640 --> 00:31:53,370 >> Jetzt, nebenbei, zumal Sie Abschlussarbeiten zu denken, 664 00:31:53,370 --> 00:31:57,030 bedenken sie Index und Voll Text sind eigentlich ganz nützlich. 665 00:31:57,030 --> 00:32:01,080 Wenn Sie eine größere Datenbank, nicht haben Dutzende, aber mit Hunderten oder Tausenden 666 00:32:01,080 --> 00:32:05,270 oder sogar Millionen von Feldern können Sie erzählen Sie auch die Datenbank im Voraus 667 00:32:05,270 --> 00:32:07,980 Dies ist ein Bereich, ich werde auf eine Menge suchen werden. 668 00:32:07,980 --> 00:32:10,520 Möglicherweise sein Benutzername, vielleicht ist es Bio, wenn Sie 669 00:32:10,520 --> 00:32:13,750 macht eine Facebook-ähnliche Website, hat Absätze, die die Benutzer-erlaubt 670 00:32:13,750 --> 00:32:16,799 zu retten, und wenn du willst erzählen die Datenbank im Voraus 671 00:32:16,799 --> 00:32:20,090 Ich werde auf diesem Gebiet gesucht werden eine Menge, aber es ist nicht unbedingt einzigartig, 672 00:32:20,090 --> 00:32:22,800 Sie können angeben, erstellen Sie mir einen Index. 673 00:32:22,800 --> 00:32:27,990 Oder Sie auch sagen kann mir erlauben, zu tun Art von willkürlichen Suche wie Befehls 674 00:32:27,990 --> 00:32:30,420 oder Strg F, wie Sie vielleicht in einer Textverarbeitung, 675 00:32:30,420 --> 00:32:34,184 so konnte man beliebige Zeichenketten suchen oder Teilstrings in diesem Bereich. 676 00:32:34,184 --> 00:32:36,600 Mit anderen Worten, wir bekommen bis zu dem Punkt in dem Semester 677 00:32:36,600 --> 00:32:40,720 wo Sie nicht haben, um über Sorgen wie man die Dinge effizient zu implementieren. 678 00:32:40,720 --> 00:32:44,540 Sie müssen nur wissen, was Design-Entscheidungen zu, so dass Sie machen 679 00:32:44,540 --> 00:32:48,470 mit den richtigen Werkzeugen für die Handel, um Funktionen zu nutzen 680 00:32:48,470 --> 00:32:50,380 dass andere Menschen für Sie gebaut. 681 00:32:50,380 --> 00:32:54,240 So zu rekapitulieren, sollte nur primäre Konto haben, können Sie nur einen, 682 00:32:54,240 --> 00:32:59,630 und es ist das, was Sie zu begehen sind mit der Identifizierung Felder eindeutig. 683 00:32:59,630 --> 00:33:02,710 Einzigartig ist nur im Geist ähnlich, aber Sie könnten nur gelegentlich nutzen, 684 00:33:02,710 --> 00:33:04,530 aber Sie wollen, dass die Datenbank, um es durchzusetzen. 685 00:33:04,530 --> 00:33:08,050 Index bedeutet nur präventiv beschleunigen die Dinge in der Zukunft 686 00:33:08,050 --> 00:33:10,230 so dass ich für die Suche Dinge in diesem Bereich. 687 00:33:10,230 --> 00:33:13,700 Und dann vollständige Text ist in der Regel für Absätze oder Essays, oder große Körper 688 00:33:13,700 --> 00:33:16,270 der Text, in dem Sie Vielleicht wollen Sie auch haben 689 00:33:16,270 --> 00:33:19,420 Wildcards wie das Äquivalent von Stern. 690 00:33:19,420 --> 00:33:19,920 Richtig. 691 00:33:19,920 --> 00:33:22,580 >> So, dass war irgendwie viel auf einmal. 692 00:33:22,580 --> 00:33:25,220 Mal sehen, ob wir nicht destillieren kann ein paar dieser Features 693 00:33:25,220 --> 00:33:29,540 und dann etwas zu bauen ziemlich einfach, aber mächtig. 694 00:33:29,540 --> 00:33:31,380 So unter anderen Design-Entscheidungen sind Sie 695 00:33:31,380 --> 00:33:34,005 letztendlich leisten muss, wird entlang die Linien der Speicher-Engines. 696 00:33:34,005 --> 00:33:37,370 Und lassen Sie mich nur erwähnen diese in Erwartung der endgültigen Projekte, 697 00:33:37,370 --> 00:33:42,020 und Erwartung ließ uns sagen-- kein lasst uns dies tun. 698 00:33:42,020 --> 00:33:43,820 Wir bauen dieses kleine Anwendung zuerst. 699 00:33:43,820 --> 00:33:48,070 Ich werde in meinem Terminal gehen Fenster, und hier ist nicht 700 00:33:48,070 --> 00:33:52,500 nur counter.php, die wir gehen jetzt zu der als nicht mehr Germane loszuwerden, 701 00:33:52,500 --> 00:33:54,570 aber wir haben eine ganze Reihe von Verzeichnissen und das 702 00:33:54,570 --> 00:33:58,080 wird im Geist sehr ähnlich zu sein zu dem, was Sie in Problem zu sehen set sieben. 703 00:33:58,080 --> 00:34:00,980 >> So haben wir drei Verzeichnisse umfasst öffentliche und Vorlagen, die 704 00:34:00,980 --> 00:34:05,040 ist genau, wo wir auf der linken Seite ab Montag mit unserem ganzen MVC-Paradigma. 705 00:34:05,040 --> 00:34:09,290 Und zur Erinnerung, in der Öffentlichkeit gehen wird Jede Datei, die ich möchten, dass Benutzer tatsächlich 706 00:34:09,290 --> 00:34:12,969 v in der Lage sein zu besuchen in ihren Browser über die URL. 707 00:34:12,969 --> 00:34:13,502 Template. 708 00:34:13,502 --> 00:34:14,710 Was haben wir in Templates zu setzen? 709 00:34:14,710 --> 00:34:17,070 Was für Zeug? 710 00:34:17,070 --> 00:34:21,659 Es war nicht viel, aber ein paar Dateien mindestens am Montag. 711 00:34:21,659 --> 00:34:22,619 Ja. 712 00:34:22,619 --> 00:34:23,100 >> PUBLIKUM: Kopf- und Fußzeile? 713 00:34:23,100 --> 00:34:24,516 >> DAVID J. MALAN: Kopf- und Fußzeile. 714 00:34:24,516 --> 00:34:26,679 So haben wir etwas Ähnliches auch heute. 715 00:34:26,679 --> 00:34:30,330 Wir haben ein paar mehr Dateien bekam aber Footer ich sehe, Kopfball Ich sehe, 716 00:34:30,330 --> 00:34:31,909 und dann eine Reihe von anderen Dateien. 717 00:34:31,909 --> 00:34:35,482 Das ist also das Äquivalent der V MVC Ansicht, die, 718 00:34:35,482 --> 00:34:37,690 wieder, wird ein bisschen mehr klar Problem stellte sieben, 719 00:34:37,690 --> 00:34:40,380 aber das ist nur ein Ordner bin ich setzen eine Menge meiner Ästhetik. 720 00:34:40,380 --> 00:34:42,840 Viele meiner HTML, viele meiner Formen. 721 00:34:42,840 --> 00:34:46,899 Inzwischen umfasst, ist eine weitere Verzeichnis, das diese drei Dateien hat 722 00:34:46,899 --> 00:34:48,440 und lassen Sie uns einen kurzen Blick auf diese. 723 00:34:48,440 --> 00:34:51,699 >> Ich werde weitermachen und eröffnen config.php. 724 00:34:51,699 --> 00:34:54,610 Wie sich herausstellt, wesentlich wie früher in der Wahlperiode, 725 00:34:54,610 --> 00:34:57,850 Sie scharfe enthalten CS50 dot h mit pset7. 726 00:34:57,850 --> 00:35:00,780 Im heutigen Beispiel, Sie gehen um das Äquivalent von tun 727 00:35:00,780 --> 00:35:03,600 mit einer Erklärung verlangen dass effektiv 728 00:35:03,600 --> 00:35:05,340 umfasst diese mehrere Zeilen. 729 00:35:05,340 --> 00:35:08,225 So klar zu sein, ist dies eine Datei namens config.php. 730 00:35:08,225 --> 00:35:09,350 Und feststellen, was es tut. 731 00:35:09,350 --> 00:35:11,970 Es ist offenbar, etwas zu tun kryptisch, Drehen auf Fehlermeldungen 732 00:35:11,970 --> 00:35:13,680 so dass Sie sie im Browser zu sehen. 733 00:35:13,680 --> 00:35:15,860 Es ist also offenbar erfordern zwei andere Dateien 734 00:35:15,860 --> 00:35:19,530 so ist dies wie #include in C, und dann diese, die wir sahen, 735 00:35:19,530 --> 00:35:22,720 und wir haben darauf verlassen, schaltet sich dieses auf daß Warenkorb ähnliche Funktionalität. 736 00:35:22,720 --> 00:35:25,610 >> Dies bedeutet ein Cookie hin und her geschickt werden. 737 00:35:25,610 --> 00:35:27,290 Also, warum ist das interessant? 738 00:35:27,290 --> 00:35:32,460 Nun, wenn wir zurückgehen, dies Verzeichnis und öffnen, zum Beispiel, 739 00:35:32,460 --> 00:35:33,741 constance.php. 740 00:35:33,741 --> 00:35:38,840 Beachten Sie, dass PHP tut Unterstützung Konstanten es ist nicht ganz wie #define in C. 741 00:35:38,840 --> 00:35:41,290 Stattdessen können Sie wörtlich sagen definiert und Bekanntmachung 742 00:35:41,290 --> 00:35:44,110 dass ich im Voraus gespeichert vier Konstanten in dieser Datei. 743 00:35:44,110 --> 00:35:47,020 Eine für die heutige Datenbank für mein Passwort für meinen Benutzernamen, 744 00:35:47,020 --> 00:35:48,690 und für den Namen des Servers. 745 00:35:48,690 --> 00:35:51,644 Das sind also tatsächlich sein wird ziemlich ähnlich in Problem stellte sieben. 746 00:35:51,644 --> 00:35:54,560 Und schließlich, und das ist, wo ich bin werde einige nette Funktionalität zu erhalten 747 00:35:54,560 --> 00:35:59,000 von den Mitarbeitern, in functions.php ist ein Bündel von Code, den wir geschrieben haben, 748 00:35:59,000 --> 00:36:01,040 und ich stahlen einige dieser von der Problem set sieben 749 00:36:01,040 --> 00:36:05,920 für heute, macht das ein paar Dinge und lassen Sie uns nur an einem von ihnen sehen 750 00:36:05,920 --> 00:36:07,270 insbesondere. 751 00:36:07,270 --> 00:36:09,720 Diese Funktion hier, Abfrage, wird sein 752 00:36:09,720 --> 00:36:13,600 die PHP-Funktion, die wir rufen um SQL auszuführen. 753 00:36:13,600 --> 00:36:16,070 Vorhin haben wir mit waren phpMyAdmin, aber das ist nur 754 00:36:16,070 --> 00:36:18,720 für Art von Lernzwecken und Diagnosezwecke 755 00:36:18,720 --> 00:36:20,494 und Vergessen Sie Ihre Datenbank-Set. 756 00:36:20,494 --> 00:36:22,660 Wenn Sie tatsächlich nutzen Ihre Datenbank, die Sie, der Mensch, 757 00:36:22,660 --> 00:36:24,100 sind offensichtlich nicht zu werden oben, der eine Web 758 00:36:24,100 --> 00:36:25,740 Seite jedes Mal, wenn jemand registriert. 759 00:36:25,740 --> 00:36:29,870 Du wirst Code schreiben, dass Einfügungen und Löschungen Benutzer on-Demand, 760 00:36:29,870 --> 00:36:32,490 und wir werden, dies zu tun über die Abfragefunktion. 761 00:36:32,490 --> 00:36:35,360 Wenn ich jetzt nach unten scrollen, da ist werde ein paar mehr Features sein. 762 00:36:35,360 --> 00:36:37,170 Redirect zu gehen eine Funktion schrieben wir 763 00:36:37,170 --> 00:36:40,160 für Sie, in dem Sie senden Sie den Benutzer zu einer anderen URL, 764 00:36:40,160 --> 00:36:43,780 und rendern ist eine Funktion, ganz wie sahen wir am Montag, dass tatsächlich macht 765 00:36:43,780 --> 00:36:48,000 eine Vorlage, aber mehr auf diese in der Form pset7 eigenen Spaziergang durch. 766 00:36:48,000 --> 00:36:50,500 Denn jetzt, lasst uns gehen Sie vor und tun dies. 767 00:36:50,500 --> 00:36:54,860 >> Lassen Sie mich in meinen Vorträgen Tisch gehen und sehen, dass es derzeit nichts 768 00:36:54,860 --> 00:36:59,640 hier nur noch, und lassen Sie mich auch gehen in mein öffentliches Verzeichnis, in dem 769 00:36:59,640 --> 00:37:02,780 es gibt nur eine Datei, index.php. 770 00:37:02,780 --> 00:37:06,920 Diese Datei wird super einfach zu sein im Moment sieht es einfach so. 771 00:37:06,920 --> 00:37:09,110 Sehr viel wie, wie wir off am Montag verlassen. 772 00:37:09,110 --> 00:37:11,945 Ich erfordern diese Datei, config.php, die ist 773 00:37:11,945 --> 00:37:15,160 eine enthält Verzeichnis, das ist in Punkt Punkt, meine Eltern, 774 00:37:15,160 --> 00:37:17,650 und dann ist es nur Rendering diese Datei. 775 00:37:17,650 --> 00:37:18,960 Also, was ist diese Datei? 776 00:37:18,960 --> 00:37:24,700 >> Wir öffnen in meinem Vorlagen form.php, und wir werden das sehen. 777 00:37:24,700 --> 00:37:28,500 Super einfach, anscheinend ist diese Form werde durch eine $ _GET oder $ _POST einreichen. 778 00:37:28,500 --> 00:37:29,320 Schnellplausibilitätsprüfung. 779 00:37:29,320 --> 00:37:33,760 780 00:37:33,760 --> 00:37:35,690 Wörtlich visuell suchen Sie die Datei. 781 00:37:35,690 --> 00:37:36,610 Methode Equals Pfosten. 782 00:37:36,610 --> 00:37:39,280 So wird es nicht, um die URL zu verwenden, wie Google tut, es geht um Versteck sortieren 783 00:37:39,280 --> 00:37:41,030 die Informationen hinter die Szenen, und es ist 784 00:37:41,030 --> 00:37:43,580 werde ein einreichen Datei namens register.php, 785 00:37:43,580 --> 00:37:45,660 und das ist die Datei haben wir noch nicht geschrieben 786 00:37:45,660 --> 00:37:47,610 aber was das wird zu schauen, wie das ist. 787 00:37:47,610 --> 00:37:52,670 >> Wenn ich zu einer anderen Seite Dies ist was localhost / index.php aussieht. 788 00:37:52,670 --> 00:37:56,930 Und wieder, der Server ist nur unter der Annahme, index.php. 789 00:37:56,930 --> 00:37:57,910 Enter. 790 00:37:57,910 --> 00:37:59,870 Also das ist, wo wir sind an, und was ich tun möchte, 791 00:37:59,870 --> 00:38:02,450 wird in der Lage sein, Dinge zu geben wie David, und dann 792 00:38:02,450 --> 00:38:08,050 meine Telefonnummer, die sagen werden, 617-555-1212 für jetzt, registrieren 793 00:38:08,050 --> 00:38:09,910 und jetzt register.php wurde nicht gefunden. 794 00:38:09,910 --> 00:38:11,440 Also brauche ich, um diese umzusetzen. 795 00:38:11,440 --> 00:38:13,320 Lassen Sie uns also schnell Peitsche so etwas wie dieses auf. 796 00:38:13,320 --> 00:38:18,640 Lassen Sie mich in meinen öffentlichen Verzeichnis gehen und tun gedit von register.php, 797 00:38:18,640 --> 00:38:22,300 und jetzt werde ich weitermachen und starten PHP-Modus, wie wir am Montag getan hat, 798 00:38:22,300 --> 00:38:25,430 und in der Nähe von PHP-Tag und machen wir ein paar Dinge. 799 00:38:25,430 --> 00:38:28,336 >> So ein, ich weiß, von geschrieben haben, dass die Form, 800 00:38:28,336 --> 00:38:29,960 dass ich für die folgende überprüfen. 801 00:38:29,960 --> 00:38:35,670 Wenn sie leer ist, was auch immer der Benutzer in das Namensfeld eingegeben haben, dann 802 00:38:35,670 --> 00:38:39,860 Ich werde etwas sagen wie entschuldigen fehlende Namen. 803 00:38:39,860 --> 00:38:42,380 Apologize, mittlerweile ist kein in PHP Ding gebaut, 804 00:38:42,380 --> 00:38:45,970 es ist eine Funktion, die wir geschrieben in functions.php für pset7 805 00:38:45,970 --> 00:38:47,940 so dass Sie Zugriff darauf haben. 806 00:38:47,940 --> 00:38:53,830 Else, wenn das andere Feld ist leer, Anzahl, dann bin ich 807 00:38:53,830 --> 00:38:58,370 werde, um die entschuldigen Benutzer und sagen fehlende Zahl. 808 00:38:58,370 --> 00:38:59,320 Speichern Sie diese Datei. 809 00:38:59,320 --> 00:39:02,640 >> Jetzt gehen wir zurück zu meinem Browser zurück zum Forum versuchen Sie es erneut. 810 00:39:02,640 --> 00:39:04,070 Registrieren. 811 00:39:04,070 --> 00:39:05,090 Ok. 812 00:39:05,090 --> 00:39:06,730 Nichts ist passiert, was gut ist. 813 00:39:06,730 --> 00:39:08,120 Habe ich nicht bekommen eine Fehlermeldung. 814 00:39:08,120 --> 00:39:11,651 Aber wenn statt, lassen Sie uns dies erneut laden Seite her und bietet alles. 815 00:39:11,651 --> 00:39:12,150 Verdammt. 816 00:39:12,150 --> 00:39:15,350 817 00:39:15,350 --> 00:39:17,140 Tun Sie das. 818 00:39:17,140 --> 00:39:18,810 Registrieren. 819 00:39:18,810 --> 00:39:20,350 Was habe ich falsch gemacht? 820 00:39:20,350 --> 00:39:24,860 Wenn leer, $ _POST Namen. 821 00:39:24,860 --> 00:39:26,350 Sprich noch mal? 822 00:39:26,350 --> 00:39:27,670 >> Oh, natürlich. 823 00:39:27,670 --> 00:39:30,919 Ich habe das wichtigste Teil, die ist erforderlich ("../ includes / config.php."). 824 00:39:30,919 --> 00:39:34,210 825 00:39:34,210 --> 00:39:36,460 Ich brauche den Zugang zu den haben entschuldigen Funktion, die 826 00:39:36,460 --> 00:39:37,770 Deshalb wurde nichts passiert. 827 00:39:37,770 --> 00:39:39,460 Die Funktion ist nicht wirklich existieren. 828 00:39:39,460 --> 00:39:40,640 Also lassen Sie uns noch einmal versuchen. 829 00:39:40,640 --> 00:39:42,350 Lassen Sie uns die Seite neu laden, klicken Sie auf Registrieren. 830 00:39:42,350 --> 00:39:43,060 Ok. 831 00:39:43,060 --> 00:39:43,770 Da ist es. 832 00:39:43,770 --> 00:39:45,700 Also, der Ausgang sind wir hier sehen, ist das Ergebnis 833 00:39:45,700 --> 00:39:47,685 Aufruf eine entschuldigen Funktion, super einfach, 834 00:39:47,685 --> 00:39:50,060 und er druckt nur aus, was Ich gebe es als Argument. 835 00:39:50,060 --> 00:39:51,370 >> Alles klar, also lassen Sie uns zusammenarbeiten. 836 00:39:51,370 --> 00:39:54,240 Lassen Sie uns zur Verfügung stellen, mein Name wie David, registrieren, 837 00:39:54,240 --> 00:39:56,890 fehlende Zahl OK Lassen Sie uns bereitzustellen, dass auch. 838 00:39:56,890 --> 00:39:58,650 617-555-1212. 839 00:39:58,650 --> 00:39:59,250 Registrieren. 840 00:39:59,250 --> 00:39:59,750 Ok. 841 00:39:59,750 --> 00:40:02,760 Also alles ist gut jetzt, einfach nichts interessante geschieht. 842 00:40:02,760 --> 00:40:06,000 So, jetzt machen etwas mehr lassen interessante passieren wie diese. 843 00:40:06,000 --> 00:40:09,980 Lassen Sie mich in phpMyAdmin zu gehen, und lassen Sie uns tatsächlich eine Tabelle namens Benutzer erstellen, 844 00:40:09,980 --> 00:40:12,330 Ich werde es geben, drei Spalten, und ich werde schnell 845 00:40:12,330 --> 00:40:16,250 erstellen ID, und dann nennen, und dann Nummer, 846 00:40:16,250 --> 00:40:18,832 und das ID-Feld Ich bin werde als int zu verlassen. 847 00:40:18,832 --> 00:40:20,790 Das Namensfeld werde ich als varchar zu verlassen, 848 00:40:20,790 --> 00:40:23,257 und wir sagen, 64, etwas willkürlich. 849 00:40:23,257 --> 00:40:25,090 Die Zahl werde ich zu machen, weißt du was? 850 00:40:25,090 --> 00:40:27,350 Wir gehen in gehen unterstützt US-Nummern hier 851 00:40:27,350 --> 00:40:31,510 also werde ich etwas tun wie char und dann 10 Zeichen 852 00:40:31,510 --> 00:40:34,540 max für eine Vorwahl und dann sieben Ziffern. 853 00:40:34,540 --> 00:40:37,870 Und dann hier, ich bin zu gehen angeben Autoinkrement dieses Feld, 854 00:40:37,870 --> 00:40:40,550 machen dies zu einem Primärschlüssel, und Ich werde vor und nicht gehen 855 00:40:40,550 --> 00:40:42,240 Check eines dieser anderen Boxen. 856 00:40:42,240 --> 00:40:48,030 >> Also, wenn ich nun endlich auf Speichern, und ich gehe zurück zu meinem Benutzer-Tabelle, 857 00:40:48,030 --> 00:40:52,270 das ist, wie es aussieht, wenn ich Jetzt klicken Sie einen neuen Tab-Struktur. 858 00:40:52,270 --> 00:40:54,550 Also das, klar zu sein, ist nur phpMyAdmin Weg 859 00:40:54,550 --> 00:40:58,570 sagen Sie Ihre Datenbanktabelle hat eine ID, einen Namen und eine Zahl 860 00:40:58,570 --> 00:41:02,040 mit diesen besonderen Konfigurationen und wir erledigen den Rest der Felder ignorieren 861 00:41:02,040 --> 00:41:03,140 es für jetzt. 862 00:41:03,140 --> 00:41:04,810 >> So, jetzt was will ich machen? 863 00:41:04,810 --> 00:41:09,060 Wenn ich also jetzt in mein Quellcode, wenn alles gut 864 00:41:09,060 --> 00:41:11,190 Ich möchte die folgende Abfrage auszuführen. 865 00:41:11,190 --> 00:41:14,970 Legen Sie in, und ich kann einfach sagen Benutzer ich nicht streng 866 00:41:14,970 --> 00:41:18,620 müssen diejenigen zurück Zecken, wenn es kein gefährliches Wort wie Nutzer. 867 00:41:18,620 --> 00:41:22,810 Ich werde Namen sagen, Nummer, und dann hier bin ich 868 00:41:22,810 --> 00:41:24,960 nicht zu hart Code geht das Stelle der Werte vor. 869 00:41:24,960 --> 00:41:26,760 Ich werde zwei Fragezeichen setzen. 870 00:41:26,760 --> 00:41:29,320 Und das ist eine Konvention in vielen Sprachen 871 00:41:29,320 --> 00:41:31,730 wobei, wenn man haben will ein Platzhalter für eine Zeichenfolge 872 00:41:31,730 --> 00:41:34,105 Sie gehen, um die Frage zu verwenden sind Marken, aus Gründen wir werden 873 00:41:34,105 --> 00:41:36,370 komm zurück zu plaudern über Sicherheit und hier 874 00:41:36,370 --> 00:41:39,420 Ich werde in denen zukommen lassen zwei Felder zu schreiben Name, 875 00:41:39,420 --> 00:41:44,850 und dann schreiben Nummer, und nun die Datei abspeichern. 876 00:41:44,850 --> 00:41:47,090 >> Und jetzt bin ich zu gehen gehen hier unten ist ein super 877 00:41:47,090 --> 00:41:55,690 einfach sagen rendersuccess.php, die wird wieder eine Vorlage sein. 878 00:41:55,690 --> 00:41:57,380 Ich werde sehr schnell erstellen. 879 00:41:57,380 --> 00:42:06,270 Geditsuccess.php und ich werde einfach sagen H1 Erfolg in dieser Datei. 880 00:42:06,270 --> 00:42:06,990 In Ordnung. 881 00:42:06,990 --> 00:42:11,312 So, jetzt gehen wir zurück zu den Browser, wo ich besuchte vor. 882 00:42:11,312 --> 00:42:14,270 Lassen Sie uns weitermachen und bestätigen schrieb ich in David, schrieb ich in einer Telefonnummer, 883 00:42:14,270 --> 00:42:15,390 registrieren. 884 00:42:15,390 --> 00:42:16,100 Verdammt. 885 00:42:16,100 --> 00:42:17,420 Was habe ich falsch gemacht? 886 00:42:17,420 --> 00:42:20,850 Also ich sehe hier ein Fehler, Sie haben einen Fehler in der SQL-Syntax. 887 00:42:20,850 --> 00:42:24,900 Lassen Sie mich zurück zu gedit springen lassen mich zurück zu register.php, 888 00:42:24,900 --> 00:42:28,830 und was habe ich weglassen, dass Wichtig war das letzte Mal? 889 00:42:28,830 --> 00:42:29,722 Ich brauche das. 890 00:42:29,722 --> 00:42:32,930 Sie wollen, dass andere als aus wissen mit aufgefallen, aber ich brauche das. 891 00:42:32,930 --> 00:42:35,596 >> So, jetzt gehen wir zurück, und dies war hilfreich, um im Browser zu sehen 892 00:42:35,596 --> 00:42:37,680 und deshalb in der config.php wir ausspucken Fehler. 893 00:42:37,680 --> 00:42:41,770 Fahren wir fort und laden, klicken Sie auf Weiter, Erfolg. 894 00:42:41,770 --> 00:42:47,060 So, jetzt lassen Sie mich über zu meinem Datenbank ein und klicken Sie auf Benutzer, 895 00:42:47,060 --> 00:42:51,680 und durchsuchen, und bemerke ich jetzt haben David in meiner Datenbank hier. 896 00:42:51,680 --> 00:42:55,810 Nun technisch diese Website noch nicht auf das öffentliche Internet, 897 00:42:55,810 --> 00:42:57,890 so kann ich nicht haben andere Menschen bei der Umsetzung hier, 898 00:42:57,890 --> 00:43:01,120 aber wenn ich jetzt wollte, für So senden Sie mir eine Textnachricht. 899 00:43:01,120 --> 00:43:03,920 Gehen wir aus dem Fenster lehnen hier und sehen, ob dies tatsächlich funktioniert. 900 00:43:03,920 --> 00:43:07,331 Ich werde weitermachen und löschen Sie diese Zeile 901 00:43:07,331 --> 00:43:09,080 und wir werden diese Unschärfe in dem Video späteren 902 00:43:09,080 --> 00:43:11,900 so haben wir nicht die gesamte Internet texting mich, 903 00:43:11,900 --> 00:43:17,270 und wir werden jetzt gehen bis zu der Browser und wir gehen über zu Vorträgen 904 00:43:17,270 --> 00:43:22,040 und wir werden in den verschiedenen Typ hier Nummer, registrieren, Erfolg. 905 00:43:22,040 --> 00:43:25,550 >> So, jetzt ist meine eigene Nummer vermutlich in die Datenbank, und jetzt der lustige Teil. 906 00:43:25,550 --> 00:43:28,774 Lassen Sie tatsächlich nutzen PHP zu tun etwas programmatisch, 907 00:43:28,774 --> 00:43:30,940 von der Befehls Linie oder von woanders, 908 00:43:30,940 --> 00:43:32,773 und jetzt bin ich nur gehen, um es einfach zu halten 909 00:43:32,773 --> 00:43:36,230 und ich werde in meinem gehen Verzeichnis hier und gehen Sie wie folgt. 910 00:43:36,230 --> 00:43:44,920 Gedit Skript sagen wir, wir werden nennen es Text, #! / user / bin / env PHP, 911 00:43:44,920 --> 00:43:46,700 wie wir sahen, beim letzten Mal. 912 00:43:46,700 --> 00:43:47,950 PHP. 913 00:43:47,950 --> 00:43:55,055 >> Jetzt werde ich zu erfordern umfasst config.php, 914 00:43:55,055 --> 00:43:57,360 auch wenn dies induzieren einen leichten Fehler. 915 00:43:57,360 --> 00:44:03,960 Und jetzt gehe ich voran gehen und sagen, Zeilen, Abfrage, wählen Sie Sterne von den Benutzern, 916 00:44:03,960 --> 00:44:08,149 und jetzt hier werde ich eine Technik zu tun vom letzten Mal für jeweils Zeilen Zeile. 917 00:44:08,149 --> 00:44:09,690 Und ich werde etwas einfach zu tun. 918 00:44:09,690 --> 00:44:19,090 Printf sagen Name ist dies, und diese Nummer, Backslash n. 919 00:44:19,090 --> 00:44:23,320 Und jetzt werde ich weitergeben in Zeile zitieren unquote Name, 920 00:44:23,320 --> 00:44:28,140 und Zeilen Zitat unquote Nummer, und jetzt die voran gehen lassen 921 00:44:28,140 --> 00:44:31,430 und mein Terminalfenster chmod dies a + x zu machen 922 00:44:31,430 --> 00:44:33,970 Dieses Skript namens Textdatei. 923 00:44:33,970 --> 00:44:36,080 Und nun laufen Text. 924 00:44:36,080 --> 00:44:37,590 >> OK, also Fortschritte. 925 00:44:37,590 --> 00:44:39,960 Also habe ich jetzt geschrieben ein Befehlszeilenskript, 926 00:44:39,960 --> 00:44:43,300 in einer Sprache namens PHP, daß, deswegen erforderlich Linie, 927 00:44:43,300 --> 00:44:46,380 hat Zugriff auf alle jene Konfiguration Konstanten, die ich angegeben. 928 00:44:46,380 --> 00:44:48,177 Der Name der Datenbank, und so weiter. 929 00:44:48,177 --> 00:44:50,260 In der Tat, nur klar zu sein dass dies nicht nur ein Glücksfall, 930 00:44:50,260 --> 00:44:54,730 lassen Sie mich gehen Sie vor und registrieren, wirklich schnell, jemand anderes wie Rob 931 00:44:54,730 --> 00:44:58,890 und wird ihm den 555-1212 Nummer. 932 00:44:58,890 --> 00:45:01,557 >> Und jetzt, wenn ich das Skript wieder, bemerken die Macht 933 00:45:01,557 --> 00:45:03,140 von dem, was wir mit der Datenbank zu tun. 934 00:45:03,140 --> 00:45:07,680 Jetzt habe ich sofort gesehen, was der anderen beiden Reihen sind in meiner Datenbank. 935 00:45:07,680 --> 00:45:10,699 So, jetzt versuchen, etwas zu tun lassen sogar schicker Innenseite, 936 00:45:10,699 --> 00:45:12,740 und das ist der Teil, den wir haben vorher nicht getestet, 937 00:45:12,740 --> 00:45:15,910 so ich das letzte Mal tat dies es ging schrecklich schief, 938 00:45:15,910 --> 00:45:17,120 Wir haben Videos in diesem Sinne. 939 00:45:17,120 --> 00:45:18,286 >> Eigentlich, ja, lustig beiseite. 940 00:45:18,286 --> 00:45:20,480 Also das letzte Mal, in eine Vortrag wie vor zwei Jahren, 941 00:45:20,480 --> 00:45:23,230 haben wir uns entschlossen, habe ich beschlossen, zu sein all dies wäre eine gute Idee 942 00:45:23,230 --> 00:45:28,150 dynamisch E-Mails in generieren Klasse, mit der gesamten Datenbank CS50 943 00:45:28,150 --> 00:45:33,390 Studenten, die uns ihre Zahlen gegeben hatte und ihre Mobiltelefonträger, die Sie 944 00:45:33,390 --> 00:45:36,290 vielleicht aus pset0 erinnern, wie die Vernunft, es stellt sich heraus 945 00:45:36,290 --> 00:45:40,650 Ich hatte einen kleinen Fehler in meinem Programm und haben ein paar Fehler im Jahr 2012, glaube ich. 946 00:45:40,650 --> 00:45:43,997 >> Wobei, das ich für Schleife hatte, tat genau diese Art der Sache, 947 00:45:43,997 --> 00:45:46,580 Iteration über die Datenbank, immer einen Namen aus der Datenbank, 948 00:45:46,580 --> 00:45:49,940 Namen von der Datenbank, und auf jedem Iteration dieser Schleife Ich schickte eine E-Mail. 949 00:45:49,940 --> 00:45:54,130 Aber anstatt das Senden einer E-Mail, ich schickte eine E-Mail die erste Iteration, 950 00:45:54,130 --> 00:45:58,200 und zwei E-Mails pro zweiten Iteration geschickt drei E-Mails eine zweite Iteration, die 951 00:45:58,200 --> 00:46:01,230 wie Sie vielleicht aus erinnern an unsere Diskussion der asymptotischen Notation 952 00:46:01,230 --> 00:46:06,400 diese große O schlecht, wie n quadriert ist, wie viele Nachrichten, die ich geschickt, 953 00:46:06,400 --> 00:46:08,560 aber es war noch nicht einmal E-Mails es SMS-Nachrichten. 954 00:46:08,560 --> 00:46:12,070 >> Und wie Sie wissen, ist die Teilnahme nicht Super-High gegen Ende des Semesters 955 00:46:12,070 --> 00:46:15,360 und so dachte ich, es wäre nett an die Zeit zu sagen: "Warum bist du nicht Klasse?" 956 00:46:15,360 --> 00:46:17,880 In der Textnachricht I der ganzen Klasse geschickt, 957 00:46:17,880 --> 00:46:22,140 und es war lustig zu 50% der gleichartigen Klasse, aber die anderen 50%, von denen einige 958 00:46:22,140 --> 00:46:26,102 ausgeflippt, schickte ich unglaublich apologetischen süßen Noten 959 00:46:26,102 --> 00:46:28,560 um das Personal entschuldigte sich für Absolvierung der Lehrveranstaltung verpasst nur 960 00:46:28,560 --> 00:46:29,530 dieses eine Mal, nicht wahr? 961 00:46:29,530 --> 00:46:32,790 962 00:46:32,790 --> 00:46:34,030 >> Also das wäre furchtbar schief. 963 00:46:34,030 --> 00:46:37,030 Also in diesem Sinne, lassen Sie uns versuchen, diese wieder, aber nur mit meiner Nummer. 964 00:46:37,030 --> 00:46:41,940 Im Voraus, in functions.php, Ich habe diese Funktion hier geschrieben. 965 00:46:41,940 --> 00:46:44,250 Es ist Text genannt, und es nimmt in drei Argumente. 966 00:46:44,250 --> 00:46:46,360 Eine Zahl, ein Träger und eine Nachricht. 967 00:46:46,360 --> 00:46:50,390 >> Ich bin mit einem Switch-Anweisung, die wunderbar PHP nehmen Saiten, nicht nur 968 00:46:50,390 --> 00:46:53,350 Zahlen, und ich wusste nicht umsetzen all die Unterstützung für diese noch 969 00:46:53,350 --> 00:46:55,370 Ich habe gerade getan haben AT & T und Verizon. 970 00:46:55,370 --> 00:46:57,610 Denn es stellt sich heraus, daß mit diesen Trägern 971 00:46:57,610 --> 00:47:00,570 sie haben per E-Mail, SMS-Gateways, wobei man tatsächlich 972 00:47:00,570 --> 00:47:05,529 senden Sie eine E-Mail an eine Adresse wie Telefonnummer vtext.com 973 00:47:05,529 --> 00:47:08,070 und wenn der Benutzer nicht blockiert hat die Nachrichten, es wird durchgehen 974 00:47:08,070 --> 00:47:09,340 ist eine Textnachricht. 975 00:47:09,340 --> 00:47:13,270 >> Nun, dies zu tun, werde ich muss hinzufügen ein Feld wirklich schnell zu meiner Datenbank. 976 00:47:13,270 --> 00:47:15,470 Ich werde in zu gehen meine Struktur, und ich bin 977 00:47:15,470 --> 00:47:21,880 werde weitermachen und fügen ein Feld am Ende der Tabelle. 978 00:47:21,880 --> 00:47:25,227 Lassen Sie uns auf Go, und ich bin werde diesen Träger nennen 979 00:47:25,227 --> 00:47:27,310 und jetzt bin ich zu gehen lassen dies als bar Text, 980 00:47:27,310 --> 00:47:29,320 aber wir Züchter in der Zukunft sein. 981 00:47:29,320 --> 00:47:31,961 Ich werde schnell gehen in meinem Tisch, und ich bin 982 00:47:31,961 --> 00:47:34,210 werde von Rob loszuwerden, denn das ist ein Fake-Nummer, 983 00:47:34,210 --> 00:47:38,540 Ich werde in den Bearbeitungs hier gehen, und ich bin werde meine Träger manuell ändern 984 00:47:38,540 --> 00:47:43,410 Verizon, die sie zusammen ist, und jetzt hier. 985 00:47:43,410 --> 00:47:44,980 >> Lass uns einen schnellen Plausibilitätsprüfung. 986 00:47:44,980 --> 00:47:52,730 Wir öffnen unsere Text-Skript, das sieht so aus, ist% s Träger. 987 00:47:52,730 --> 00:47:58,230 Wir tun viel mehr Fehler Überprüfung als ich im Jahr 2012, Träger. 988 00:47:58,230 --> 00:48:01,160 Und jetzt, ich werde gehen vor und starten Sie das Skript. 989 00:48:01,160 --> 00:48:01,660 Ok. 990 00:48:01,660 --> 00:48:06,100 Carrier ist Verizon, was bedeutet, nun hoffentlich ich dies tun können. 991 00:48:06,100 --> 00:48:08,360 Richtig in diesem Jahr, hoffentlich, hier gehen wir. 992 00:48:08,360 --> 00:48:12,200 >> So Innere dieser for-Schleife, ich bin werde nicht nur haben diese printf, 993 00:48:12,200 --> 00:48:15,990 Ich bin auch zu Text anrufen und die Verwendung dieser Funktion Rückruf 994 00:48:15,990 --> 00:48:19,670 war es eine Zahl, ein Träger und eine Nachricht. 995 00:48:19,670 --> 00:48:23,310 Also mal sehen, ist Nummer werde sein Zeile Zitat unquote "Zahl" 996 00:48:23,310 --> 00:48:31,660 Zeile Zitat unquote "Träger" und die letzte war Nachricht. 997 00:48:31,660 --> 00:48:36,250 Schrauben Sie nicht in diesem Jahr, Semikolon. 998 00:48:36,250 --> 00:48:36,780 >> Ok. 999 00:48:36,780 --> 00:48:38,280 Daumen drücken. 1000 00:48:38,280 --> 00:48:39,970 Mal sehen, ob das funktioniert. 1001 00:48:39,970 --> 00:48:41,720 Alles klar, so. 1002 00:48:41,720 --> 00:48:43,000 Auf geht's. 1003 00:48:43,000 --> 00:48:47,380 Lassen Entsperren des Telefons, Daumen drücken, verdammt noch mal. 1004 00:48:47,380 --> 00:48:50,300 Undefined variable may-- oh warten, warten, warten, wirklich schnell. 1005 00:48:50,300 --> 00:48:51,340 Ganz schnell, wirklich schnell. 1006 00:48:51,340 --> 00:48:53,380 Dies ist auf jeden Fall wert. 1007 00:48:53,380 --> 00:48:57,710 Lassen Sie mich zu packen, lassen Sie mich zu packen, uh-oh. 1008 00:48:57,710 --> 00:48:59,965 Danke, die Texte haben von jemand anderem begonnen. 1009 00:48:59,965 --> 00:49:04,770 1010 00:49:04,770 --> 00:49:11,650 Lassen Sie mich gehen Sie vor und eröffnen Echt schnell, dropbox.php / mail hier. 1011 00:49:11,650 --> 00:49:12,660 Standby. 1012 00:49:12,660 --> 00:49:14,455 Jeden Cent wert. 1013 00:49:14,455 --> 00:49:17,430 Downloads. 1014 00:49:17,430 --> 00:49:18,560 OK, Quelle src8m. 1015 00:49:18,560 --> 00:49:19,700 Ok. 1016 00:49:19,700 --> 00:49:21,380 >> Brauchen Sie eine weitere Zeile hier. 1017 00:49:21,380 --> 00:49:24,530 Oh da ist es, es ist in Frosh IMs, ist es im Register auf drei. 1018 00:49:24,530 --> 00:49:28,820 Oh hallo, Margo, ich danke Ihnen sehr. 1019 00:49:28,820 --> 00:49:31,130 OK, und ich war diese Zeile fehlt hier. 1020 00:49:31,130 --> 00:49:33,010 Also lassen Sie mich schnell greifen Diese Codezeile, 1021 00:49:33,010 --> 00:49:36,200 dem die Mail oder Bibliothek enthält dass ich tatsächlich verwenden möchten, 1022 00:49:36,200 --> 00:49:38,300 Ich bin schnell werde gehen Sie zurück in Funktionen, 1023 00:49:38,300 --> 00:49:42,337 Ich werde an die Spitze diese gehen Datei und benötigen diese Datei als gut, 1024 00:49:42,337 --> 00:49:45,420 und jetzt werde ich wirklich kreuze meine Finger, wenn ich wieder nach dem Befehl 1025 00:49:45,420 --> 00:49:49,530 Zeilenskript, das Innere ist heutigen lokalen Host-Verzeichnis. 1026 00:49:49,530 --> 00:49:50,610 Führen Sie Text. 1027 00:49:50,610 --> 00:49:52,720 Enter. 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 Auf geht's. 1035 00:50:03,870 --> 00:50:06,880 >> Mail bekommt neue PHP-Mailer. 1036 00:50:06,880 --> 00:50:09,970 Habe ich das richtig? 1037 00:50:09,970 --> 00:50:11,067 Verdammt. 1038 00:50:11,067 --> 00:50:12,150 Zu-- oh, warten, warten, warten. 1039 00:50:12,150 --> 00:50:12,649 Stehen zu. 1040 00:50:12,649 --> 00:50:15,820 1041 00:50:15,820 --> 00:50:18,630 Ich verspreche, das ist geht es wert zu sein. 1042 00:50:18,630 --> 00:50:20,340 Adresse. 1043 00:50:20,340 --> 00:50:24,390 Das ist, warum ich nicht machen das Beispiele rechts vor der Klasse. 1044 00:50:24,390 --> 00:50:26,350 Ugh. 1045 00:50:26,350 --> 00:50:27,910 Die folgenden Empfänger fehlgeschlagen. 1046 00:50:27,910 --> 00:50:31,500 1047 00:50:31,500 --> 00:50:33,040 Versuchen wir eine letzte Sache. 1048 00:50:33,040 --> 00:50:40,660 SMTP aus, fügen Adresse eingestellt, die Adresse ist in der Tat, dass. 1049 00:50:40,660 --> 00:50:43,980 Versuchen wir diesen letzten Teil der Adresse. 1050 00:50:43,980 --> 00:50:47,210 Aw, ich bin jetzt wirklich traurig. 1051 00:50:47,210 --> 00:50:47,854 Danke. 1052 00:50:47,854 --> 00:50:50,270 Aber ich schätze alle die Texte die dich senden. 1053 00:50:50,270 --> 00:50:53,130 1054 00:50:53,130 --> 00:50:56,320 Du hast dieses David bekam. 1055 00:50:56,320 --> 00:50:59,310 Du bläst es. 1056 00:50:59,310 --> 00:51:01,720 Lassen wir es dort und Wir werden am Montag zu beheben. 1057 00:51:01,720 --> 00:51:04,290 Wir sehen uns dann. 1058 00:51:04,290 --> 00:51:08,090 >> DAVEN FARNHAM: Und jetzt Tief Thoughts Daven Farnham. 1059 00:51:08,090 --> 00:51:11,340 1060 00:51:11,340 --> 00:51:17,590 Wenn ein binärer Baum fällt in einem Wald und niemand da ist, um C es-- [kichert]. 1061 00:51:17,590 --> 00:51:18,998