1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Woche 8, Fortsetzung] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Dies ist CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Dies ist CS50, so ist dies das Ende der Woche 8 hier. 5 00:00:13,000 --> 00:00:16,000 Wir hatten natürlich ein bisschen von einem Hurrikan zu Beginn dieser Woche, 6 00:00:16,000 --> 00:00:19,000 so jetzt ist es wirklich nur du und ich in diesem Hörsaal, 7 00:00:19,000 --> 00:00:22,000 aber heute sind wir weiterhin unser Gespräch über PHP 8 00:00:22,000 --> 00:00:25,000 und über Web-Programmierung allgemein, und stellen wir auch die Idee 9 00:00:25,000 --> 00:00:29,000 von Datenbanken, genannt allem ein MySQL, die sehr beliebt ist in diesen Tagen, 10 00:00:29,000 --> 00:00:34,000 zum großen Teil aufgrund seiner Skalierbarkeit sowie wegen ihrer frei und Open Source. 11 00:00:34,000 --> 00:00:37,000 >> Doch zunächst ein Blick auf, wo wir aufgehört letzten Zeit. 12 00:00:37,000 --> 00:00:40,000 Daran erinnern, dass wir an den verschiedenen Frosh IMs Beispielen suchen, 13 00:00:40,000 --> 00:00:44,000 und dies war die abscheuliche Form, dass ich kam mit ein paar 15 + Jahren 14 00:00:44,000 --> 00:00:49,000 um die Studierenden auf dem Campus Register für Erstsemester intramuralen Sport 15 00:00:49,000 --> 00:00:52,000 ohne tatsächlich zu wandern mehr über den Hof zu Wigglesworth 16 00:00:52,000 --> 00:00:56,000 eine physische Stück Papier unter irgendeines proctor Tür schieben. 17 00:00:56,000 --> 00:00:59,000 Stattdessen zogen wir alles online, sondern zu tun, dass wir Gebrauch machen brauchte 18 00:00:59,000 --> 00:01:03,000 von wenigen Technologien, so ein, brauchten wir HTML, Hypertext Markup Language, 19 00:01:03,000 --> 00:01:07,000 die wiederum ist diese Markup-Sprache, mit der Sie Web-Seiten strukturell. 20 00:01:07,000 --> 00:01:10,000 >> Mit ein wenig CSS in diesen Tagen, Cascading Style Sheets 21 00:01:10,000 --> 00:01:16,000 wobei wir verwenden, Stilisierungen der Web-Seite mit einem etwas andere Syntax, 22 00:01:16,000 --> 00:01:19,000 während die HTML war alles über die Struktur davon. 23 00:01:19,000 --> 00:01:21,000 Wir brauchen auch eine Web-Programmiersprache einzuführen. 24 00:01:21,000 --> 00:01:25,000 In diesem Fall verwenden wir PHP und PHP wird es uns ermöglichen 25 00:01:25,000 --> 00:01:28,000 dynamisch Ausgabe von Inhalten so gut wie programmatische Dinge wie 26 00:01:28,000 --> 00:01:33,000 E-Mails, wie es der Fall auf dem Zettel verließen wir letzte Woche. 27 00:01:33,000 --> 00:01:35,000 >> Daran erinnern, dass der Code für diese in 2 Teile war. 28 00:01:35,000 --> 00:01:38,000 Eines hatten wir froshims3.php, 29 00:01:38,000 --> 00:01:42,000 und dies war weitgehend Markup mit einem HTML-Formular innerhalb der IT, 30 00:01:42,000 --> 00:01:45,000 ein winziges bisschen CSS hier oben in den Stilattribute 31 00:01:45,000 --> 00:01:48,000 so dass die Form selbst würde auf der Seite, sondern darüber hinaus zentriert werden 32 00:01:48,000 --> 00:01:51,000 hatten wir einige repräsentative Form Eingänge, ein Textfeld, ein Kontrollkästchen, 33 00:01:51,000 --> 00:01:55,000 einige Radio-Buttons, ein Select-Menü und ein Submit-Button. 34 00:01:55,000 --> 00:02:01,000 Und über dieses Formular eingereicht haben wir in einer Datei, die anscheinend hieß register3.php, 35 00:02:01,000 --> 00:02:04,000 die selbst sah ein wenig so etwas wie dieses. 36 00:02:04,000 --> 00:02:08,000 Nun war der Großteil des Codes in register3.php, Rückruf, alles über E-Mail. 37 00:02:08,000 --> 00:02:11,000 Es dauerte ein wenig Validierung der Form, eingereicht, um sicherzustellen, wurde 38 00:02:11,000 --> 00:02:14,000 dass die Felder tatsächlich bereitgestellt, erwartet wurden. 39 00:02:14,000 --> 00:02:18,000 Dann riefen wir einige PHP-Funktionen mit leicht neue Syntax, 40 00:02:18,000 --> 00:02:20,000 obwohl es von C. ausgeliehen 41 00:02:20,000 --> 00:02:24,000 >> Dieser Pfeil-Operator ermöglicht uns den Einsatz von so genannten objektorientierten Programmierung zu machen. 42 00:02:24,000 --> 00:02:27,000 Wir werden nicht darauf eingehen in jedem Detail hier, aber ich weiß jetzt 43 00:02:27,000 --> 00:02:31,000 es ist ein Weg, mit Funktionen mit Objekten zugeordnet, 44 00:02:31,000 --> 00:02:34,000 die sind eine spezielle Art von Struktur, wie wir in C. sah 45 00:02:34,000 --> 00:02:37,000 Aber jetzt, nur auf den Glauben zu nehmen, dass dies die richtige Syntax zu verwenden ist 46 00:02:37,000 --> 00:02:41,000 bei Verwendung einer Bibliothek wie dieser PHPMailer Bibliothek. 47 00:02:41,000 --> 00:02:44,000 Und dann am Ende dieser Datei hatten wir dynamisch eine E-Mail generiert 48 00:02:44,000 --> 00:02:47,000 Das hat meine jharvard@cs50.net Konto gesendet 49 00:02:47,000 --> 00:02:50,000 von meinem jharvard@cs50.net Konto 50 00:02:50,000 --> 00:02:54,000 und wir informieren den Benutzer entsprechend, dass sie für diesen Sport registriert worden sei. 51 00:02:54,000 --> 00:02:57,000 Das ist ziemlich viel, was die Frosh IMs Website all den Jahren getan 52 00:02:57,000 --> 00:03:00,000 wenn ich es umgesetzt werden, gewährt, in einer anderen Sprache, 53 00:03:00,000 --> 00:03:02,000 aber es zeigt Ihnen vielleicht die Macht, die Sie haben 54 00:03:02,000 --> 00:03:05,000 Jetzt, dass man sich nicht nur programmatisch zum Ausdruck 55 00:03:05,000 --> 00:03:08,000 auf einem niedrigen Niveau in einer Sprache wie C, aber auf einem viel höheren Niveau 56 00:03:08,000 --> 00:03:11,000 mit diesen sehr realen Anwendungen wie E-Mail, um tatsächlich zu lösen 57 00:03:11,000 --> 00:03:13,000 einige Probleme der realen Welt. 58 00:03:13,000 --> 00:03:16,000 >> Nun, natürlich, auch wenn ich dieses Skript einige erzeugen 59 00:03:16,000 --> 00:03:20,000 E-Mails dynamisch aus jharvard@cs50.net, die in der Tat ist ein Konto 60 00:03:20,000 --> 00:03:23,000 dass ich Zugang zu haben, können Sie ganz vorsichtig zu senden 61 00:03:23,000 --> 00:03:26,000 Mail nur von Konten, die eigentlich eine eigene, 62 00:03:26,000 --> 00:03:30,000 damit Dinge bekommt man ein bisschen heißes Wasser im Leben. 63 00:03:30,000 --> 00:03:35,000 Mit dieser sagte, lasst uns jetzt Übergang zur Lösung eines anderen Problems überhaupt, 64 00:03:35,000 --> 00:03:37,000 dass die Beibehaltung Staaten. 65 00:03:37,000 --> 00:03:39,000 Nun, was bedeutet das eigentlich? 66 00:03:39,000 --> 00:03:42,000 HTTP, das Hypertext Transfer Protocol, 67 00:03:42,000 --> 00:03:45,000 ist eigentlich ein stateless Protokoll, und was dies bedeutet, dass 68 00:03:45,000 --> 00:03:48,000 wenn Sie ziehen so etwas wie Google.com und dann drücken Sie die Eingabetaste 69 00:03:48,000 --> 00:03:51,000 Regel muss Ihr Browser eine Art von drehendes Symbol, dass dann 70 00:03:51,000 --> 00:03:54,000 Ergebnisse in einigen Web-Seite heruntergeladen, 71 00:03:54,000 --> 00:03:57,000 und dann das kleine Symbol nicht mehr Spinnen, und das ist in der Tat schlägt 72 00:03:57,000 --> 00:04:02,000 dass HTTP hat irgendeine Art von Verbindung zu dem Server abgeschlossen und das ist es. 73 00:04:02,000 --> 00:04:05,000 HTTP ist in dem Sinne, dass sie nicht aufrechtzuerhalten zustandslose 74 00:04:05,000 --> 00:04:08,000 eine persistente Verbindung zum Server in der gleichen Weise Skype funktioniert 75 00:04:08,000 --> 00:04:11,000 oder Gchat tut, weil mit HTTP 76 00:04:11,000 --> 00:04:15,000 Die Annahme ist, dass wenn man einmal holte eine Web-Seite, die ist es. 77 00:04:15,000 --> 00:04:18,000 >> Nun, in Wirklichkeit in diesen Tagen auf Websites wie Facebook und Google Maps 78 00:04:18,000 --> 00:04:21,000 und Twitter und dergleichen gibt es eine Menge mehr Dynamik, wobei 79 00:04:21,000 --> 00:04:25,000 auch nach, dass das Symbol nicht mehr dreht man kann in der Tat zu mehr Updates 80 00:04:25,000 --> 00:04:29,000 vom Server, mehr Tweets, mehr Status-Updates auf Facebook und dergleichen. 81 00:04:29,000 --> 00:04:33,000 Aber auch das ist mit einer Technik, dass wir reden in ein oder zwei Wochen 82 00:04:33,000 --> 00:04:36,000 bekannt als Ajax mit einer Sprache namens JavaScript, 83 00:04:36,000 --> 00:04:38,000 aber am Ende des Tages, ist HTTP noch staatenlos. 84 00:04:38,000 --> 00:04:42,000 Und doch, wenn Sie wollen, um irgendwie an Dinge erinnern, über einen Benutzer 85 00:04:42,000 --> 00:04:44,000 auch nachdem sie von Ihrem Server getrennt 86 00:04:44,000 --> 00:04:47,000 PHP macht leisten Sie ein Mittel, dies zu tun 87 00:04:47,000 --> 00:04:52,000 weil, wie wir das letzte Mal sah, hat PHP eine Reihe von superglobals 88 00:04:52,000 --> 00:04:55,000 und ein superglobal ist wieder eine besondere globale Variable 89 00:04:55,000 --> 00:04:59,000 Das ist Ihnen durch den Web-Server und PHP selbst übergeben. 90 00:04:59,000 --> 00:05:02,000 >> Sie müssen nicht alles tun, um Werte in sie setzen, 91 00:05:02,000 --> 00:05:05,000 und unter den superglobals wir bisher gesehen haben, sind zu erhalten und zu veröffentlichen, 92 00:05:05,000 --> 00:05:08,000 das ist, wo Formulare automatisch für Sie zusammengestellt werden, 93 00:05:08,000 --> 00:05:11,000 sowie ein paar andere, die wir noch nicht gesehen haben. 94 00:05:11,000 --> 00:05:17,000 Innerhalb von $ _SERVER gibt einige spezielle Variablen in Bezug auf den Server selbst. 95 00:05:17,000 --> 00:05:22,000 Was ist die IP-Adresse, welches Protokoll, HTTP oder HTTPS verwenden Sie wollte, 96 00:05:22,000 --> 00:05:25,000 was Request-Methode hast du benutzt und dergleichen, so gibt es einige interessante, 97 00:05:25,000 --> 00:05:29,000 pikanten Details über den Server, und in der Tat, die der Benutzer in dort. 98 00:05:29,000 --> 00:05:33,000 Es gibt $ _COOKIE, die, wo diese Dinge genannt Cookies gespeichert ist. 99 00:05:33,000 --> 00:05:36,000 Wir werden keine Zeit auf Cookies sich heute, 100 00:05:36,000 --> 00:05:40,000 aber jetzt wissen, dass ein Cookie ist nur ein kleines Stück von Informationen 101 00:05:40,000 --> 00:05:43,000 dass ein Web-Server kann auf einem Web-Browser pflanzen 102 00:05:43,000 --> 00:05:46,000 und im Gegenzug ihre RAM oder ihre Computer-Festplatte 103 00:05:46,000 --> 00:05:49,000 zum Speichern von Informationen über einen Benutzer zum Beispiel seinen Benutzernamen 104 00:05:49,000 --> 00:05:52,000 so daß sie nicht über ihn geben, jedesmal wenn sie sich oder einige 105 00:05:52,000 --> 00:05:55,000 eindeutige Nummer oder Kennung für diesen Benutzer 106 00:05:55,000 --> 00:05:58,000 so dass Sie nicht haben, um sie mit den gleichen Arten von Fragen über nerve 107 00:05:58,000 --> 00:06:00,000 Einstellungen in der Zukunft, aber die meisten von Interesse 108 00:06:00,000 --> 00:06:02,000 jetzt ist $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Diese superglobal, die wie die anderen, Ihnen übergeben wird automatisch von PHP 110 00:06:07,000 --> 00:06:10,000 wenn du schreibst PHP-basierte Websites 111 00:06:10,000 --> 00:06:13,000 können, was Sie wollen, Strings, Integer zu speichern, 112 00:06:13,000 --> 00:06:16,000 Floating-Point, Werte, Arrays, Objekte, 113 00:06:16,000 --> 00:06:20,000 wirklich alles, was Sie wollen, und es erlaubt Ihnen, es in einer solchen Weise zu speichern 114 00:06:20,000 --> 00:06:23,000 dass, selbst wenn der Benutzer besucht Sie jetzt und dann 115 00:06:23,000 --> 00:06:26,000 kommt wieder eine Minute ab sofort oder 5 Minuten ab jetzt, weil 116 00:06:26,000 --> 00:06:28,000 sie nehmen sich Zeit, bevor Sie auf einen anderen Link 117 00:06:28,000 --> 00:06:32,000 PHP wird dafür sorgen, dass das, was Sie in dieser Sitzung superglobal gestellt 118 00:06:32,000 --> 00:06:37,000 Eine Minute oder 5 Minuten wird noch da sein, wenn der Benutzer zurück. 119 00:06:37,000 --> 00:06:40,000 Und unter der Haube diese superglobale wird anhand der implementierten 120 00:06:40,000 --> 00:06:44,000 diese Dinge Cookies genannt, aber jetzt ist es nur eine Abstraktion 121 00:06:44,000 --> 00:06:47,000 wobei es ist eine Art der programmatischen Äquivalent eines Warenkorb. 122 00:06:47,000 --> 00:06:50,000 Was auch immer Sie, der Programmierer, setzen, dass 123 00:06:50,000 --> 00:06:53,000 superglobal assoziatives Array wird es eine gewisse Anzahl von Minuten später 124 00:06:53,000 --> 00:06:59,000 bis Sie sie löschen oder bis der Benutzer das Programm seinem Browser überhaupt. 125 00:06:59,000 --> 00:07:02,000 >> Werfen wir einen Blick auf ein Beispiel dafür, wie dieses Ding tatsächlich verwendet wird. 126 00:07:02,000 --> 00:07:07,000 In counter.php unter den heutigen Teile des Codes 127 00:07:07,000 --> 00:07:09,000 haben wir die folgende Zeile. 128 00:07:09,000 --> 00:07:13,000 Zu Beginn dieser Datei haben wir einen Haufen von blauen Kommentare, die jetzt uninteressant sind. 129 00:07:13,000 --> 00:07:15,000 Aber in Zeile 13 haben wir eine neue Linie, 130 00:07:15,000 --> 00:07:18,000 session_start, und das tatsächlich tut genau das, was es sagt. 131 00:07:18,000 --> 00:07:20,000 Es beginnt Sitzungen. 132 00:07:20,000 --> 00:07:25,000 Es ermöglicht Ihnen, dass große superglobal $ _SESSION verwenden, und es ist so einfach. 133 00:07:25,000 --> 00:07:30,000 Nun, wenn wir in Zeile 16 zu sehen gehen, wollen wir versuchen, herauszufinden, was diese Web-Seite tun. 134 00:07:30,000 --> 00:07:35,000 If (isset ($ _SESSION ["counter"]), dann gehen Sie vor 135 00:07:35,000 --> 00:07:39,000 und speichern Sie in der Zählvariable, Kleinbuchstaben Zähler, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Counter"]. 137 00:07:42,000 --> 00:07:45,000 Dies scheint zu sein, erklärte eine lokale Variable namens counter 138 00:07:45,000 --> 00:07:48,000 innerhalb dessen es Putting eine Kopie, was sich innerhalb des superglobale 139 00:07:48,000 --> 00:07:52,000 genannte Session am Standort "counter." 140 00:07:52,000 --> 00:07:56,000 Else, offenbar, diese kleine lokale Variable Zähler wird auf 0 initialisiert. 141 00:07:56,000 --> 00:08:01,000 >> Aber dann ein paar Zeilen später in 26 feststellen, dass die Sitzung Kopie Zähler, 142 00:08:01,000 --> 00:08:06,000 seine wichtigsten, hat ein neuer Wert zugewiesen, die den aktuellen Wert plus 1 ist. 143 00:08:06,000 --> 00:08:09,000 Kurz gesagt, scheint diese Datei zu aktualisieren 144 00:08:09,000 --> 00:08:13,000 ein Zähler, der im Inneren ist der Session superglobal gespeichert 145 00:08:13,000 --> 00:08:16,000 durch Inkrementieren um 1, sondern es zuerst behält eine Kopie des vorherigen Wertes 146 00:08:16,000 --> 00:08:20,000 indem sie in eine lokale Variable namens $ Zähler, 147 00:08:20,000 --> 00:08:22,000 und dann hier unten mal sehen, was bleibt. 148 00:08:22,000 --> 00:08:24,000 Es stellt sich heraus, es ist ziemlich einfach HTML. 149 00:08:24,000 --> 00:08:29,000 Am unteren Ende dieser Seite sehen wir in Zeile 37, dass ich diese Seite besucht 150 00:08:29,000 --> 00:08:33,000 Zähler Anzahl von Zeiten, so gibt es ein paar interessante Features hier. 151 00:08:33,000 --> 00:08:36,000 One, ist dies eindeutig eine Variable, aber es genügt nicht, nur setzen 152 00:08:36,000 --> 00:08:39,000 $ Counter in den Körper Ihres HTML denn natürlich 153 00:08:39,000 --> 00:08:43,000 wenn es nur gibt es unter Ihren HTML PHP gehe davon aus, dass das nur HTML. 154 00:08:43,000 --> 00:08:48,000 Sie buchstäblich wollen € Zähler auf dem Bildschirm ausgegeben werden. 155 00:08:48,000 --> 00:08:51,000 >> Aber anstatt durch Fallenlassen in PHP-Modus 156 00:08:51,000 --> 00:08:55,000 mit diesem Stück Syntax können wir dynamisch einzufügen hier einen Wert 157 00:08:55,000 --> 00:08:58,000 sehr ähnlich im Geiste, was wir taten letzten Mal mit 158 00:08:58,000 --> 00:09:00,000 Einfügen von Werten in Strings. 159 00:09:00,000 --> 00:09:04,000 In der Tat, dies ist nur eine Kurzschreibweise für etwas sagen wie dies wörtlich, 160 00:09:04,000 --> 00:09:12,000 print ($ counter) oder sogar so etwas wie printf (% s, Zähler), 161 00:09:12,000 --> 00:09:14,000 oder sogar, wie Sie vielleicht gesehen, online oder in den Lehrbüchern haben, 162 00:09:14,000 --> 00:09:17,000 es gibt eine Funktion in PHP als Echo 163 00:09:17,000 --> 00:09:20,000 was macht das Gleiche, und alle von ihnen sind nur mehr umständlich Möglichkeiten 164 00:09:20,000 --> 00:09:25,000 zu sagen 00:09:28,000 In diesem einen Fall brauchen Sie nicht zu setzen 166 00:09:28,000 --> 00:09:30,000 das Wort PHP nach dem Fragezeichen. 167 00:09:30,000 --> 00:09:34,000 Dies ist Kurzschreibweise für, noch einmal, was wir gerade gesehen haben vorhin 168 00:09:34,000 --> 00:09:37,000 welches Echo gewissen Wert. 169 00:09:37,000 --> 00:09:39,000 >> Mal sehen, was das Ergebnis dieser tatsächlich ist. 170 00:09:39,000 --> 00:09:43,000 Lassen Sie mich gehen in unser counter.php Datei, 171 00:09:43,000 --> 00:09:47,000 und wir werden sehen, dass David nur einen Fehler gemacht, indem er mit dem Code gibt. 172 00:09:47,000 --> 00:09:50,000 Lasst uns fix was er vermasselt gehen, 173 00:09:50,000 --> 00:09:54,000 und der Fehler scheint da zu sein, weg, on line 37. 174 00:09:54,000 --> 00:09:59,000 Nach dem Anfang der Seite Ich habe diese Seite besucht 0 mal. 175 00:09:59,000 --> 00:10:02,000 Nun, lassen Sie uns jetzt gehen, und an der Spitze des Browsers auf die Schaltfläche 176 00:10:02,000 --> 00:10:05,000 laden Symbol, und ich auf zu laden, 177 00:10:05,000 --> 00:10:12,000 und jetzt habe ich die Website besucht 1 Mal, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Und in der Tat, wenn wir an der Quelle dieser Seite finden Sie die aktuelle Quellcode verändert sich, 179 00:10:16,000 --> 00:10:19,000 und beachten Sie die komplette Abwesenheit jeglicher PHP, und das ist, weil 180 00:10:19,000 --> 00:10:23,000 PHP-Code ausgewertet bzw. interpretiert Server-Seite, 181 00:10:23,000 --> 00:10:27,000 und so, dass bedeutet, dass der Ausgang des PHP-Skript ist, was letztlich an den Browser gesendet, 182 00:10:27,000 --> 00:10:31,000 die in diesem Fall eine gewisse rohe HTML und einige rohe Text. 183 00:10:31,000 --> 00:10:33,000 Was ist denn hier los? 184 00:10:33,000 --> 00:10:37,000 >> Nun, mit relativ wenigen Zeilen Code Ich bin in der Lage zu speichern 185 00:10:37,000 --> 00:10:40,000 anhaltend im Laufe von mehreren Sekunden, oder wenn wir lange genug gewartet, 186 00:10:40,000 --> 00:10:44,000 Minuten, sogar Stunden, irgendein Wert in einer Weise, die HTTP macht 187 00:10:44,000 --> 00:10:47,000 scheint stateful als ob wir erhalten haben 188 00:10:47,000 --> 00:10:51,000 diese Verbindung an den Server, und es ist nur zu erinnern, was ich gesagt, beim letzten Mal, 189 00:10:51,000 --> 00:10:55,000 aber in Wirklichkeit gibt es eine ganze Reihe von Komplexität geht unter der Haube 190 00:10:55,000 --> 00:10:59,000 mit Cookies, so dass PHP, um mir diese Illusion ist 191 00:10:59,000 --> 00:11:02,000 dieser Warenkorb-like-Funktion. 192 00:11:02,000 --> 00:11:05,000 Denn jetzt, ein triviales Beispiel, wo wir nur die Speicherung sind eine ganze Zahl, 193 00:11:05,000 --> 00:11:08,000 aber das Feature kommen zurück, um von großem Wert sein 194 00:11:08,000 --> 00:11:10,000 wenn wir reden über komplexere Projekte, 195 00:11:10,000 --> 00:11:12,000 unter ihnen Problems gesetzt 7. 196 00:11:12,000 --> 00:11:16,000 Dies ist Ihre letzte Problem in CS50 eingestellt. 197 00:11:16,000 --> 00:11:19,000 Ich weiß, es ist so traurig, aber was Sie finden, dass wir gehen zu dem Schluss, 198 00:11:19,000 --> 00:11:22,000 dieser Teil des Semesters durch die tatsächliche Übergang 199 00:11:22,000 --> 00:11:25,000 aus dem Kontext C sicher auf den Kontext der PHP 200 00:11:25,000 --> 00:11:27,000 aber während mit einigen der gleichen Grundlagen 201 00:11:27,000 --> 00:11:29,000 Wir haben über längere Zeit gesprochen. 202 00:11:29,000 --> 00:11:33,000 >> Das Ziel mit pset 7 ist CS50 Finanzen umzusetzen, 203 00:11:33,000 --> 00:11:37,000 das ist Ihre eigene Version von Yahoo Finance oder Google Finance 204 00:11:37,000 --> 00:11:40,000 oder sogar Etrade.com wobei Sie die Möglichkeit haben, 205 00:11:40,000 --> 00:11:43,000 schauen Aktienkurse für bestimmte Symbole, sondern sogar mehr als das. 206 00:11:43,000 --> 00:11:48,000 Sie haben die Fähigkeit zu "kaufen" und "verkaufen"-Aktien 207 00:11:48,000 --> 00:11:51,000 , die an verschiedenen Börsen denn dieser Homepage gehandelt 208 00:11:51,000 --> 00:11:55,000 hier schlägt, das ist wirklich das Ausmaß, in dem wir begonnen haben, 209 00:11:55,000 --> 00:11:59,000 das Problem Set für Sie, haben Sie ein Login-Formular, das zur Eingabe eines Benutzernamens und eines Passworts gefragt ist. 210 00:11:59,000 --> 00:12:03,000 Es hat einen Submit-Button, danach aber, wie wir später sehen werden, 211 00:12:03,000 --> 00:12:06,000 es gibt nichts wirklich passiert unter der Haube noch, weil es 212 00:12:06,000 --> 00:12:09,000 bleibt Ihnen die Möglichkeit, neue Benutzer zu registrieren zu implementieren, 213 00:12:09,000 --> 00:12:12,000 die Fähigkeit, Aktien zu kaufen, um Aktien zu verkaufen, 214 00:12:12,000 --> 00:12:14,000 tatsächlich schauen aktuellen Aktienkurse. 215 00:12:14,000 --> 00:12:17,000 >> Und in der Tat, wird dies als realen Welt wie möglich zu sein, denn wir haben 216 00:12:17,000 --> 00:12:20,000 sind ein Stück Code, das Sie mit einer einzigen Funktion ermöglicht 217 00:12:20,000 --> 00:12:25,000 Yahoo Finance, die wunderbar macht frei Daten abfragen 218 00:12:25,000 --> 00:12:31,000 zum Nachschlagen Aktienkurse an der Börse Symbol oder Ticker-Symbol basiert, 219 00:12:31,000 --> 00:12:34,000 und Sie erhalten wieder die aktuellen Börsenkurs des Tages. 220 00:12:34,000 --> 00:12:37,000 Die Daten, die Sie tatsächlich sehen sind in diesem speziellen pset werden 221 00:12:37,000 --> 00:12:40,000 etwa so realen Welt kann es erhalten, so dass Sie tatsächlich Anbindung 222 00:12:40,000 --> 00:12:43,000 mit der realen Welt Aktien, realen Welt Preise, 223 00:12:43,000 --> 00:12:47,000 und wir werden sehen, wie viel Geld können Sie vielleicht machen 224 00:12:47,000 --> 00:12:51,000 im Laufe der nächsten Tage zu spielen mit Ihrem eigenen Problem-Set. 225 00:12:51,000 --> 00:12:55,000 >> Aber lassen Sie uns zunächst auf die Bühne, wie etwas, das sicherlich komplizierter das Design 226 00:12:55,000 --> 00:12:59,000 als counter.php, das ist komplizierter als eine der Frosh IMs Beispiele bislang 227 00:12:59,000 --> 00:13:02,000 und lassen Sie uns versuchen, ein paar Paradigmen einzuführen hier, dass es uns 228 00:13:02,000 --> 00:13:06,000 sowohl für pset 7 und vielleicht auch für das endgültige Projekt, wenn Sie etwas tun, Web-basiert 229 00:13:06,000 --> 00:13:11,000 zu halten Ihren Code gut organisiert, um sich selbst gesund, 230 00:13:11,000 --> 00:13:15,000 und einen Schritt in Richtung Zusammenarbeit, sei es in CS50 endgültigen Projekts 231 00:13:15,000 --> 00:13:18,000 oder darüber hinaus, wenn Sie weiterhin in der Zukunft etwas zu programmieren. 232 00:13:18,000 --> 00:13:21,000 Es ist das allgemeine Design-Paradigma 233 00:13:21,000 --> 00:13:24,000 in der Informatik und in der Software-Entwicklung im Allgemeinen 234 00:13:24,000 --> 00:13:27,000 bekannt als MVC, Model-View-Controller, 235 00:13:27,000 --> 00:13:30,000 und das ist eine dumme Abkürzung, die eine sehr nette Idee beschreibt, 236 00:13:30,000 --> 00:13:34,000 das ist die Trennung verschiedener Aspekte eines Programms, 237 00:13:34,000 --> 00:13:39,000 insbesondere die getrennte die Logik oder die Geschäftslogik einer Website 238 00:13:39,000 --> 00:13:42,000 so dass alles, was Dinge wie geht 239 00:13:42,000 --> 00:13:45,000 Aufruf von Funktionen und Abfragen von Datenbanken und dergleichen 240 00:13:45,000 --> 00:13:48,000 geschieht nicht unter Ihren HTML 241 00:13:48,000 --> 00:13:51,000 sondern in separaten Dateien, und zwar gibt es diese eine Datei 242 00:13:51,000 --> 00:13:54,000 Regel, dass Sie die Controller 243 00:13:54,000 --> 00:13:56,000 das ist wirklich der Kopf hinter der Operation, und wir werden ein Beispiel zu sehen 244 00:13:56,000 --> 00:13:58,000 dies in einem Moment. 245 00:13:58,000 --> 00:14:01,000 >> Es ist ein Modell, das Programmcode wird 246 00:14:01,000 --> 00:14:05,000 Das bedeutet das Gespräch mit Ihrem Datenbanken, Gespräche, bei Yahoo Finance und dergleichen, 247 00:14:05,000 --> 00:14:08,000 und dann gibt es das V in MVC, die Aussicht, 248 00:14:08,000 --> 00:14:11,000 all das Zeug, die Ästhetik, die Dateien, die tatsächlich enthalten verwandt ist 249 00:14:11,000 --> 00:14:14,000 Ihr HTML, vielleicht Ihre CSS und dergleichen. 250 00:14:14,000 --> 00:14:17,000 Die Idee dabei, wie dieses Bild vorschlägt, ist, dass der Controller 251 00:14:17,000 --> 00:14:21,000 ist die Datei, wie wir bald sehen werden und wie Sie insbesondere in pset 7 zu sehen, 252 00:14:21,000 --> 00:14:24,000 dass die Welt redet über ihren Web-Browser. 253 00:14:24,000 --> 00:14:27,000 Das ist die Datei, die auf das öffentliche Internet besucht wird, 254 00:14:27,000 --> 00:14:30,000 aber die Steuerung spricht potenziell ein Modell, 255 00:14:30,000 --> 00:14:34,000 welches einen oder mehrere andere Dateien, die Code verwandten Daten enthalten, 256 00:14:34,000 --> 00:14:37,000 Code-Datenbanken und dergleichen verbunden, und dann redet mit 257 00:14:37,000 --> 00:14:40,000 der Controller einen oder mehrere andere Dateien als Standpunkt unter 258 00:14:40,000 --> 00:14:43,000 welches sind die Ästhetik einer Web-Seite, Vorlagen der Art, 259 00:14:43,000 --> 00:14:47,000 das könnte einige Daten als Input nehmen, aber am Ende des Tages 260 00:14:47,000 --> 00:14:50,000 die einzige Logik innerhalb einer Ansicht sollte das Rendering der Daten sein, 261 00:14:50,000 --> 00:14:53,000 Iteration über einer Schleife und tatsächlich spuckt einige 262 00:14:53,000 --> 00:14:56,000 HTML-basierte Interpretation davon oder sogar so etwas wie ein PDF. 263 00:14:56,000 --> 00:14:59,000 >> Was ist schön zu MVC ist, dass man verschiedene Ansichten haben 264 00:14:59,000 --> 00:15:02,000 basierend auf der Art des Geräts, von der Art der Datei-Format, dass Sie tatsächlich der Basis 265 00:15:02,000 --> 00:15:04,000 möchten, um dem Benutzer zu zeigen. 266 00:15:04,000 --> 00:15:10,000 Werfen wir einen Blick auf ein paar immer komplexer und gut gestaltet Beispielen 267 00:15:10,000 --> 00:15:13,000 indem man zuerst mit Version 0 hier. 268 00:15:13,000 --> 00:15:16,000 Lassen Sie mich gehen Sie vor und eröffnen in unserem MVC Verzeichnis heute 269 00:15:16,000 --> 00:15:21,000 eine Datei namens index.php im Verzeichnis 0. 270 00:15:21,000 --> 00:15:26,000 Achtung: Dies ist ein super einfach und sehr underwhelming Website 271 00:15:26,000 --> 00:15:29,000 das ist eine Art der Version 0 von einer Homepage für CS50, 272 00:15:29,000 --> 00:15:32,000 und bemerken, wie wir einen Link zu Vorlesungen haben, haben wir einen Link zu Syllabus, 273 00:15:32,000 --> 00:15:35,000 und wenn ich auf den Link, um Vorträge beachten Sie, dass die URL 274 00:15:35,000 --> 00:15:39,000 up top wird, um lectures.php ändern. 275 00:15:39,000 --> 00:15:44,000 Wenn ich dann folgen Sie dem Link, um Woche 1 Ankündigung, dass die URL Änderungen week1.php. 276 00:15:44,000 --> 00:15:46,000 Es scheint eine ziemlich einfache hierarchische Struktur hier sein. 277 00:15:46,000 --> 00:15:49,000 >> Werfen wir einen kurzen Blick unter der Haube, wie dies angelegt, 278 00:15:49,000 --> 00:15:53,000 und in der Tat, wenn ich index.php aussehen, es ist ziemlich einfach. 279 00:15:53,000 --> 00:15:57,000 In der Tat, auch wenn ich das ein PHP-Datei namens gibt es keinen eigentlichen Programmcode. 280 00:15:57,000 --> 00:16:01,000 Es ist ein Kommentar, den ich hier geschrieben in PHP nur damit der Benutzer nicht am Ende sehen es. 281 00:16:01,000 --> 00:16:05,000 Natürlich nach wie vor alles, was zwischen PHP-Tags ist 282 00:16:05,000 --> 00:16:08,000 wird interpretiert, auch wenn es ein Kommentar ist, um und interpretieren einen Kommentar 283 00:16:08,000 --> 00:16:11,000 bedeutet, nur um es wegzuwerfen am Ende des Tages und nicht wirklich 284 00:16:11,000 --> 00:16:15,000 senden Sie es an den Browser, so dass alles hier ist nur Ästhetik. 285 00:16:15,000 --> 00:16:20,000 Wenn ich ähnlich lectures.php öffnen auch dies ist nur eine hart codierte Datei. 286 00:16:20,000 --> 00:16:23,000 Es passiert rief etwas werden. Php, 287 00:16:23,000 --> 00:16:27,000 aber es ist wirklich nur. html und week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 ähnlich sind nur Markup, so gibt es eine Reihe von Unzulänglichkeiten dieses Design. 289 00:16:31,000 --> 00:16:33,000 One, ist es eine riesige Menge von copy / paste. 290 00:16:33,000 --> 00:16:37,000 Auch wenn das einzige, was sich unter diesen Dateien ändern ist die ungeordnete Liste, 291 00:16:37,000 --> 00:16:41,000 die li-Tags, ich dennoch haben doc-Typ, HTML, Kopf, 292 00:16:41,000 --> 00:16:44,000 Titel, engen Körperkontakt, in der Nähe HTML und mehr 293 00:16:44,000 --> 00:16:47,000 in jede einzelne Datei, was bedeutet, dass, wenn ich jemals zu restrukturieren 294 00:16:47,000 --> 00:16:50,000 Diese Web-Seite oder restylize ihm habe ich zu gehen und zu ändern 295 00:16:50,000 --> 00:16:54,000 Alle diese Dateien manuell oder mit einem massiven finden und zu ersetzen. 296 00:16:54,000 --> 00:17:01,000 >> Lassen Sie uns einen Schritt in Richtung einer intelligenteren, mehr denken Design in Version 1 hier 297 00:17:01,000 --> 00:17:04,000 wobei nach der Lese mir, dass wir so aufgenommen, dass man mitspielen 298 00:17:04,000 --> 00:17:07,000 Diese gemächlicher zu Hause feststellen, dass wir hier 299 00:17:07,000 --> 00:17:10,000 eine Zusammenfassung der Dateien in der Version 1 dieser Website, 300 00:17:10,000 --> 00:17:13,000 und es scheint, dass ich es gemacht auf mich Faktor, um aus 301 00:17:13,000 --> 00:17:17,000 einige gemeinsame Code, header.php und footer.php. 302 00:17:17,000 --> 00:17:20,000 Nun, lassen Sie uns einen Blick an, was drin ist der erste von ihnen. 303 00:17:20,000 --> 00:17:23,000 Header.php wirkt vertraut, 304 00:17:23,000 --> 00:17:26,000 aber bemerken wo kommt es abgeschnitten werden? 305 00:17:26,000 --> 00:17:30,000 Gleich nach Zeile 19, das ist also alles, was üblich war 306 00:17:30,000 --> 00:17:33,000 aus den Dateien index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 und week2.php aus dem vorherigen Beispiel. 308 00:17:36,000 --> 00:17:40,000 Was ich tat, war Kopier-und Schnitt alles, was allen gemeinsam diesen Dateien war, 309 00:17:40,000 --> 00:17:44,000 steckte es in einen separaten Header-Datei, und ähnlich in footer.php 310 00:17:44,000 --> 00:17:48,000 habe ich den gleichen Grundsatz, wobei die einzigen interessanten Linien 311 00:17:48,000 --> 00:17:52,000 in footer.php sind diese beiden, in der Nähe Körper und enge HTML. 312 00:17:52,000 --> 00:17:55,000 >> Aber was bedeutet dies nun, dass in der neuen Version 313 00:17:55,000 --> 00:17:59,000 index.php merken, wie viel einfacher es bekommen kann. 314 00:17:59,000 --> 00:18:02,000 Zugegeben, sah ein wenig kryptisch, ein bisschen weniger intuitive 315 00:18:02,000 --> 00:18:06,000 zu folgen oben nach unten, aber mein Gott, all dieser Redundanz ist jetzt weg. 316 00:18:06,000 --> 00:18:10,000 Wir verlangen mit einer PHP-Funktion wörtlich heißt benötigen bis oben, 317 00:18:10,000 --> 00:18:15,000 das ist sehr erinnert, erinnern, der C den # include-Mechanismus. 318 00:18:15,000 --> 00:18:17,000 Wir benötigen header.php an der Spitze. 319 00:18:17,000 --> 00:18:20,000 Wir benötigen footer.php am Boden, und das Einzige, was anders ist 320 00:18:20,000 --> 00:18:25,000 oder besondere an dieser Datei ist der Inhalt, der bedeutete, einzigartig zu sein, es ist. 321 00:18:25,000 --> 00:18:29,000 Wenn ich in, sagen wir, lectures.php dann gehen, gilt das gleiche Prinzip. 322 00:18:29,000 --> 00:18:32,000 Auch verlangen einige Bemerkungen up top, aber dann habe ich verlangen, Header, Footer, 323 00:18:32,000 --> 00:18:35,000 und dazwischen, es ist nur der Inhalt, die tatsächlich geändert hat. 324 00:18:35,000 --> 00:18:38,000 Und wenn wir in Woche 1 und Woche sah 2 würden wir sehen, 325 00:18:38,000 --> 00:18:42,000 dass das gleiche Prinzip war dort aufgebracht. 326 00:18:42,000 --> 00:18:44,000 Nun, wir sind nicht ganz fertig da. 327 00:18:44,000 --> 00:18:48,000 >> Werfen wir einen Blick auf Version 2, die eine ähnliche Struktur hat, 328 00:18:48,000 --> 00:18:50,000 aber jetzt merke ich habe etwas anderes vorgestellt. 329 00:18:50,000 --> 00:18:53,000 In Zeile 10 Ich habe helpers.php eingeführt, 330 00:18:53,000 --> 00:18:55,000 die anscheinend enthält Hilfsfunktionen. 331 00:18:55,000 --> 00:18:58,000 Eine Hilfsfunktion ist in der Regel eine relativ kurze Funktion 332 00:18:58,000 --> 00:19:01,000 Sie schreiben, um Ihnen zu helfen in verschiedenen Orten, 333 00:19:01,000 --> 00:19:04,000 und lasst uns sehen, was drin ist der helpers.php. 334 00:19:04,000 --> 00:19:07,000 In diesem Fall sieht es wie es 2 Funktionen hat. 335 00:19:07,000 --> 00:19:10,000 Erinnern Sie sich an den anderen Tag mit unseren cube beispielsweise 336 00:19:10,000 --> 00:19:13,000 Sie können Ihre eigenen Funktionen in PHP zu definieren, und was ich jetzt getan ist, ich habe 337 00:19:13,000 --> 00:19:17,000 definierten Funktionen aufgerufen rendern footer und machen Header, 338 00:19:17,000 --> 00:19:21,000 von denen der erste einen Parameter annimmt genannt Daten, 339 00:19:21,000 --> 00:19:25,000 dessen Standardwert ist ein leeres Array, wie dort vorgeschlagen, 340 00:19:25,000 --> 00:19:29,000 und wir können eigentlich schreiben dies sogar noch kurz in der neuesten Version von PHP 341 00:19:29,000 --> 00:19:32,000 mit den Worten offene eckige Klammer, geschlossen eckige Klammer. 342 00:19:32,000 --> 00:19:35,000 Das bedeutet, dass ein leeres Array der Größe 0, aber dennoch ein Array. 343 00:19:35,000 --> 00:19:38,000 >> Dieser Extrakt Funktion ist etwas Besonderes, dass 344 00:19:38,000 --> 00:19:41,000 was es tut, ist es als Argument ein assoziatives Array 345 00:19:41,000 --> 00:19:45,000 das hat 0 oder mehr Schlüssel-Wert-Paaren, und wenn Sie einen Schlüssel foo 346 00:19:45,000 --> 00:19:48,000 und ein Wert von bar der Extrakt-Funktion 347 00:19:48,000 --> 00:19:51,000 schafft eine Situation, in der jetzt, da der Linie 11, 348 00:19:51,000 --> 00:19:57,000 Sie haben eine lokale Variable namens $ foo, dessen Wert bar. 349 00:19:57,000 --> 00:19:59,000 Und wenn Sie mehr Schlüssel und Werte hatten in der Daten-Array, 350 00:19:59,000 --> 00:20:03,000 ähnlich würden sie in den lokalen Bereich extrahiert werden 351 00:20:03,000 --> 00:20:06,000 oder den Namen Platz, so dass footer.php und 352 00:20:06,000 --> 00:20:09,000 die gleiche Idee hier unten, so dass header.php 353 00:20:09,000 --> 00:20:12,000 Zugang zu diesen Variablen. 354 00:20:12,000 --> 00:20:15,000 In der Tat, lass mich wieder öffnen header.php 355 00:20:15,000 --> 00:20:18,000 und lenken die Aufmerksamkeit jetzt, wie es aussieht in dieser Version. 356 00:20:18,000 --> 00:20:22,000 >> Anstatt hart zu kodieren CS50 als Titel für jede einzelne Seite 357 00:20:22,000 --> 00:20:24,000 feststellen, die Dynamik, die möglich ist, jetzt. 358 00:20:24,000 --> 00:20:29,000 In Zeile 5 Ich bin Echo einen Titel variable, 359 00:20:29,000 --> 00:20:34,000 aber zuerst muss ich mich vorbei diesen Titel Variable einer Funktion namens htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Eine dumme Bezeichnung für eine Funktion, solange es ist, aber es ist wirklich das tut, was es sagt. 361 00:20:38,000 --> 00:20:41,000 Es sorgt dafür, dass alle Sonderzeichen 362 00:20:41,000 --> 00:20:46,000 in der Zeichenfolge, die in gewesen ist vergangen richtig HTML entkommen. 363 00:20:46,000 --> 00:20:49,000 Dies ist tatsächlich eine Möglichkeit zur Vermeidung von etwas namens eine Cross-Site-Scripting-Angriff 364 00:20:49,000 --> 00:20:52,000 wobei jemand kann böswillig oder unabsichtlich 365 00:20:52,000 --> 00:20:55,000 injizieren ihre eigenen HTML-Code in Ihre Website 366 00:20:55,000 --> 00:20:59,000 durch Einfügen in eine Form, zum Beispiel, 367 00:20:59,000 --> 00:21:02,000 etwas, dass Sie waren nicht ganz erwartet, insbesondere JavaScript-Code, 368 00:21:02,000 --> 00:21:05,000 Als wir reden in ein oder zwei Wochen Zeit. 369 00:21:05,000 --> 00:21:08,000 >> Dies nun header.php, es ist ein Blick 370 00:21:08,000 --> 00:21:12,000 in dem Sinne, dass es Ihnen ästhetisch den Inhalt einiger Datensatz ermöglicht. 371 00:21:12,000 --> 00:21:14,000 Aber genauer gesagt, ist es eine Vorlage. 372 00:21:14,000 --> 00:21:19,000 Dies ist eine Art Blaupause jetzt, was wir wollen, dass die Kopfzeile jeder Seite aussehen, 373 00:21:19,000 --> 00:21:23,000 aber es gibt einige Dynamik dadurch, dass wir wollen, dass die Titel dynamisch eingefügt werden 374 00:21:23,000 --> 00:21:26,000 basierend auf dem Titel variable 375 00:21:26,000 --> 00:21:30,000 das wurde extrahiert, wenn wir aufgerufen, wieder 376 00:21:30,000 --> 00:21:33,000 Der Render-Header-Funktion. 377 00:21:33,000 --> 00:21:36,000 Nun, wenn wir bei render footer sah, gibt es eigentlich nicht viel von diesem Recht nun 378 00:21:36,000 --> 00:21:40,000 denn in footer.php gibt es keine Dynamik auch immer. 379 00:21:40,000 --> 00:21:43,000 Es könnte sein, aber im Moment ist es eine hart codierte Liste der 2-Tags, 380 00:21:43,000 --> 00:21:46,000 aber das gleiche Prinzip gilt, so dass eigentlich nahe, warum 381 00:21:46,000 --> 00:21:49,000 haben wir Zeit verschwenden mit einem render Header und ein render footer-Funktion? 382 00:21:49,000 --> 00:21:52,000 Lassen Sie mich gehen, statt jetzt in Version 3 383 00:21:52,000 --> 00:21:56,000 und in Version 3 in Helfern habe ich beschlossen, es noch mehr zu vereinfachen. 384 00:21:56,000 --> 00:21:58,000 >> Lassen Sie mich ein render-Funktion. 385 00:21:58,000 --> 00:22:02,000 Lassen Sie mich es, ein weiteres Argument, nannte diese Zeit-Schablone, 386 00:22:02,000 --> 00:22:05,000 womit gemeint ist der Name einer Vorlage sein, 387 00:22:05,000 --> 00:22:11,000 und dann werde ich anmaßend zu verketten. php auf diese Variable den Wert, 388 00:22:11,000 --> 00:22:17,000 und dann, wenn es existiert foo.php, bar.php oder header.php und footer.php, 389 00:22:17,000 --> 00:22:20,000 dann werde ich weitermachen und extrahieren Sie die variablen Daten 390 00:22:20,000 --> 00:22:23,000 und dann verlangen, dass Weg. 391 00:22:23,000 --> 00:22:29,000 In anderen Worten, dies jetzt zu verwenden, wenn ich index.php öffnen 392 00:22:29,000 --> 00:22:32,000 bemerken, dass ich nicht nennen render Header mehr. 393 00:22:32,000 --> 00:22:36,000 Ich nenne machen, aber ich gehe in einem Kurswert von Header 394 00:22:36,000 --> 00:22:39,000 deutlich zu machen, welche Vorlage ich eigentlich laden möchten. 395 00:22:39,000 --> 00:22:41,000 >> Dann hier bemerken, was ich tue. 396 00:22:41,000 --> 00:22:44,000 Ich bin in dynamisch einem Schlüssel Titel vorbei, 397 00:22:44,000 --> 00:22:47,000 ein Wert von CS50, und auch, wie wir bereits gesehen haben, 398 00:22:47,000 --> 00:22:51,000 könnte gemacht prägnanten in der neuesten Version von PHP werden 399 00:22:51,000 --> 00:22:54,000 wo kann ich ersetzen die Array-Funktion mit eckigen Klammern, 400 00:22:54,000 --> 00:22:57,000 was ich vorschlage, ist noch lesbar und sicher 401 00:22:57,000 --> 00:22:59,000 ein wenig leichter zu geben. 402 00:22:59,000 --> 00:23:02,000 Und natürlich mit der Render-footer Anruf an der Unterseite, 403 00:23:02,000 --> 00:23:05,000 wir nicht die Mühe die Übergabe eines zweiten Argument überhaupt keine assoziatives Array, 404 00:23:05,000 --> 00:23:07,000 denn es gibt nichts dynamischen Innenseite dieser Fußzeile. 405 00:23:07,000 --> 00:23:10,000 Es ist nur einige enge Tags für HTML. 406 00:23:10,000 --> 00:23:14,000 Gut, wir Schritte in Richtung wirklich Reinigen Dinge hier, 407 00:23:14,000 --> 00:23:17,000 aber lassen Sie mich eröffnen 2 endgültig Beispiele. 408 00:23:17,000 --> 00:23:21,000 Dieser, Nummer 4, Ankündigung, dass ich eine bewusste Entscheidung getroffen jetzt 409 00:23:21,000 --> 00:23:26,000 um auf das vorherige Beispiel, indem sie endlich mit etwas Hierarchie, um meine Dateien zu verbessern. 410 00:23:26,000 --> 00:23:29,000 >> Beachten Sie, dass in dieser Zusammenfassung, in diese zu lesen mir, ich habe eingeführt 411 00:23:29,000 --> 00:23:32,000 Ein umfasst Verzeichnis und einen Vorlagen-Verzeichnis 412 00:23:32,000 --> 00:23:35,000 deren Inhalte gehen, um die Dinge, die ich aufnehmen möchten sein 413 00:23:35,000 --> 00:23:38,000 und die Vorlagen, die ich möchte zu machen sind. 414 00:23:38,000 --> 00:23:42,000 Das ist wirklich mich als anal und zu versuchen, die Dinge ordentlich, 415 00:23:42,000 --> 00:23:45,000 halten zugehörigen Dateien zusammen, aber das Endresultat 416 00:23:45,000 --> 00:23:48,000 ist, dass wir jetzt ein wenig aufgeräumter Setup, aber wir müssen jetzt daran erinnern, 417 00:23:48,000 --> 00:23:51,000 in, zum Beispiel, index.php 418 00:23:51,000 --> 00:23:55,000 wenn wir benötigen die Datei helpers.php 419 00:23:55,000 --> 00:24:01,000 müssen wir jetzt benötigen sie über includes / helpers.php 420 00:24:01,000 --> 00:24:06,000 anstatt zu sagen helpers.php weil es jetzt eigentlich in einem Unterverzeichnis. 421 00:24:06,000 --> 00:24:09,000 Jetzt, als abgesehen, werden Sie in diesen Beispielen und einige andere sehen 422 00:24:09,000 --> 00:24:11,000 Funktionen wie erforderlich, einmal erfordern. 423 00:24:11,000 --> 00:24:15,000 Es gibt tatsächlich eine Funktion selbst aufgerufen sind, und sie alle haben etwas anderes Verhalten. 424 00:24:15,000 --> 00:24:18,000 Hier sage ich verlangen, einmal um super klar, dass ich nur die 425 00:24:18,000 --> 00:24:20,000 Helfer enthalten in meinem Projekt einmal. 426 00:24:20,000 --> 00:24:24,000 Aber wenn ich vorsichtig und wenn ich tatsächlich denke ich durch meine Logik richtig 427 00:24:24,000 --> 00:24:27,000 es sollte auch nur genügen zu sagen, benötigen bis top 428 00:24:27,000 --> 00:24:31,000 so lange ich mich nicht versehentlich verlangen, dass dieselbe Datei anderswo. 429 00:24:31,000 --> 00:24:34,000 In der Tat ist dies ein etwas effizienter Weg, Dinge zu tun, dann mit 430 00:24:34,000 --> 00:24:38,000 erfordern einmal, so werde ich es schneiden sich nur erfordern. 431 00:24:38,000 --> 00:24:40,000 >> Lassen Sie uns einen Schritt weiter gehen. 432 00:24:40,000 --> 00:24:46,000 Dieses letzte Beispiel jetzt, Version 5, hat eine noch sauberere Ordner-Hierarchie. 433 00:24:46,000 --> 00:24:50,000 Beachten Sie, was ich hier je die Lese mich in dieser finalen Version fertig 434 00:24:50,000 --> 00:24:54,000 ist nun habe ich meine HTML-Verzeichnis, was ich habe die ganze Zeit, 435 00:24:54,000 --> 00:24:58,000 aber innerhalb der dort jetzt nur index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php und week2.php. 437 00:25:01,000 --> 00:25:05,000 Die includes Verzeichnis lebt jetzt zusammen mit der HTML-Verzeichnis, 438 00:25:05,000 --> 00:25:08,000 so auf dem gleichen Niveau wie ein Geschwister, sozusagen. 439 00:25:08,000 --> 00:25:10,000 So funktioniert das Vorlagen-Ordner. 440 00:25:10,000 --> 00:25:14,000 Der Schlüssel zum Mitnehmen ist hier habe ich ein bisschen mehr Struktur eingeführt, 441 00:25:14,000 --> 00:25:17,000 aber das entscheidende Merkmal ist nun, dass nur die Dateien 442 00:25:17,000 --> 00:25:21,000 das müssen Internet zugänglichen, öffentlich adressierbare 443 00:25:21,000 --> 00:25:25,000 von einer URL auf das öffentliche Internet sind in meinem HTML-Verzeichnis. 444 00:25:25,000 --> 00:25:28,000 >> Inzwischen, andere Dateien helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, die wohl vielleicht mehr empfindlich sind, 446 00:25:32,000 --> 00:25:35,000 vielleicht Helfer tatsächlich einige Benutzernamen und Passwörter oder gewisse intellektuelle 447 00:25:35,000 --> 00:25:39,000 Eigentum von mir, funktioniert weiß ich wirklich nicht wollen, dass die Welt zu sehen, auch wenn sie versehentlich. 448 00:25:39,000 --> 00:25:45,000 Es ist gute Praxis, um aus dem öffentlichen HTML-Verzeichnis 449 00:25:45,000 --> 00:25:48,000 alle Dateien, die nicht brauchen, sich öffentlich. 450 00:25:48,000 --> 00:25:51,000 Alles, was Sie in diesem Fall tun, wenn man, zum Beispiel, 451 00:25:51,000 --> 00:25:55,000 das HTML-Verzeichnis des Datei index.php, 452 00:25:55,000 --> 00:25:58,000 bemerken wir nur noch ein wenig mehr Vorsicht beim erfordern 453 00:25:58,000 --> 00:26:00,000 oder einmal benötigen diese Datei. 454 00:26:00,000 --> 00:26:03,000 Ich muss zuerst tun .. , um zum übergeordneten Verzeichnis zu gelangen, 455 00:26:03,000 --> 00:26:06,000 dann tun / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 wieder nach unten in tauchen, um die Datei, die ich kümmern uns um Sie. 457 00:26:12,000 --> 00:26:16,000 >> Fragen Sie dann auf MVC 458 00:26:16,000 --> 00:26:20,000 oder diese relativ einfache Inkarnation davon? 459 00:26:20,000 --> 00:26:23,000 Und lassen Sie mich klarstellen, dass wir ziemlich viel auf die fokussierte 460 00:26:23,000 --> 00:26:27,000 V hier die Aussicht und die Ausklammerung dieser Vorlagen. 461 00:26:27,000 --> 00:26:30,000 Wir haben nicht wirklich M aus C unterschieden nur noch. 462 00:26:30,000 --> 00:26:33,000 In der Tat, es ist wirklich kein M hier, und sogar unsere C, 463 00:26:33,000 --> 00:26:36,000 Controller ist nicht wirklich alles tun, dass viel, aber Sie werden viel mehr zu bekommen 464 00:26:36,000 --> 00:26:39,000 vertraut mit diesen beiden 2 Briefe von MVC, 465 00:26:39,000 --> 00:26:43,000 oder besser gesagt, wirst du viel vertrauter mit dem C erhalten 466 00:26:43,000 --> 00:26:49,000 in MVC für Problem Satz 7, so gibt es mehr davon am Horizont. 467 00:26:49,000 --> 00:26:51,000 Haben Sie Fragen? 468 00:26:51,000 --> 00:26:53,000 Es ist eigentlich niemand hier. 469 00:26:53,000 --> 00:26:57,000 >> Okay, lassen Sie uns nun auf die zweite und letzte Thema für heute bewegen. 470 00:26:57,000 --> 00:27:00,000 Das ist die Einführung einer Datenbank. 471 00:27:00,000 --> 00:27:03,000 Bis zu diesem Zeitpunkt hatten wir ein paar Möglichkeiten der Speicherung von Daten. 472 00:27:03,000 --> 00:27:05,000 Wir haben Variablen verwendet. 473 00:27:05,000 --> 00:27:08,000 Zurück in unserem C-Datei, I / O Diskussionen begannen wir mit Textdateien 474 00:27:08,000 --> 00:27:11,000 und mit Dateien wie fprintf, und dann haben wir auch begonnen 475 00:27:11,000 --> 00:27:14,000 reden CSV-Dateien ein wenig, comma separated values, 476 00:27:14,000 --> 00:27:17,000 so dass alle von ihnen konnten wir haben gespeicherten Daten 477 00:27:17,000 --> 00:27:19,000 entweder nicht nachhaltig oder dauerhaft. 478 00:27:19,000 --> 00:27:23,000 Aber auch CSVs sind nicht wirklich förderlich für die Suche 479 00:27:23,000 --> 00:27:25,000 und das Einfügen und Löschen. 480 00:27:25,000 --> 00:27:28,000 Es ist wirklich nur ein dummer Text-Datei durch Komma getrennt 481 00:27:28,000 --> 00:27:30,000 Zeile für Zeile für Zeile für Zeile, also, wenn du willst 482 00:27:30,000 --> 00:27:32,000 Suche die Datei das Beste was Sie tun können, ist wirklich lineare Suche. 483 00:27:32,000 --> 00:27:34,000 Sie müssen am Anfang der Datei beginnen, lesen Sie die ganze Sache in, 484 00:27:34,000 --> 00:27:36,000 und für einen Wert von Interesse zu suchen. 485 00:27:36,000 --> 00:27:39,000 Wenn Sie in sie einfügen möchten, müssen Sie das gleiche tun, 486 00:27:39,000 --> 00:27:41,000 Iteration über sie und Einfügen in einem bestimmten Ort, 487 00:27:41,000 --> 00:27:45,000 und in der Tat, müssen Sie alle suchen Logik selbst zu tun. 488 00:27:45,000 --> 00:27:49,000 >> Man kann nicht klug Pattern Matching auf einer CSV-Datei, wenn Sie sich den Code schreiben. 489 00:27:49,000 --> 00:27:51,000 Sie können nicht Filtration einer CSV-Datei 490 00:27:51,000 --> 00:27:53,000 es sei denn, Sie selbst schreiben den Code. 491 00:27:53,000 --> 00:27:56,000 Wäre es nicht schön, wenn jemand anderes legte in all der Anstrengung 492 00:27:56,000 --> 00:27:59,000 tatsächlich die Suche einfach und das Einführen 493 00:27:59,000 --> 00:28:01,000 und Löschen und Aktualisieren und so weiter? 494 00:28:01,000 --> 00:28:04,000 Das ist genau das, was eine Datenbank ist. 495 00:28:04,000 --> 00:28:07,000 SQL, Structured Query Language, ist noch eine andere Sprache 496 00:28:07,000 --> 00:28:10,000 dass wir hier die Einführung heute, aber auch dies ist ziemlich zugänglich, 497 00:28:10,000 --> 00:28:13,000 und was wir wirklich tun müssen, ist einfach herausreißen es einige der markantesten 498 00:28:13,000 --> 00:28:16,000 Eigenschaften, so dass für pset 7, und wenn Sie etwas tun, Web-basierte, 499 00:28:16,000 --> 00:28:19,000 Ihr fertiges Projekt, haben Sie die Möglichkeit, sich selbst auszudrücken 500 00:28:19,000 --> 00:28:22,000 in Form von Daten Abfragen. 501 00:28:22,000 --> 00:28:25,000 Sie haben die Möglichkeit, ein wenig zu speichern oder eine Menge von Daten 502 00:28:25,000 --> 00:28:28,000 in einer viel stärker strukturiert, dass am Ende des Tages 503 00:28:28,000 --> 00:28:32,000 Ihr Leben leichter machen, denn mit SQL können Sie selbst auszudrücken 504 00:28:32,000 --> 00:28:35,000 viel genauer, viel mehr methodisch, um 505 00:28:35,000 --> 00:28:40,000 wieder eine Teilmenge von Daten aus einem größeren Korpus von Daten. 506 00:28:40,000 --> 00:28:45,000 >> Sie können sich eine Datenbank vorstellen, in diesem Fall eine SQL-Datenbank, wirklich wie Excel 507 00:28:45,000 --> 00:28:48,000 oder Zahlen, wo es eine Tabellenkalkulation, 508 00:28:48,000 --> 00:28:50,000 oder vielleicht mehreren Kalkulationstabellen und eine Tabellenkalkulation natürlich 509 00:28:50,000 --> 00:28:53,000 besteht aus Reihen und Spalten, und das ist, weil 510 00:28:53,000 --> 00:28:56,000 SQL-Datenbanken sind relationale, relationale im Sinne 511 00:28:56,000 --> 00:28:59,000 daß sie speichern Daten in Bezug auf diesen Tabellen 512 00:28:59,000 --> 00:29:01,000 Zeilen und Spalten. 513 00:29:01,000 --> 00:29:03,000 Sie sind leistungsfähiger als so etwas wie eine Tabellenkalkulation, 514 00:29:03,000 --> 00:29:05,000 und eine Tabellenkalkulation soll durch einen Menschen verwendet werden. 515 00:29:05,000 --> 00:29:08,000 Eine Datenbank soll durch einen Programmierer verwendet werden 516 00:29:08,000 --> 00:29:12,000 Schreiben von Code gegen sie, so die Inkarnation einer Datenbank 517 00:29:12,000 --> 00:29:14,000 wird entweder Befehlszeile sein. 518 00:29:14,000 --> 00:29:18,000 >> Eines der gängigsten relationalen Datenbanken da draußen ist, wieder, MySQL, 519 00:29:18,000 --> 00:29:22,000 das ist wunderbar frei, sehr leistungsstark, und dies ist es, was 520 00:29:22,000 --> 00:29:24,000 Facebook verwendet sehr früh und in gewissem Maße auch heute noch 521 00:29:24,000 --> 00:29:27,000 eine Menge seiner Daten zu speichern, und wir werden gleich sehen 522 00:29:27,000 --> 00:29:30,000 , dass mit relativ einfachen Befehlen 523 00:29:30,000 --> 00:29:33,000 Wir können wählen, Daten, Daten einfügen, Daten aktualisieren, 524 00:29:33,000 --> 00:29:37,000 Löschen von Daten und dergleichen, aber zum Glück gibt es eine weitere benutzerfreundliche Schnittstelle 525 00:29:37,000 --> 00:29:39,000 als nur die Eingabe in einem Schwarz-Weiß-Eingabeaufforderung hier. 526 00:29:39,000 --> 00:29:43,000 Wir werden für pset 7 und darüber hinaus ein kostenloses Tool namens phpMyAdmin verwenden. 527 00:29:43,000 --> 00:29:45,000 Der Name ist zufällig. 528 00:29:45,000 --> 00:29:47,000 Das Tool geschieht in PHP implementiert werden, 529 00:29:47,000 --> 00:29:49,000 aber das ist grundsätzlich irrelevant. 530 00:29:49,000 --> 00:29:53,000 Was ist nützlich zu phpMyAdmin ist, dass es sich um ein web-basiertes Dienstprogramm ist. 531 00:29:53,000 --> 00:29:55,000 Wir haben sie in das Gerät für Sie vorinstalliert 532 00:29:55,000 --> 00:29:58,000 und mit ihm können Sie Tabellen in einer Datenbank zu erstellen, 533 00:29:58,000 --> 00:30:01,000 Sie können Daten einfügen, löschen Daten, und in der Regel finden 534 00:30:01,000 --> 00:30:04,000 Ihre Daten in einer ziemlich benutzerfreundlichen Umgebung. 535 00:30:04,000 --> 00:30:07,000 Ihre Benutzer sind nicht zu phpMyAdmin verwenden. 536 00:30:07,000 --> 00:30:09,000 >> Das ist wirklich nur ein Verwaltungs-oder Entwickler-Tool 537 00:30:09,000 --> 00:30:12,000 mit denen zu sehen und zu stochern Ihre Daten und herauszufinden, wie es zu strukturieren, 538 00:30:12,000 --> 00:30:15,000 ähnlich wie du dich vielleicht mit Excel oder Numbers, 539 00:30:15,000 --> 00:30:19,000 aber es wird eine gute Möglichkeit der Visualisierung, was los ist unter der Haube sein 540 00:30:19,000 --> 00:30:22,000 so dass man auf die interessante Problemlösung zu konzentrieren und nicht so sehr 541 00:30:22,000 --> 00:30:25,000 auf den geheimnisvollen Befehlen. 542 00:30:25,000 --> 00:30:28,000 Werfen wir einen Blick auf ein Beispiel von Daten, die tabellarisch gespeichert werden könnte 543 00:30:28,000 --> 00:30:30,000 in einer relationalen Datenbank. 544 00:30:30,000 --> 00:30:32,000 Hier ist ein solches Beispiel. 545 00:30:32,000 --> 00:30:35,000 Nun, leider geirrt phpMyAdmin auf der Seite werfen viel zu viele Worte 546 00:30:35,000 --> 00:30:38,000 und Grafik an Sie, aber wenn Sie trainieren in nur auf der 547 00:30:38,000 --> 00:30:42,000 ID-Spalte, den Benutzernamen Spalte und der Hash-Säule, 548 00:30:42,000 --> 00:30:45,000 Dies ist tatsächlich eine Tabellenkalkulation, aber es passiert ein Schnipsel sein 549 00:30:45,000 --> 00:30:49,000 einer Tabelle Innere des Gerätes 550 00:30:49,000 --> 00:30:53,000 mit einer Datei, die wir Ihnen mit in problematischen Satz 7. 551 00:30:53,000 --> 00:30:57,000 >> Insbesondere geben wir Ihnen eine Datei, stellt 552 00:30:57,000 --> 00:31:01,000 eines Benutzers Tisch, so dass eine Tabelle mit Benutzern mit 3 Spalten, 553 00:31:01,000 --> 00:31:05,000 eine davon ist eine eindeutige Kennung bei 1 beginnt und wobei danach inkrementiert. 554 00:31:05,000 --> 00:31:08,000 Die zweite Säule ist ein Benutzername und diejenigen von Ihnen, Hacker taten, 555 00:31:08,000 --> 00:31:12,000 Die Hacker Edition für pset 2, vielleicht erkennen einige dieser Benutzernamen zumindest. 556 00:31:12,000 --> 00:31:16,000 Auf der rechten Seite sind Kennwörter, aber sie sind nicht wörtlich Passwörter. 557 00:31:16,000 --> 00:31:19,000 Sie sind Hashes davon, so stellt sich heraus, 558 00:31:19,000 --> 00:31:22,000 , dass die Speicherung von Passwörtern in einer Datenbank ist eine wirklich schlechte Idee. 559 00:31:22,000 --> 00:31:25,000 Sie haben wahrscheinlich alle an einem gewissen Punkt von einigen Website gelesen 560 00:31:25,000 --> 00:31:28,000 Oder einige Unternehmens-Datenbank, die kompromittiert, und dann muss man 561 00:31:28,000 --> 00:31:31,000 Ihr Passwort ändern, müssen Sie Erstattungen für Dinge 562 00:31:31,000 --> 00:31:34,000 weil einige schlechte Kerl tatsächlich brach in Ihrem Konto als Ergebnis. 563 00:31:34,000 --> 00:31:38,000 >> Speicherung von Passwörtern im Klartext, unverschlüsselt in einer Datenbank 564 00:31:38,000 --> 00:31:41,000 ist völlig idiotisch, und doch ist es sehr amüsant 565 00:31:41,000 --> 00:31:44,000 dann über einige sehr bekannte Unternehmen gelesen 566 00:31:44,000 --> 00:31:47,000 manchmal in der Presse, deren Datenbanken kompromittiert, 567 00:31:47,000 --> 00:31:50,000 und dass ein Teil ist nicht lustig, aber die Tatsache, dass die Datenbanken enthalten unverschlüsselte 568 00:31:50,000 --> 00:31:53,000 Passwörter ist lächerlich, weil buchstäblich mit einer Zeile Code 569 00:31:53,000 --> 00:31:57,000 Sie können gegen diesen bestimmten Bedrohung zu schützen, und das ist, was wir hier gemacht haben. 570 00:31:57,000 --> 00:32:00,000 Auch für unsere gefälschte wenig CS50 Finance-Version 571 00:32:00,000 --> 00:32:03,000 Wir verschlüsseln Passwörter nur für eine gute Maßnahme, und die Tatsache, dass 572 00:32:03,000 --> 00:32:07,000 all diese Passwörter beginnen mit $ 1 $ ist nur eine Konvention. 573 00:32:07,000 --> 00:32:10,000 Das bedeutet nur, sie sind verschlüsselt oder wirklich Hash, 574 00:32:10,000 --> 00:32:13,000 das ist wie ein One-Way Verschlüsselungsfunktion 575 00:32:13,000 --> 00:32:17,000 wobei man nicht rückgängig machen können seine Auswirkungen mit einem so genannten MD5. 576 00:32:17,000 --> 00:32:21,000 >> Die Tatsache, dass 50 nach, dass es bedeutet, dass ein Salz-Wert 577 00:32:21,000 --> 00:32:24,000 von 50 wurde für Hashing all diese Passwörter mit einer Ausnahme verwendet. 578 00:32:24,000 --> 00:32:27,000 Mine, natürlich, wie kann man es sehen, HA, 579 00:32:27,000 --> 00:32:30,000 war mit einem anderen Salz, so diejenigen von euch, die etwas ausgelöst wurde bis 580 00:32:30,000 --> 00:32:33,000 vielleicht in Hacker 2, das könnte das Ergebnis unserer genutzt haben haben 581 00:32:33,000 --> 00:32:36,000 eine andere Hash als die anderen, weil mein Passwort ist eigentlich das gleiche 582 00:32:36,000 --> 00:32:38,000 wie einige andere Benutzer dort oben. 583 00:32:38,000 --> 00:32:41,000 In der Tat, wenn Sie gewartet haben all diese Woche, um herauszufinden, 584 00:32:41,000 --> 00:32:44,000 was diese Passwörter wurden hier waren die Kennwörter, die Sie wurden herausgefordert 585 00:32:44,000 --> 00:32:48,000 in der Hacker Ausgabe des Problems Satz 2, so nicht allzu schwierig zu knacken. 586 00:32:48,000 --> 00:32:50,000 In der Tat war malan ist das gleiche wie jharvard, 587 00:32:50,000 --> 00:32:54,000 aber wenn wir wieder gehen sie sah anders aus. 588 00:32:54,000 --> 00:32:58,000 >> Konzentrieren Sie sich auf jharvard in crimson weil sie anders gesalzen wurden. 589 00:32:58,000 --> 00:33:01,000 Der Algorithmus wurde in einer Weise, daß die gestörten 590 00:33:01,000 --> 00:33:05,000 Hashwert, sieht die verschlüsselten Wert ein wenig anders 591 00:33:05,000 --> 00:33:08,000 da die Eingänge waren etwas anders, aber das Passwort unter der Haube 592 00:33:08,000 --> 00:33:10,000 war noch letztendlich crimson. 593 00:33:10,000 --> 00:33:12,000 Nun, wen kümmert das? 594 00:33:12,000 --> 00:33:15,000 Nun, stellen wir Ihnen mit den Sample-Nutzer, die Probe Benutzernamen 595 00:33:15,000 --> 00:33:18,000 und Hashes der Kennwörter, so dass Sie tatsächlich haben einige 596 00:33:18,000 --> 00:33:23,000 Kunden für CS50 Finance, wenn Sie zuerst aus dem Boden mit Ihrem Code. 597 00:33:23,000 --> 00:33:27,000 Sie müssen mehrere Tabellen innerhalb von MySQL implementieren, innerhalb der Datenbank. 598 00:33:27,000 --> 00:33:30,000 Du musst mehr Tabellen zu erstellen, effektiv, aber wir beschlossen, Ihnen diese ein 599 00:33:30,000 --> 00:33:33,000 um Ihnen den Einstieg, und du wirst sehen, dass das Problem set-Spezifikation 600 00:33:33,000 --> 00:33:37,000 führt Sie durch den Prozess der Import dieser Tabelle 601 00:33:37,000 --> 00:33:39,000 und auch zu erklären, was einige der Eigenschaften, 602 00:33:39,000 --> 00:33:41,000 und Sie werden auch sehen, dass wir Ihnen mit dem Code 603 00:33:41,000 --> 00:33:44,000 die Hashing oder die Verschlüsselung der Passwörter umgehen, 604 00:33:44,000 --> 00:33:49,000 so brauchen Sie nicht zu viel Sorgen über das, was MD5 oder dergleichen ist eigentlich alles über. 605 00:33:49,000 --> 00:33:53,000 >> So, SQL, Structured Query Language. 606 00:33:53,000 --> 00:33:56,000 Dies ist ganz einfach, die Sprache, wir sind kurz vor dem Start mit in pset 7 607 00:33:56,000 --> 00:34:01,000 und vielleicht darüber hinaus, um Daten aus einer Datenbank anfordern. 608 00:34:01,000 --> 00:34:06,000 Die Daten werden wiederum tabellarisch in diesen relationalen Tabellen, Spalten und Zeilen gespeichert, 609 00:34:06,000 --> 00:34:09,000 aber mit einigen relativ einfachen Syntax wie löschen, 610 00:34:09,000 --> 00:34:12,000 einfügen, aktualisieren und wählen können wir genau das tun. 611 00:34:12,000 --> 00:34:15,000 Wir können aus der Datenbank zu löschen, einfügen, 612 00:34:15,000 --> 00:34:19,000 Daten, sowie ausgewählte, dh abzurufen Daten aus der Datenbank. 613 00:34:19,000 --> 00:34:21,000 Wie gehen wir dabei vorgehen? 614 00:34:21,000 --> 00:34:23,000 Lassen Sie mich gehen Sie in das Gerät. 615 00:34:23,000 --> 00:34:28,000 Lassen Sie mich hochzuziehen http://localhost, 616 00:34:28,000 --> 00:34:30,000 was wiederum die lokale Gerät selbst. 617 00:34:30,000 --> 00:34:32,000 Das ist die Standardeinstellung Spitznamen. 618 00:34:32,000 --> 00:34:35,000 Und lassen Sie mich / phpmyadmin gehen. 619 00:34:35,000 --> 00:34:39,000 Dies geschieht, um eine spezielle URL sein, dass das Gerät vorkonfiguriert zu verstehen ist, 620 00:34:39,000 --> 00:34:42,000 das sofort veranlasst mich, einen Benutzernamen und ein Passwort. 621 00:34:42,000 --> 00:34:46,000 >> Wie üblich werde ich jharvard und Purpur geben, 622 00:34:46,000 --> 00:34:48,000 aber erkennen, das ist das Administrator-Konto auf dem Computer. 623 00:34:48,000 --> 00:34:53,000 Es ist nur ein Zufall, dass es auch ein jharvard für CS50 Finance registriert. 624 00:34:53,000 --> 00:34:56,000 Jharvard, crimson, gibt enter mir die Benutzeroberfläche, die wir sahen, 625 00:34:56,000 --> 00:34:59,000 einen Einblick in einen Moment vor, und es ist ein wenig überwältigend auf den ersten, 626 00:34:59,000 --> 00:35:02,000 aber seien Sie versichert, du bist nie zu haben, um die meisten der Links in diesem Tool klicken. 627 00:35:02,000 --> 00:35:05,000 Sie werden am Ende mit einem kleinen Teilmenge super hilfsbereit sind, 628 00:35:05,000 --> 00:35:08,000 von denen die erste ist Datenbanken hier. 629 00:35:08,000 --> 00:35:11,000 Wenn ich auf Datenbanken zu gehen, bemerken, dass ich aufgefordert werde, eine Datenbank zu erstellen. 630 00:35:11,000 --> 00:35:14,000 Das ist wie eine neue Excel-Datei, effektiv. 631 00:35:14,000 --> 00:35:18,000 Ich werde weitermachen und rufen Sie diesen Vortrag, und ich werde einfach das Feld dort collation ignorieren. 632 00:35:18,000 --> 00:35:20,000 Es hat mit der Darstellung von Daten darin zu tun, 633 00:35:20,000 --> 00:35:24,000 und ich werde Sie erstellen, und jetzt feststellen, wie ich los erstellen lassen 634 00:35:24,000 --> 00:35:27,000 auf der linken Seite, wo es heißt keine Datenbanken 635 00:35:27,000 --> 00:35:30,000 Ich sollte bald den Vortrag Datenbank. 636 00:35:30,000 --> 00:35:32,000 >> Wenn ich jetzt auf der linken Seite, der Vortrag Datenbank klicken, 637 00:35:32,000 --> 00:35:34,000 bemerken, meine Registerkarten ändern ein wenig. 638 00:35:34,000 --> 00:35:38,000 Ich habe Struktur, SQL, Export, Import und einige andere Dinge haben. 639 00:35:38,000 --> 00:35:40,000 Die Struktur ist ziemlich leer. 640 00:35:40,000 --> 00:35:43,000 Keine Tabellen gefunden in der Datenbank, wie es hier heißt, 641 00:35:43,000 --> 00:35:47,000 also lasst uns eine Tabelle erstellen, und lassen Sie uns gehen Sie vor und erstellen Sie eine Tabelle 642 00:35:47,000 --> 00:35:53,000 wie Studenten, und wie viele Spalten wollen wir? 643 00:35:53,000 --> 00:35:55,000 Lasst uns diese einfache und let Rekord für jeden Schüler 644 00:35:55,000 --> 00:35:58,000 eine ID-Nummer, einen Namen und eine E-Mail-Adresse. 645 00:35:58,000 --> 00:36:02,000 >> Wir halten es einfach so, so 3 Spalten, gehen. 646 00:36:02,000 --> 00:36:05,000 Das Formular, das Sie hier sehen, ist jetzt ein wenig chaotisch und überwältigend, 647 00:36:05,000 --> 00:36:08,000 aber wir müssen es Zeile für Zeile zu gehen, so sehr schnell geben wir 648 00:36:08,000 --> 00:36:14,000 die erste Spalte in dieser Datenbank ein Dateiname der ID zur eindeutigen Kennung. 649 00:36:14,000 --> 00:36:17,000 Es wird eine ganze Zahl sein. Ich kann tatsächlich ignorieren Länge und Werte. 650 00:36:17,000 --> 00:36:21,000 Ein int wird auf 32 Bit, egal was Sie dort geben sein, so lassen Sie das Feld leer lassen. 651 00:36:21,000 --> 00:36:24,000 Default-Wert, konnte ich es null, wie definiert. 652 00:36:24,000 --> 00:36:27,000 Ich werde das in Ruhe zu lassen. Lassen Sie uns nicht über Standardwerte kümmern. 653 00:36:27,000 --> 00:36:29,000 Lasst scrollen Sie hier, um die richtigen, Attribute. 654 00:36:29,000 --> 00:36:31,000 Das ist interessant. 655 00:36:31,000 --> 00:36:33,000 Lasst uns weitermachen und etwas willkürlich sagen, dass IDs müssen unsigniert. 656 00:36:33,000 --> 00:36:35,000 Lassen Sie uns nicht verschwenden keine negativen Zahlen. 657 00:36:35,000 --> 00:36:37,000 >> Wir gehen von 0 bis 4000000000, geben oder nehmen, 658 00:36:37,000 --> 00:36:40,000 und dann lasst uns nicht berühren eines dieser Felder nur noch dort, 659 00:36:40,000 --> 00:36:43,000 aber dann lass mich in Namen hier unten geben, 660 00:36:43,000 --> 00:36:46,000 und dann die andere E-Mail war, so dass der Haken ist, E-Mail- 661 00:36:46,000 --> 00:36:50,000 und Namen, offensichtlich nicht Zahlen, so ändern wir diese auf einem anderen Feld. 662 00:36:50,000 --> 00:36:53,000 Es stellt sich heraus varchar, variable Länge char, 663 00:36:53,000 --> 00:36:56,000 ist wie ein String in einer SQL-Datenbank 664 00:36:56,000 --> 00:36:59,000 sondern ein variabler Länge, und Sie haben tatsächlich zu erzählen im Voraus die 665 00:36:59,000 --> 00:37:02,000 maximale Länge des Strings, so dass ich mich auf etwas willkürlich gehen 666 00:37:02,000 --> 00:37:05,000 durch Konvention Typ 255 Zeichen. 667 00:37:05,000 --> 00:37:08,000 Ich konnte absolut sagen 32. Ich könnte sagen, 1.000. 668 00:37:08,000 --> 00:37:11,000 Sie Art von Notwendigkeit für sich selbst entscheiden auf Ihrer Demographie was ist Basis 669 00:37:11,000 --> 00:37:14,000 Die längste Schüler den Namen und gehen mit dieser Nummer oder ein wenig größer, 670 00:37:14,000 --> 00:37:17,000 aber was ist schön zu einem varchar ist es nicht zu verschwenden 671 00:37:17,000 --> 00:37:19,000 255 Bytes auf jeder Schüler seinen Namen. 672 00:37:19,000 --> 00:37:23,000 Wenn es DAVID ist es nicht, ein ganzes 255 Bytes zu verwenden, 673 00:37:23,000 --> 00:37:26,000 aber das ist eine obere Schranke, so dass ich mit 255 nur durch Konvention gehen, 674 00:37:26,000 --> 00:37:30,000 aber wir konnten debattieren, dass einige niedrigeren Wert sein, und für E-Mail-Adresse 675 00:37:30,000 --> 00:37:34,000 nur konsequent zu sein 255, aber auch hier konnten wir die gleiche Debatte. 676 00:37:34,000 --> 00:37:36,000 Aber ich werde eine andere Sache hier zu tun auf der rechten Seite. 677 00:37:36,000 --> 00:37:40,000 >> Was ist mächtig über eine Datenbank ist, dass es eine Menge schweres Heben zu tun 678 00:37:40,000 --> 00:37:42,000 oder komplexe Arbeit für Sie. 679 00:37:42,000 --> 00:37:46,000 Insbesondere, ich weiß wirklich nicht, was meine Studenten-ID-Nummern sind. 680 00:37:46,000 --> 00:37:49,000 Es ist nur soll eine eindeutige Kennung in einer Datenbank 681 00:37:49,000 --> 00:37:52,000 so habe ich eine 32-Bit-prägnante Darstellung dieser Studenten 682 00:37:52,000 --> 00:37:55,000 so dass ich einen Weg eindeutig identifiziert sie 683 00:37:55,000 --> 00:37:58,000 damit es nicht 2 Davids, zum Beispiel, werden in einer Klasse. 684 00:37:58,000 --> 00:38:01,000 In der Tat, ich werde dieses AI Feld Auto Increment zu überprüfen, 685 00:38:01,000 --> 00:38:04,000 so dass die Datenbank, MySQL, herausfindet, 686 00:38:04,000 --> 00:38:08,000 Was jeder neu eingefügte Studenten ID sein wird. 687 00:38:08,000 --> 00:38:11,000 Ich weiß nicht einmal, darüber in meinem Code kümmern, 688 00:38:11,000 --> 00:38:13,000 und ich werde auch etwas unter dem Index-Menü wählen. 689 00:38:13,000 --> 00:38:17,000 Der Index Drop-Down hat hier primären, unique, 690 00:38:17,000 --> 00:38:19,000 Index-und Volltextsuche. 691 00:38:19,000 --> 00:38:21,000 Sie können vielleicht erraten, was ein paar dieser Dinge sind, 692 00:38:21,000 --> 00:38:24,000 aber es stellt sich heraus, die in relationalen Datenbanken 693 00:38:24,000 --> 00:38:28,000 Sie der Programmierer oder der Datenbank-Administrator bekommen präventiv 694 00:38:28,000 --> 00:38:32,000 geben Hinweise auf die Datenbank zu, welche Felder 695 00:38:32,000 --> 00:38:34,000 in einer Tabelle sind ein wenig speziell. 696 00:38:34,000 --> 00:38:37,000 >> Zum Beispiel, in diesem Fall werde ich diese ID sagen, 697 00:38:37,000 --> 00:38:42,000 wird ein Primär-Index, sonst als Primärschlüssel bekannt sein. 698 00:38:42,000 --> 00:38:44,000 Was dies bedeutet per Definition, dass ID fortan 699 00:38:44,000 --> 00:38:48,000 wird eindeutig identifizieren Schüler in dieser Tabelle. 700 00:38:48,000 --> 00:38:53,000 Kein Schüler haben die gleiche ID, weil ich imposanten diese Einschränkung oder diesen Index werde. 701 00:38:53,000 --> 00:38:55,000 Darüber, was das wird für mich zu tun ist, es wird zu sagen, 702 00:38:55,000 --> 00:38:58,000 MySQL, dass ID ist etwas Besonderes. 703 00:38:58,000 --> 00:39:03,000 Ich kümmere mich besonders über ID, so gehen Sie vor und tun Sie Ihre Phantasie Datenstruktur Magie, 704 00:39:03,000 --> 00:39:05,000 Aufbau eine Art Baum. 705 00:39:05,000 --> 00:39:08,000 Typischerweise ist es etwas namens B-Baum, die wir nicht in den Wochen hat vor aussehen, 706 00:39:08,000 --> 00:39:11,000 aber es ist eine weitere solche Datenstruktur im Geiste der binären Bäume 707 00:39:11,000 --> 00:39:15,000 und versucht, die wir untersucht haben, aber es wird zu sagen, 708 00:39:15,000 --> 00:39:18,000 in der Datenbank das Feld ist so wichtig, dass ich wahrscheinlich 709 00:39:18,000 --> 00:39:22,000 wollen in der Lage sein, auf sie zu suchen, gehen Sie vor und bauen etwas Phantasie 710 00:39:22,000 --> 00:39:25,000 Datenstruktur im Speicher zu beschleunigen sucht, so dass idealerweise 711 00:39:25,000 --> 00:39:28,000 sie sind konstante Zeit oder zumindest als dieser möglichst nahe 712 00:39:28,000 --> 00:39:32,000 so daß es nicht in lineare Suche devolve wird die nicht zu sein 713 00:39:32,000 --> 00:39:34,000 die leistungsstarken Ansatz. 714 00:39:34,000 --> 00:39:37,000 Im Gegensatz dazu konnte E-Mail Adresse ein Primärschlüssel haben. 715 00:39:37,000 --> 00:39:41,000 >> In der Theorie ist jeder E-Mail-Adresse eindeutig, es sei denn, Sie teilen eine Rechnung, 716 00:39:41,000 --> 00:39:45,000 aber es ist in der Regel nicht gut, so etwas wie eine Zeichenfolge verwenden 717 00:39:45,000 --> 00:39:49,000 als Primärschlüssel, denn wenn ihr Zweck im Leben ist, eindeutig zu identifizieren 718 00:39:49,000 --> 00:39:55,000 Zeilen in Ihrer Tabelle gibt es keinen Grund zu 255 Byte maximal nutzen 719 00:39:55,000 --> 00:39:58,000 eindeutig zu identifizieren jemand, wenn Sie lässt sich mit nur 4 Bytes 720 00:39:58,000 --> 00:40:00,000 oder ein 32-Bit-int. 721 00:40:00,000 --> 00:40:03,000 Im Allgemeinen sollte ein Primärschlüssel sein kurz und prägnant 722 00:40:03,000 --> 00:40:07,000 und im Idealfall so etwas wie eine ganze oder eine große int, die auf 64 Bit werden passiert. 723 00:40:07,000 --> 00:40:11,000 Aber eine Emailadresse sollte eindeutig sein, und eines der Merkmale einer Datenbank zu 724 00:40:11,000 --> 00:40:14,000 ist, um die Eindeutigkeit für mich durchzusetzen. 725 00:40:14,000 --> 00:40:18,000 Durch die Auswahl einzigartiger hier neben E-Mail, auch wenn E-Mail selbst 726 00:40:18,000 --> 00:40:21,000 gescrollt wird aus dem Bildschirm, ich bin in der Datenbank zu sagen 727 00:40:21,000 --> 00:40:23,000 trau mich nicht. 728 00:40:23,000 --> 00:40:26,000 Lassen Sie mich nicht in die Datenbank einfügen 729 00:40:26,000 --> 00:40:29,000 die gleiche E-Mail-Adresse zweimal, auch wenn ich ein Idiot bin, und bin nicht 730 00:40:29,000 --> 00:40:32,000 sehr gut mit meinem Wenn und anderes ifs und tatsächlichen PHP-Code 731 00:40:32,000 --> 00:40:37,000 und ich versehentlich damit der Benutzer mit einer vorhandenen E-Mail-Adresse registrieren 732 00:40:37,000 --> 00:40:40,000 Die Datenbank ist noch eine weitere Ebene der Verteidigung für die Richtigkeit 733 00:40:40,000 --> 00:40:44,000 um sicherzustellen, dass doppelte E-Mail-Adresse nicht am Ende in der Tabelle. 734 00:40:44,000 --> 00:40:49,000 >> Jetzt hingegen, für den Sie wahrscheinlich nicht wollen, dass so einzigartig machen 735 00:40:49,000 --> 00:40:51,000 denn dann könnte es nie 2 Davids oder 2 Mike Smiths zum Beispiel sein, 736 00:40:51,000 --> 00:40:55,000 in Ihrer Datenbank, so dass man wir einfach in Ruhe lassen. 737 00:40:55,000 --> 00:40:58,000 Ich werde weitermachen und klicken Sie auf Speichern unten rechts, 738 00:40:58,000 --> 00:41:02,000 und alles sieht gut aus, aber bemerken hier 739 00:41:02,000 --> 00:41:04,000 Dies ist ein Teil, das jetzt werden wir nicht zu viel Zeit auf 740 00:41:04,000 --> 00:41:07,000 weil die Syntax ist ein wenig komplex, und wir haben nicht zum Erstellen von Tabellen 741 00:41:07,000 --> 00:41:10,000 allzu oft, aber SQL selbst ist eine Sprache, 742 00:41:10,000 --> 00:41:13,000 Die Syntax für die ist hier richtig, dass ich hervorgehoben. 743 00:41:13,000 --> 00:41:18,000 Was phpMyAdmin wirklich tut, ist es schafft eine Web-basierte GUI für Sie 744 00:41:18,000 --> 00:41:23,000 , mit denen Sie Zeit sparen und nicht manuell abtippen 745 00:41:23,000 --> 00:41:26,000 eine ziemlich lange SQL-Abfrage so. 746 00:41:26,000 --> 00:41:29,000 >> In anderen Worten, wenn man wollte manuell erstellen diese Tabelle, 747 00:41:29,000 --> 00:41:32,000 entweder auf dem schwarzen und weißen Eingabeaufforderung oder sogar in phpMyAdmin 748 00:41:32,000 --> 00:41:35,000 mit diesem anderen Reiter, diese Registerkarte SQL, wo Sie können in beliebigen SQL-Abfragen eingeben 749 00:41:35,000 --> 00:41:38,000 Sie wollen, ehrlich gesagt, das wäre mir genommen habe eine Minute 750 00:41:38,000 --> 00:41:41,000 tatsächlich erinnern die gesamte Syntax, und selbst dann würde ich wahrscheinlich haben 751 00:41:41,000 --> 00:41:45,000 machte einige Tippfehler, so ist dieses Tool für Dinge wie, dass nützliche, und es ist auch lehrreich. 752 00:41:45,000 --> 00:41:49,000 Sie können beginnen, zu folgern, was die Syntax ist 753 00:41:49,000 --> 00:41:52,000 nur durch die schöne Farbcodierung, dass phpMyAdmin ist das Hinzufügen 754 00:41:52,000 --> 00:41:54,000 für unsere visuellen Komfort. 755 00:41:54,000 --> 00:41:56,000 Aber jetzt lasst uns dies tun statt. 756 00:41:56,000 --> 00:42:00,000 Lassen Sie mich auf die Registerkarte Einfügen oben gehen, und lassen Sie mich gehen Sie vor und legen Sie zum Beispiel 757 00:42:00,000 --> 00:42:04,000 eine ID von sagen wir mal, eigentlich ist mir egal. 758 00:42:04,000 --> 00:42:07,000 Es ist auf Autoinkrement gehen. Ich werde die Datenbank sich mit diesem zu lassen. 759 00:42:07,000 --> 00:42:11,000 Aber ich werde David sein, und meine E-Mail sollte malan@harvard.edu sein. 760 00:42:11,000 --> 00:42:16,000 >> Fahren wir fort hier und in Mike Smith als einer anderen. 761 00:42:16,000 --> 00:42:18,000 Ich gebe mir einen Nachnamen sowie, 762 00:42:18,000 --> 00:42:22,000 und wir haben ihn smith@example.com sein, 763 00:42:22,000 --> 00:42:24,000 und dann, wo ich weiter gehen? 764 00:42:24,000 --> 00:42:27,000 Nun, es sieht aus wie gehen die Schaltfläche zu klicken und voila ist. 765 00:42:27,000 --> 00:42:30,000 Beachten Sie in den oberen 2 Zeilen eingefügt. 766 00:42:30,000 --> 00:42:32,000 Dies ist die eigentliche SQL-Abfrage. 767 00:42:32,000 --> 00:42:36,000 Das ist das phpMyAdmin-Tool für mich ausgeführt, 768 00:42:36,000 --> 00:42:40,000 aber das Endergebnis, Kündigung, wenn ich jetzt auf die Registerkarte Durchsuchen gehen, 769 00:42:40,000 --> 00:42:43,000 zu 2 Zeilen in dieser Tabelle sehen, erinnert sehr ästhetisch 770 00:42:43,000 --> 00:42:46,000 der Tabelle sahen wir früher für unsere Nutzer vor pset 7, 771 00:42:46,000 --> 00:42:51,000 Einer von ihnen ist David Malan, von denen jetzt Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Aber nur klar zu sein, brauche ich nicht zu phpMyAdmin verwenden, 773 00:42:54,000 --> 00:42:56,000 und in der Tat, du wirst bald Schreiben von Code für pset 7 774 00:42:56,000 --> 00:43:01,000 das automatisiert den Prozess der das Hinzufügen von Zeilen, Löschen von Zeilen, das Aktualisieren von Zeilen und dergleichen, 775 00:43:01,000 --> 00:43:04,000 so lassen Sie mich stattdessen auf die Registerkarte SQL gehen hier 776 00:43:04,000 --> 00:43:14,000 und geben Sie select * from Studenten, wo 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> In anderen Worten nehme jetzt haben Sie 779 00:43:21,000 --> 00:43:26,000 Einige HTML-Formular, und die Benutzer in ihrer E-Mail-Adresse, unter anderen Bereichen, 780 00:43:26,000 --> 00:43:29,000 und das Ziel ist jetzt in PHP auf dem Back-End-Code 781 00:43:29,000 --> 00:43:31,000 tatsächlich schauen dieses Benutzers andere Details. 782 00:43:31,000 --> 00:43:34,000 Was ist Ihr voller Name? Was ist Ihre ID-Nummer? 783 00:43:34,000 --> 00:43:37,000 Sie könnten eine SQL-Abfrage wie dies schreibe, select * from Studenten 784 00:43:37,000 --> 00:43:40,000 wo email = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Und wenn ich dann auf zu gehen, feststellen, dass ich, ja ich weiß, wieder nur eine Zeile. 786 00:43:46,000 --> 00:43:50,000 Mike wird aus diesem Ergebnis Satz weggelassen, da die Sammlung von Zeilen 787 00:43:50,000 --> 00:43:53,000 wird in der Regel genannt, weil er nicht über die gleiche E-Mail-Adresse als mich. 788 00:43:53,000 --> 00:43:57,000 >> Jetzt wieder hier für pset 7 Sie phpMyAdmin als administratives Tool verwenden 789 00:43:57,000 --> 00:44:00,000 und ein pädagogisches Instrument zu lernen Ihren Weg 790 00:44:00,000 --> 00:44:03,000 weltweit von SQL, aber am Ende des Tages 791 00:44:03,000 --> 00:44:08,000 du gehst zu werden schreibe diese Abfragen innerhalb der tatsächlichen PHP-Code, 792 00:44:08,000 --> 00:44:11,000 und so in Zamyla die Komplettlösung insbesondere dran bleiben 793 00:44:11,000 --> 00:44:14,000 wo Sie einen Rundgang durch die Verteilung Code für dieses Problem Set zu bekommen 794 00:44:14,000 --> 00:44:18,000 wo wir Ihnen nicht nur die Ästhetik gegeben für die Login-Seite 795 00:44:18,000 --> 00:44:21,000 und das schöne sexy Logo, das CS50 Finance sagt, aber wir haben auch euch gegeben 796 00:44:21,000 --> 00:44:24,000 eine Reihe von Funktionen, die Ihnen das Leben ein bisschen leichter wird. 797 00:44:24,000 --> 00:44:27,000 Wir haben auch ein Teil der pset für Sie geschrieben, 798 00:44:27,000 --> 00:44:32,000 die Anmeldung Teil davon insbesondere, um Ihnen ein Gefühl von einer repräsentativen Design 799 00:44:32,000 --> 00:44:36,000 das tatsächlich verwendet einen Controller, beispielsweise index.php, 800 00:44:36,000 --> 00:44:40,000 login.php und dergleichen, und dann wirst du sehen das pset hat auch eine Vorlagen-Verzeichnis 801 00:44:40,000 --> 00:44:43,000 das hat alle Ihre Ansichten, die alle die Ästhetik. 802 00:44:43,000 --> 00:44:46,000 Und so ist die gesamte Workflow in pset 7 wird das sein 803 00:44:46,000 --> 00:44:49,000 Ihre Nutzer besuchen eine Steuerung über eine URL in einem Browser. 804 00:44:49,000 --> 00:44:53,000 Das Controller enthält PHP-Code, den Sie geschrieben haben, und innerhalb Ihrer PHP-Code 805 00:44:53,000 --> 00:44:57,000 könnten einige Zeilen von SQL verschachtelt zwischen doppelte Anführungszeichen 806 00:44:57,000 --> 00:45:00,000 und an eine Funktion übergeben schrieben wir als query 807 00:45:00,000 --> 00:45:03,000 das wird Ihnen helfen, die Datenbank zu sprechen, ohne mit so etwas wie 808 00:45:03,000 --> 00:45:05,000 ein Administrations-Tool wie phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Du wirst in der Lage sein, SQL-Anweisungen in PHP-Code schreiben 810 00:45:08,000 --> 00:45:11,000 und wieder ein PHP-Array der Ergebnismenge, 811 00:45:11,000 --> 00:45:14,000 Zeilen, die auch wirklich zueinander passen diese Abfrage. 812 00:45:14,000 --> 00:45:18,000 Und ähnlich werden Sie in der Lage sein, um Einsätze oder löscht tun 813 00:45:18,000 --> 00:45:22,000 oder Updates oder dergleichen, die Syntax für die ziemlich ähnlich ist, 814 00:45:22,000 --> 00:45:25,000 und du wirst von einigen Online-Referenzen zu sehen, aus dem Code der Verteilung 815 00:45:25,000 --> 00:45:29,000 und aus dem pset Pack selbst genau, wie man über das Tun, dass zu gehen. 816 00:45:29,000 --> 00:45:33,000 Erkenne letztendlich wir wirklich nur an der Oberfläche kratzen von SQL 817 00:45:33,000 --> 00:45:36,000 und MySQL, aber die Macht der es wirklich ist, dass Sie frei 818 00:45:36,000 --> 00:45:40,000 auf die Probleme, die Sie lösen wollen konzentrieren, die Anwendungsfälle Sie implementieren möchten 819 00:45:40,000 --> 00:45:43,000 ohne ganz so viel Sorgen, zumindest früh, 820 00:45:43,000 --> 00:45:47,000 darüber, wo und wie zu speichern und durchsuchen Sie Ihre Datenbank, 821 00:45:47,000 --> 00:45:50,000 und das ist ganz wörtlich, wo Facebook selbst hat seinen Anfang 822 00:45:50,000 --> 00:45:53,000 MySQL und dann mit mehr MySQL-Servern und dann mehr MySQL-Server 823 00:45:53,000 --> 00:45:57,000 es dauerte nicht lange, bis sie dann musste wirklich anfangen zu denken intensiv darüber, wie man 824 00:45:57,000 --> 00:46:00,000 Daten speichern, wie man die Dinge noch effizienter zu speichern, 825 00:46:00,000 --> 00:46:04,000 so, obwohl wir für selbstverständlich halten, dass Indizes und Unique-Einschränkungen 826 00:46:04,000 --> 00:46:08,000 und so weiter nur Arbeit gibt es ein sehr interessantes Gespräch 827 00:46:08,000 --> 00:46:12,000 dass dies alles schließlich zu führen, so klar, dass wir nur an der Oberfläche kratzen 828 00:46:12,000 --> 00:46:17,000 was könnte schließlich für Sie oder Ihre Projekte werden ganz ein bisschen von großen Daten. 829 00:46:17,000 --> 00:46:22,000 >> Mit dieser sagte, lasst uns hier zu Ende, und wir sehen uns nächste Woche. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]