[Powered by Google Translate] [Woche 9] [David J. Malan - Harvard University] [Dies ist CS50. - CS50.TV] Gut. Willkommen zurück. Dies ist CS50, und dies ist der Beginn der Woche 9. Heute sind wir in besonderem Schwerpunkt auf Design, nicht mehr im Rahmen der C aber im Kontext von PHP und ein wenig SQL und ein wenig JavaScript, besonders in Richtung eines Endes der beiden pset 7 und auch das endgültige Projekt. In der Tat, wenn Sie an dieser Stelle in das endgültige Projekt wo vermutlich als einer Stunde oder so vor Ihnen zumindest begonnen, sich Gedanken zu geben Ihre endgültige Projekt und du denkst, du würdest gerne mit 1 oder 2 Klassenkameraden zusammenarbeiten, wenn Sie Probleme mit der Verbindung mit dem Klassenkameraden, fühlen Sie sich frei, füllen Sie das Formular auf cs50.net/partners/form. Es fragt nur, wer du bist, welche Art von Projekt Sie über das Denken, wo Sie leben nur aus logistischen Gründen. Und dann, wenn Sie im Auge behalten in der nächsten Woche oder so der Tabellenkalkulation URL gibt, Sie können dann eine Nur-Lese-Version des Google doc in denen wir sammeln diese Informationen. Also, wenn Sie mit jemandem arbeiten wollen, mit allen Mitteln zögern Sie nicht auf die Menschen zugehen über diesen Mechanismus. Aber die Mehrheit der Leute tun Arbeit solo. Das ist völlig in Ordnung. Also nicht das Gefühl, dass dies in keiner Weise verpflichtend ist. Am Freitag war es nur mich und ein paar der Team hier leeren Theater zum größten Teil. Es wurden 3 Touristen up sitzen, das war also ein wenig umständlich. Was wir darüber gesprochen war Datenbanken und wir sprachen über pset 7 ein wenig. Und wenn Sie nicht zufällig, dass auf Video nur noch zu fangen, ist das in Ordnung. Ich werde versuchen, alle Begriffe zu definieren, dass wir sonst für selbstverständlich basierend auf Freitag Vortrag. Aber heute werden wir versuchen, Sie auf den Punkt kommen der nicht nur in der Lage, so etwas wie pset 7 do aber wirklich zu verstehen, was los ist unter der Haube, Besonders einige der Abstraktionen, dass wir in Kraft gesetzt in der functions.php-Datei um euer Leben ein bisschen einfacher, aber so, dass Sie letztlich zu verstehen so dass, wenn die Stützräder off kommen in ein paar Wochen kann man noch überleben in der realen Welt und machen dieses Zeug ohne CS50 Rahmen unter Ihnen. Diese $ _SESSION, für diejenigen von euch, die vertraut sind oder wer bereits gefangen das Video am Freitag, was bedeutet SESSION lassen Sie uns in einer PHP-basierte Web-Anwendung? Dies ist eine superglobal Variable, die es im Geiste gleich GET und POST bedeutet, und ein paar andere, aber was ist dieses Ding geeignet? Was ist SESSION verwendet? Yeah. [Schüler] Logging in. Sorry? [Schüler] Logging in. Logging in. In der Tat. In pset 7 verwenden wir diese SESSION superglobal zu erleichtern Logging in. Und was ist schön zu dieser superglobal ist, dass es ein assoziatives Array ist. Ein assoziatives Array, Rückruf, ist nur ein Array, aber deren Indizes nicht mehr Zahlen wie 012. Sie können Zahlen sein, oder sie können sogar Strings sein. Und so, wenn Sie in pset 7 tauchten schon besitzen, können Sie sich erinnern, dass wir speichern einen Schlüssel namens ID Innere dieses assoziatives Array, dessen Wert ist so etwas wie 123 - was die derzeit in Benutzer-ID angemeldet ist. Die Motivation dafür besteht darin, dass auch nach der Benutzer besucht localhost oder meine Website mehr allgemein und dann haben sie angemeldet auch wenn sie nicht auf einen Link klicken oder zurück zu meiner Website für 5 Minuten oder sogar eine Stunde oder sogar einen Tag, aber sie lassen ihre Browser-Fenster geöffnet, über diese superglobal kann ich mich erinnern, dass sie angemeldet sind in. In anderen Worten, erlaubt es mir leicht langfristige was ich will über einen Benutzer zu speichern. Und Sie können es wirklich als Inkarnation eines Einkaufswagens. Orte wie Amazon natürlich können Sie die Dinge in einem Einkaufswagen, aber HTTP, das Protokoll, die Befugnisse der Web, ist staatenlos in dem Sinne, dass, wenn Sie eine Website besuchen, zum größten Teil Sie nicht über einige konstante Netzwerkverbindung zwischen Ihrem Browser und dem Server. Sobald Sie haben das HTML und die JPEGs und die GIFs heruntergeladen und all das, die Verbindung geht weg und Sie müssen nur eine Kopie der Datei und so weiter aus dem Server. Aber wenn der Server will etwas über dich erinnern, die Last auf dem Server tatsächlich aufnehmen, dass die Informationen. Und so der Programmierer, der die Kontrolle über den Server haben können die meisten, was Sie wollen hineinlegen dieser superglobal assoziatives Array und es wird dort das nächste Mal der Benutzer kommt zurück, ob es sich um Minuten oder sogar Tage später, wenn sie ihre Browser-Fenster schließen, an welcher Stelle SESSION verschwindet. So vergänglich Speicher, es ist non-persistent, und es soll weg sobald der Benutzer schließt seinen Browser - nicht nur, dass Reiter, die oft das gesamte Browser, dadurch wirksam Anmeldung des Benutzers aus. Also, wie ist das Ding tatsächlich umgesetzt? Werfen wir einen kurzen Blick auf ein einfaches Beispiel wir am Freitag sah. Für die Leser, es war so einfach wie diese. Dies ist eine Web-Seite, deren einziger Zweck im Leben ist, mir zu sagen, wie oft habe ich diese Seite besucht. Dies ist das erste Mal hier am Montag, dass ich sie besuchte, so heißt es 0 mal. Aber wenn ich diese Seite neu laden zu starten, heißt es 1 Mal, 2, 3, 4, 5, und dies wird schließlich nur auf das Zählen bis zu halten, up, up, up, up für jedes Mal, wenn ich tatsächlich klicken Sie darauf laden. Also, wie ist diese Arbeit? Lassen Sie mich reingehen dieser Datei aufgerufen counter.php. Der obere Teil ist es alle blauen Kommentare, aber der interessante Teil ist hier. In Zeile 13 rufen wir diese Funktion session_start, und das ist wörtlich alles, was Sie tun müssen, wenn Sie den Zugriff haben wollen um diese spezielle superglobal namens $ _SESSION. Das macht es möglich, und wir werden in einem Moment, wie das alles möglich zu sehen. In Zeile 16 bemerken, was ich tue. Wenn der Schlüssel, genannt Zähler - mit anderen Worten: der Indexwert - "counter" existiert innerhalb dieses Array namens SESSION, dann was mache ich mit ihm in der Zeile darunter? Was ist Zeile 18 zu tun? [Unverständlich Studenten Antwort] Was ist das? [Schüler] Speichern des Wertes. Gut. Es speichert den Wert, der in SESSION ist jetzt in einer neuen lokalen temporären Variablen, $ Counter in Kleinbuchstaben. Beachten Sie, dass PHP wird bereits ein wenig faul hier. Beachten Sie, wir haben keine Erwähnung von int oder float oder String oder so etwas weil PHP schwach typisiert wird, wobei man nicht um den Typ einer Variablen angeben, und in diesem Fall hier habe ich noch nicht einmal erklärt, es noch nicht. Ich erkläre es innerhalb dieser geschweiften Klammern und im Gegensatz zu C, das ist eigentlich okay. Egal wie tief eine variable Erklärung verschachtelt ist in PHP - Innere geschweiften Klammer, innerhalb der geschweiften Klammer und dergleichen - es wird in diesem Moment in der Zeit für den Rest des Programms vorhanden ist, zum Besseren oder zum Schlechteren. So wird es sofort global, sobald Sie es definieren, wie wir hier sind. Ansonsten, wenn ich nicht feststellen, dass es etwas gibt in der SESSION superglobal, Ich bin anscheinend der Initialisierung dieses variable Zähler auf 0, dabei ebenso vorausgesetzt, der Benutzer hat nie hier gewesen. Und dann dies natürlich wird Inkrementieren des Zählers, wie? Ich bin Aktualisierung der Wert, der im Inneren ist dieses assoziativen Arrays indem sie gleich, was Zähler derzeit + 1. Wenn ich hier unten scrollen, um den HTML-Code der Seite, es ist eigentlich ziemlich einfach. Alles, was ich in den Körper dieser Seite ist: "Sie haben diese Seite so-und-so-mal besucht." Und dies ist ein PHP Konstrukt. Wenn Sie das tun