[Παίζει μουσική] 

David J. Malan: Εντάξει. Αυτό είναι CS50. Αυτή είναι η αρχή της εβδομάδας οκτώ. Και ίσως θυμάστε ότι είχαμε μείνει τελευταία φορά που κοιτάζει μια νέα γλώσσα συνολικά. Στην πραγματικότητα, το ένα που είναι αρκετά ελαφρύ και δεν είναι ακόμη μια γλώσσα προγραμματισμού. Είναι μια γλώσσα σήμανσης που μας επιτρέπει στην πραγματικότητα δομή και ιστοσελίδες. Και όταν έχετε κάτι άλλο σε συνδυασμό με this-- ή σύντομα θα, εάν δεν έχετε ήδη. Εμείς πάμε για να χρησιμοποιήσετε Cascading Style Sheets ή CSS, η οποία είναι ένας άλλος τύπος της γλώσσας με τις ιδιότητες και τις αξίες ότι πρόκειται να ας κάνουμε πράγματα ήθελε να αλλάξει το χρώμα και να αλλάξετε τη θέση και αυτού του είδους τα τσιμπήματα. Αλλά σήμερα και μετά, αρχίζουμε να επικεντρωθεί σε πιο ισχυρές γλώσσες, πραγματικές γλώσσες προγραμματισμού, όπως η PHP. 

Έτσι η PHP έχει εδώ και αρκετό καιρό. Και όπως θα δείτε, το σχεδιάστηκε κατά κύριο λόγο νωρίς για την πραγματική χρήση σε ανάπτυξη ιστοσελίδων και στην πραγματικότητα δημιουργία ιστοσελίδων. Έτσι, τι είδους χαρακτηριστικά κάνει μια γλώσσα χρειάζεται προκειμένου να κάνει το web σελίδες δυναμικά με αυτό; 

Με άλλα λόγια, εάν θέλετε να δημιουργήσετε περιεκτικότητα dynamically-- όπως του Facebook Newsfeed, που αλλάζει συνεχώς, ή στιγμιαία μηνύματα που ξεπροβάλλουν από το χρόνο να time-- όπως ποια είναι η βασικό κομμάτι της λειτουργικότητας χρειάζεστε σε μια γλώσσα προγραμματισμού που θα σας αφήσει δυναμικά εκτυπώσετε τις νέες πληροφορίες στην οθόνη; 

ΜΑΘΗΤΗ: Κωδικός. David J. Malan: Κωδικός. ΟΚ. Θα πάρει αυτό. Λίγο πιο ακριβή. Θέλω να πω, θα μπορούσαμε να κάνουμε Αυτό με C, ειλικρινά. Θα ήταν ένας πόνος στο λαιμό. But-- είναι αυτή η δέσμευση; 

Φοιτητής: Ναι. Μεταβλητές, ίσως; David J. Malan: Μεταβλητές. Εντάξει, σίγουρα. Οι μεταβλητές μπορούν σίγουρα να μας βοηθήσει. Και ακόμα κάτι πιο απλό. Εμείς αυτό που χρησιμοποιείται στην πρώτη πρόγραμμα την πρώτη κιόλας μέρα όταν έχουμε πραγματικά είπε "Hello World". 

Φοιτητής: Εκτύπωση. 

David J. Malan: Εκτύπωση, σωστά; Εκτύπωση, ή printf στο κόσμο του C. Έτσι, όλο αυτό το διάστημα, είχαμε σε μας διάθεσης μια language-- C, σε particular-- και ακόμη Scratch για το συγκεκριμένο θέμα που μπορεί να δημιουργήσει χορδές του κειμένου. 

Λοιπόν, εάν HTML, όπως είδαμε την περασμένη εβδομάδα, είναι μόλις ένα σωρό χορδές του κειμένου έστω και με ανοιχτή παρένθεση και έκλεισε παρένθεση και κάποιο είδος της ομοιοκαταληξίας και ο λόγος πίσω από αυτό, καλά τότε θα μπορούσαμε πραγματικά να αρχίσει να παράγει ιστοσελίδες, είτε χειροκίνητα πληκτρολογώντας τους στο gedit ή στο Microsoft Word, γι 'αυτό matter-- χρειαζόμαστε μόνο ένα πρόγραμμα επεξεργασίας κειμένου. 

Ή θα μπορούσαμε να γράψουμε κώδικα, στην πρότασή σας νωρίτερα, ότι θα μας αφήσει δυναμικά παράγουν HTML, και αυτό είναι που θα πάμε να αρχίσουν να κάνουν με την PHP και, τελικά, ακόμη και με ένα γλώσσα που ονομάζεται το JavaScript, είναι να χρησιμοποιήσετε μια γλώσσα για να δημιουργήσει ένα άλλο. Και πράγματι, αυτό είναι ό, τι το Facebook και πολλά, πολλά άλλα sites κάνουν πραγματικά να δυναμικά εμφανίζουν νέες πληροφορίες για εσάς. 

Ας αρχίσουμε με this-- ένα αινιγματικό γραμμή που αναζητούν, αλλά ένα ότι στην πραγματικότητα είναι αρκετά ισχυρό. Μέχρι στιγμής, έχουμε χρησιμοποιήσει C, το οποίο είναι ένα καταρτίζονται γλώσσα. Και μόνο μια γρήγορη recap-- ένα μεταγλωττισμένο γλώσσα έχει ποια χαρακτηριστικά; Θα πρέπει προφανώς να καταρτίζουν αυτό, αλλά τι σημαίνει αυτό; Ναι; 

Φοιτητής: Πρέπει να είναι συναρμολογούνται σε κώδικα μηχανής. 

David J. Malan: ΟΚ. Θα πρέπει να συναρμολογηθούν σε κώδικα μηχανής. Έτσι θα πάρετε τον πηγαίο κώδικα σας, η οποία είναι το είδος της αγγλικής-όπως. Μπορείτε να μετατρέψετε ότι σε κάτι χαμηλότερο επίπεδο, το οποίο τελικά ονομάζεται αντικείμενο code-- 0 και 1 του. Και είναι αυτά τα 0 και 1, ότι μία CPU, όπως εκείνες που γίνονται από την Intel, πραγματικά καταλαβαίνουν. 

Τώρα, PHP και Python και Ruby και JavaScript και τσαμπιά των άλλων γλώσσες δεν καταρτίζονται γλώσσες, αλλά ερμηνευμένες γλώσσες, το οποίο σημαίνει απλά πληκτρολογείτε και, στη συνέχεια, δεν τους μετατρέψει σε 0 και 1 του. Μπορείτε, αντί απλά να παρέχει στη συνέχεια ως είσοδος στο πρόγραμμα κάποιου άλλου, ονομάζεται ένα διερμηνέα. Και ότι ατόμου το πρόγραμμα έχει σχεδιαστεί να καταλάβει τι το καθένα και κάθε σύμβολο σε Python και PHP ή Ruby ή οποιοδήποτε αριθμό άλλες γλώσσες σημαίνει. 

Και έτσι το μόνο που χρειαζόμαστε είναι κάτι σαν αυτό. Έτσι, στην πραγματικότητα, Πάω να πάει πάνω στη συσκευή Εδώ, ακριβώς σε οποιαδήποτε παλιό παράθυρο, και είμαστε πρόκειται να προχωρήσει και ανοικτό ένα αρχείο με όνομα, ας πούμε, γεια. Τώρα, στο παρελθόν, θα μπορούσα να έχω σωθεί Αυτό ακόμη και με την επέκταση του αρχείου, αλλά Πάω να κάνω κάτι ακόμα πιο απλό εδώ. Πάω να προχωρήσει και να αρχίσει Αυτό το αρχείο με αυτό το αινιγματικό σύνταξη. Έτσι "χρήστη, bin, env, για το περιβάλλον, php. " 

Αυτό είναι απλά μια γραμμή κώδικα που είναι πρόκειται να πει το λειτουργικό μου σύστημα, πηγαίνετε να βρείτε στο τοπικό σας περιβάλλον, όποια και αν είναι, όπου PHP is-- την interpreter-- και να προχωρήσει και να χρησιμοποιεί το εν λόγω διερμηνέα να ερμηνεύσει τον παρακάτω κώδικα. Τώρα, αυτό είναι το είδος του ένα άσχημο χαρακτηριστικό της PHP. Αλλά σε αυτή τη γλώσσα, οποιαδήποτε φορά που γράφετε κώδικα PHP, θα πρέπει να έχετε ένα από αυτά τα άσχημα Ετικέτες PHP που οριοθετούν την αρχή του code-- <? php σας. 

Αλλά κάτω από εδώ, μπορώ να κάνω κάτι τώρα αρκετά απλή, όπως printf γεια κόμμα κόσμο backslash n κλείσιμο παραθέτω, κοντά παρένθεση. Και τότε μόνο για καλό μέτρο, Πάω να προχωρήσει και κοντά PHP tag μου εδώ έτσι ώστε όλα τα βλέμματά όμορφα όμορφα τυπωμένο. 

Και μόλις κάνω κλικ στο κουμπί Αποθήκευση, Το gedit είναι αρκετά πραγματικά έξυπνη να εξετάσουμε αυτό το πρώτο κιόλας γραμμή και συνειδητοποιούν, ω, είστε σύνταξη κώδικα PHP. Επιτρέψτε μου να τονίζουν σύνταξη με τα χρώματα εδώ έτσι ώστε να στέκεται έξω λίγο περισσότερο. Αλλά τώρα είμαι πρόκειται να πάει κάτω στο παράθυρο του τερματικού μου. Θα μεγέθυνση. 

Το πρόγραμμα αυτό ονομαζόταν "γεια" έτσι Πάω να κάνω dot κάθετος Γεια σας, αλλά δεν επιτρέπεται η πρόσβαση. Και το bash. Είμαστε πραγματικά ακούσει ότι Πριν πράγμα μια-δυο εβδομάδες στο πλαίσιο της Shellshock, ένα από αυτά τα σφάλματα. 

Αλλά αρνήθηκε την άδεια που έχουμε δει πριν, ίσως σε ένα διαφορετικό πλαίσιο. Υπάρχει κάποιος που θυμηθούμε πώς μπορείτε να διορθώσετε κάτι όπου δεν δίνεται άδεια σαν αυτό; Ποια είναι η εντολή, τουλάχιστον; 

Φοιτητής: Chmod. David J. Malan: Ναι, chmod, για την αλλαγή της λειτουργίας ενός αρχείου. Και θα έχετε όλα τα πιο χρησιμοποιούνται για την αυτό την επόμενη εβδομάδα με μια επακόλουθη πρόβλημα ρυθμιστεί. Αλλά για τώρα, εγώ είμαι πρόκειται να αλλάξει η λειτουργία να μην είναι αναγνώσιμα, αλλά να δώσει ο καθένας executeability προνόμια, η ικανότητα για να εκτελέσετε αυτό το αρχείο. Και Πάω να εκχωρήσετε ότι στο αρχείο γεια. 

Αν κάνω τώρα dot κάθετος γεια εισάγετε, μπορείτε βλέπετε, στην πραγματικότητα, το πρόγραμμα μου, γεια σου κόσμο. Και τι έκανα το βήμα σαφώς παραλείψετε εντελώς; Μεταγλώττιση. Έτσι έτρεξα ακριβώς αυτό το πρόγραμμα πολύ απλά. 

Και αυτό αποδεικνύεται μπορείτε να το κάνετε αυτό με πολλοί σύνταξη θυμίζει C. Επιτρέψτε μου να πάω στο στο σημερινό κώδικα, το οποίο θα τεθεί σε κατάλογο vhost μου εδώ, για πραγματικούς λόγους θα επανέλθω. Και Πάω να μπω σε, ας πούμε, τους όρους 1. 

Και θα δείτε εδώ, πρώτο και απ 'όλα, ένα σωρό σχόλια. Αλλά αυτό είναι στην πραγματικότητα μια εκ νέου δημιουργία στην PHP ενός προγράμματος που κάναμε στην εβδομάδα μία που ονομάζεται συνθήκες 1.γ όπου το σκοπό ζωή του εν λόγω προγράμματος είναι προφανώς να ρωτήσω ο χρήστης για έναν ακέραιο και στη συνέχεια να κάνετε κάποια αφράτα ανάλυση σχετικά με αυτό σύμφωνα με την οποία λέτε αν είναι θετικό ή αρνητική ή ίση με μηδέν. Και Φέρνω αυτό επάνω μόνο επειδή, εκτός ίσως για μία μικρή λεπτομέρεια, είναι δυσδιάκριτες τόσο μακριά από C. 

Ποιο είναι το πιο χαρακτηριστικό εδώ ότι ίσως πηδά έξω σε σας ως ένα λίγο διαφορετικό; Ίσως δύο πράγματα. Ναι; 

Φοιτητής: σύμβολο του δολαρίου n; 

David J. Malan: Ναι. Έτσι, το σύμβολο του δολαρίου n είναι παρούσα. Και το σύμβολο του δολαρίου, όπως θα δούμε, πρόκειται να είναι μια λύση στην αρχή κάθε μεταβλητής στην PHP. Είναι τόσο καλό και bad-- καλό στο ότι αυτό είναι το είδος του προφανές τι είναι μια μεταβλητή, κακό το ότι είναι ένα ακόμη πράγμα που πρέπει να πληκτρολογήσετε. Και υπάρχει ένα άλλο πράγμα που δεν έχουμε αρκετά φαίνεται, τουλάχιστον από αυτή την ορθογραφία. ναι; 

ΜΑΘΗΤΗ: Readline. 

David J. Malan: Readline. Η Readline δεν είδαμε, αυτή καθαυτή, στην C, ακόμη και αν υπάρχει κάτι παρόμοια, αλλά έχουμε χρησιμοποιήσει getstring, και αυτό είναι ομόλογό του. Έτσι αν πάω σε αυτό κατάλογο, ο οποίος συμβαίνει να είναι, όπως θα εξηγήσω σε λίγο στο vhost μου καταλόγου και πηγή μου Ένας κατάλογος, και πάω μπροστά και να κάνουμε dot κάθετος conditions-- whoops-- κάθετος τελεία προϋποθέσεις 1, θα δείτε, και πάλι, η ίδια issue-- permission denied. 

Έτσι, επιτρέψτε μου να μεγεθύνετε και να κάνουμε chmod ένα συν x για τους όρους, τις συνθήκες dot κάθετος. Θα ήθελα έναν ακέραιο, παρακαλούμε, 50. Και θα μπορούσαμε να παίξει αυτό παιχνίδι όλη την ημέρα. Είναι πρόκειται να συμπεριφέρονται ακριβώς όπως έπραξε σε μία εβδομάδα. 

Εντάξει, έτσι δεν είναι όλα τόσο διαφορετικά, με εξαίρεση όχι μόνο ότι η μικρή κομμάτι της σύνταξης, αλλά στην κορυφή, εγώ πάλι είχε αυτή τη γραμμή η οποία μου επέτρεψε να δημιουργήσω κάτι που Μοιάζει με ένα πρόγραμμα C που ονομάζεται Γεια σας, ονομάζεται προϋποθέσεις 1. Αλλά δεν είναι 0 και αυτά Είμαι άμεση εκτέλεση. Είναι αντίθετα τρέχει αυτό διερμηνέα του οποίου το όνομα συμβαίνει να είναι ταυτόσημη με τη γλώσσα. Το πρόγραμμα ονομάζεται PHP, και τον κωδικό μου κάτω από μία γραμμή που έχει περάσει σε αυτό. 

Μπορούμε να κάνουμε μια άλλη αρκετά απλή παράδειγμα θυμίζει κάτι κάναμε πριν μερικές εβδομάδες. Και πάλι, αυτό είναι ένα είδος του αυθαίρετη κομμάτι του κώδικα ότι προφανώς δεν ό, τι όταν το τρέξετε; Τι είναι αυτό πρόκειται να εκτυπώσετε, προφανώς; 

Αρχικά, λοιπόν, στη γραμμή 16, είναι πρόκειται να πω X είναι τώρα 2, κατά πάσα πιθανότητα. % D είναι η ίδια όπως $ i για printf. Άρα, λοιπόν, είναι cubing, τελεία, τελεία, τελεία, στη γραμμή 17. Και στη συνέχεια, γραμμή 18 εμφανίζεται για να καλέσετε μια συνάρτηση κύβους. Και όπου ορίζεται κύβους; 

Λοιπόν, αυτό μοιάζει με γραμμή 25, έτσι ώστε να μην είναι όλα τόσο διαφορετικά. Έχω κάποια σχόλια πάνω αυτό, αλλά για το μεγαλύτερο μέρος, είναι μια αρκετά απλή Η μεταφορά ή μετατροπή από το Γ πρόγραμμα για την έκδοση της PHP. Αλλά τώρα υπάρχουν μια-δυο διαφορές που ίσως θα πρέπει να πηδούν έξω. Τι άλλο είναι διαφορετικό για το πώς θα θα μπορούσε να γράψει αυτό το ίδιο πρόγραμμα σε C; 

Φοιτητής: [δεν ακούγεται]. 

David J. Malan: Δεν υπάρχει Δεν πρωτότυπο επάνω στην κορυφή. Έτσι PHP-- και ειλικρινά, ένας πολλά σύγχρονα languages-- είναι πολύ πιο έξυπνη και πιο χρήσιμες από C compilers σε ότι σας μπορεί να θέσει τη λειτουργία μέχρι εδώ, μπορείτε να βάλετε μια λειτουργία εδώ κάτω, και ο διερμηνέας θα για να κάνετε την εύνοια της ανάγνωσης ολόκληρο το αρχείο πριν να αποφασίσει ότι κάποια λειτουργία δεν υπάρχει. Τόσο ωραίο βελτιώσεις χρόνια αργότερα. Αλλά υπάρχει και κάτι άλλο διαφορετικό ή απουσιάζει εδώ. Ναι; 

Φοιτητής: [δεν ακούγεται]. David J. Malan: Εμείς δεν χρειάζεται να δηλώνουν τους τύπους των μεταβλητών, έτσι θα δούμε πριν από καιρό ότι υπάρχουν διαφορετικοί τύποι σε PHP, αλλά δεν χρειάζεται να τα προσδιορίσει, η οποία επίσης είναι και καλό και κακό. Και υπάρχει ένα άλλο πράγμα που λείπει. 

Φοιτητής: Δεν υπάρχει καμία βιβλιοθήκες. 

David J. Malan: Δεν υπάρχουν βιβλιοθήκες. Εντάξει, έτσι ώστε να είναι ωραίο. Έχουμε πάρει πολλά περισσότερα από το κουτί. Έτσι, υπάρχει πράγματι μια πολύ πιο τα πράγματα από ό, τι νόμιζα ότι ήταν διαφορετική. Πόσο περίπου τρόπο στην πλάτη; Τι είναι αυτό; Πείτε ότι για μια ακόμη φορά; 

ΜΑΘΗΤΗ: Pointer. 

David J. Malan: Δεν δείκτες. ΟΚ, τουλάχιστον σε αυτό το παράδειγμα, όχι. Αυτό είναι δίκαιη. Έτσι, δεν υπάρχουν δείκτες σε PHP πραγματικότητα σε γενικές γραμμές. Υπάρχουν κάτι που ονομάζεται αναφορές, αλλά εμείς δεν θα ξοδεύουν πάρα πολύ χρόνο εκεί. Και τι άλλο; 

ΜΑΘΗΤΗ: Κύριο. David J. Malan: Κύριο. Έτσι, αυτό ήταν το biggie Σκεφτόμουν. Σημειώστε ότι δεν υπάρχει κεντρικό σημείο εισόδου. Μπορείτε απλά να αρχίσετε να γράφετε τον κωδικό σας. Και αυτό είναι στην πραγματικότητα πρόκειται να είναι πλεονεκτικό όταν έχουμε μετάβαση στιγμιαία για να χρησιμοποιεί στην πραγματικότητα Αυτή η ίδια γλώσσα για web-based προγραμματισμού, για την οποία εμείς δεν θέλουν να έχουν ένα μόνο σημείο εισόδου. Μπορούμε ίσως να θέλετε να έχετε μια δέσμη των URLs, ένα σωρό διαφορετικά αρχεία λαμβάνοντας όλα στην είσοδο χρήστη και παράγει αντίγραφα. 

Αλλά εδώ είναι το πολύ απογοητευτικό παράδειγμα ότι είχα υποσχεθεί την τελευταία φορά, δηλαδή σε αυτόν το φάκελο Εδώ, ορθογραφικά λάθη. Έτσι, σε αυτό το ορθογράφος αρχείο, το οποίο θα δεν θα ξοδεύουν πάρα πολύ χρόνο σε, δεν υπάρχει ουσιαστικά ένα porting-- Ρ-Ο-Κ-Τ. Είναι ακριβώς η λέξη δίνεται όταν, ας πούμε, να μετατρέψετε από τη μία γλώσσα σε ένα άλλο με το χέρι συνήθως. 

Αυτό είναι μια μεταφορά του υπολογιστή έκδοση της ορθογράφο από PSET 5. Και εγώ προσπάθησα ουσιαστικά να μετατρέψει αυτό ανά γραμμή όσο μπορώ. Έτσι, αν σας αρέσει αυτό το είδος του πράγματος, είναι πραγματικά αξίζει σε κάποιο σημείο τραβώντας τους τόσο από πλευράς πλευρά και να δει τι είναι η ίδια και τι είναι διαφορετικό. Αλλά είναι αρκετά καταριέται παρόμοιο. Αν θυμάστε τι Ορθογράφος Έμοιαζε και, ακόμα κι αν δεν το έκανε πρέπει να αλλάξετε αυτό το αρχείο, είναι αρκετά παρόμοια δομικά με μόνο ένα ζευγάρι των αλλαγών εδώ και εκεί. 

Έτσι, αυτό είναι μόνο για να πω ότι είναι αρκετά εύκολο να μετατρέψετε ορθογράφος από C σε PHP. Αλλά στο λεξικό, υπάρχει κάτι ακόμα πιο συναρπαστικό. Επιτρέψτε μου να προχωρήσει και να δημιουργήσει το δικό μου αρχείο dictionary.php. Έτσι ελαφρώς διαφορετική σε ότι Θα ονομάσουμε .php αντί για .c. Επειδή αυτό είναι ένα αρχείο PHP, εγώ do-- ελαφρώς annoyingly-- έχουν για να ξεκινήσει το αρχείο με μια ετικέτα php όπως αυτό. Και Πάω να πάει μπροστά και να ορίσουμε ορισμένες λειτουργίες. Λειτουργία ονομάζεται επιταγή, η οποία είναι πρόκειται να πάρει σε μια λέξη όπως πριν. Αλλά αυτό το επιχείρημα της πρόκειται να έχουν ένα δολάριο υπογράψει, διότι είμαστε, και πάλι, με τη χρήση της PHP. Μια άλλη λειτουργία από dictionary.c ήταν φορτίου και πήρε το όνομα του λεξικού, γι 'αυτό θα πάρει αυτή η λειτουργία είναι έτοιμα να ξεκινήσουν. 

Ένας άλλος ένας στο dictionary.c ήταν αυτό; Μέγεθος ήταν ένα από τα ομορφότερα, σε τουλάχιστον αν τηρείται κάποια μεταβλητή γύρω. έτσι ώστε το μέγεθος έχει απλά να επιστρέψει μια μεταβλητή. Και τότε υπήρχε ξεφορτώσουν. 

Έτσι, υπήρχαν αυτά τα τέσσερα λειτουργίες στο πρόβλημα που 5 ότι χρειάζεται να εφαρμόσει με κάποια δομή δεδομένων ή δομές. Γι 'αυτό και υποσχέθηκε ότι στο PHP, μπορούμε να δηλώσουμε ένα πίνακα κατακερματισμού, για παράδειγμα, όλα ότι πιο εύκολα. Στην πραγματικότητα, αν θέλω ένα πίνακα κατακερματισμού, Είμαι ακριβώς πρόκειται να πάει, όπως ότι και υπάρχει πίνακας κατακερματισμού μου. Και αυτό είναι το σημείωμα, απογοητευτικό, ότι φύγαμε από την τελευταία φορά. Και ξέρετε τι, αν ήθελα μια μεταβλητή για το μέγεθος, καλά, αυτό δεν είναι όλα ότι διαφορετικά από το C, αλλά Πάω να προχωρήσει και να το κάνουμε αυτό. Και η ανακοίνωση τύπου δεδομένων. Και εγώ θα πάω πίσω αργότερα και πραγματικά να προσθέσει κάποια σχόλια εδώ. Αλλά τι γίνεται με το φορτίο; 

Αν το σύμβολο του δολαρίου λεξικό είναι το όνομα του αρχείου μου και εγώ πραγματικά θέλετε να φορτώσετε λέξεις σε αυτό το τραπέζι τώρα, Μπορώ πραγματικά να κάνουμε κάτι αρκετά απλό. Ένα-- και αυτό είναι minorly annoying-- σε PHP, θα πρέπει να καθορίσετε μέσα μιας συνάρτησης αν θέλουν να έχουν πρόσβαση σε κάποια παγκόσμια μεταβλητή που έχει οριστεί έξω. 

Αλλά αυτό δεν είναι ιδιαίτερα ενδιαφέρον τώρα. Τι είναι πιο ενδιαφέρον είναι αυτό για κάθε κατασκευή που ανέφερα τελευταία φορά. Και αποδεικνύεται ότι η PHP έχει μια λειτουργία που ονομάζεται αρχείο του οποίου σκοπός στη ζωή είναι να ανοίξετε ένα αρχείο και να διαβάσετε στο το σύνολο των γραμμών του σε μία συστοιχία και να τους παραδώσει πίσω στο. 

Ποια είναι να πούμε μπορώ να κάνω λεξικό έτσι ότι τώρα αποτελεσματικά όταν το αρχείο κλήση, Αυτό πρόκειται να μου παραδώσει πίσω μια σειρά των λέξεων από το αρχείο. Δεν είναι όλα τόσο καλά. Είναι ακόμα πρόκειται να είναι μια γραμμή των λέξεων, κάτι γραμμικό. Αλλά μπορώ να πάω μπροστά και να επαναλάβει πάνω από κάθε μία από αυτές τις λέξεις που χρησιμοποιούν ότι η σύνταξη είδαμε εν συντομία την τελευταία φορά. Και θα το δείτε περισσότερα στην επερχόμενη PSET. 

Αλλά τώρα έχω την επανάληψη βρόχου πάνω από κάθε λέξη στο λεξικό. Και σε κάθε επανάληψη, υπενθυμίζουν ότι είμαι καλώντας την τρέχουσα λέξη «λέξη». Και όλοι πρόκειται να λάβει για να βάλει μια λέξη στο λεξικό είναι πρόκειται να είναι λέξη εικασία "αλήθεια". Αυτή είναι η λειτουργία ένθετο μου. Αυτό είναι συνάρτηση του φορτίου μου για το λεξικό μου. Τώρα αυτό είναι ένα κομμάτι από ένα εξαπατήσει, διότι, ξέρετε τι, δεν υπάρχει στην πραγματικότητα backslash ν στο τέλος των λέξεων ότι θα πρέπει κατά πάσα πιθανότητα να απαλλαγούμε από, αλλά αυτό δεν είναι ένα πρόβλημα, επειδή η PHP έχει μια λειτουργία που ονομάζεται μπριζόλα που κυριολεκτικά μπριζόλες από ένα χαρακτήρα στο τέλος. Έτσι, δεν υπάρχει πρόβλημα εκεί. Έχουμε προχωρήσει και στην πραγματικότητα μειωθεί ότι μόνο σε αυτό. Και τώρα θα πρέπει πιθανώς να παρακολουθείτε του μεγέθους, οπότε ας κάνουμε τουλάχιστον this-- μέγεθος ++. Μπορώ να το κάνω όπως πριν. Και τότε αυτό είναι κατά πάσα πιθανότητα πρόκειται να λειτουργεί μια χαρά, έτσι ώστε να επιστρέψουμε αλήθεια. Έγινε. PSET 5. 

[Γέλια] 

David J. Malan: ΟΚ. Εμείς πάμε να κάνουμε ότι και πάλι με την επόμενη PSET, πάρα πολύ. Έτσι τι γίνεται με το μέγεθος; Λοιπόν, αυτό ελπίζω να είναι περίπου όπως θα περιμένατε την τελευταία φορά, αν και έχω να κάνω αυτή η ηλίθια παγκόσμια πράγμα. Είναι απλά ένα τεχνούργημα από το σχεδιασμό της γλώσσας. 

Αλλά έλεγχος είναι λίγο πιο ενδιαφέρουσα. Έτσι, αν θα περάσει στο δολάριο υπογράψουν λέξη, για πρώτη φορά θέλουν να έχουν πρόσβαση σε ότι η παγκόσμια μεταβλητή πίνακα. Και τώρα, αν θέλω να ελέγξετε αν μια λέξη είναι εκεί, Θα ήθελα απλώς να πω αν είναι αλήθεια ότι η ακόλουθη βρίσκεται στο τραπέζι, τότε προχωρήστε και επιστροφή αλήθεια? αλλιώς, επιστρέφει false. Έγινε. Το άλλο μισό του PSET 5. 

Εντάξει, οπότε και πάλι, είμαι κόψιμο μερικών γωνίες. Για να είμαστε δίκαιοι, θα πρέπει πιθανώς περάσουν μερικά ακόμη δευτερόλεπτα σχετικά με την εφαρμογή αυτή. Και εγώ κατά πάσα πιθανότητα δεν θα πρέπει να κοροϊδεύει όλα τα ώρες βάζετε στο PSET τόσο πολύ. Έτσι strtolower είναι μια λειτουργία. Κάτι παρόμοιο υπαρξιστής σε C, τουλάχιστον για τους χαρακτήρες, αλλά PHP πήρε μια ολόκληρη έκδοση εγχόρδων. 

Αυτό πρόκειται να αναγκάσει τα πάντα σε πεζά, τα οποία μερικοί από εσάς θα μπορούσε να γίνει για να canonicalize τι θα έβαζαν στο λεξικό σας. Και τώρα μπορείτε να το κάνετε αυτό σε C, πάρα πολύ. Αυτό δεν έχει να κάνει με την PHP. 

Αλλά κάθε φορά που έχετε μια Boolean κατάσταση, σαν κάτι on line 10 εκεί, το οποίο είναι μόνο πρόκειται να αξιολογηθεί σε πραγματικό ή ψευδείς, και σας εάν άλλος σαφώς επιστρέφει true ή false, θα μπορούσα απλά κάνει πραγματικά αυτό το πιο σέξι και απλά να κάνουμε κάτι σαν αυτό. Έτσι ώστε να υπάρχει έλεγχος της λειτουργίας μου. Δεξιά, αν το Boolean επιστρέφει μια αληθινή ή ψευδή, ας το επιστρέψει αμέσως. 

Και υπάρχουν μερικά άλλα tweaks Θα μπορούσα να κάνω εδώ και εκεί. Load-- ξεφορτώσουν, από τον τρόπο, που έχει κάνει. Δεν έχει τίποτα να κάνει εκεί. Δεδομένου ότι το σύνολο της μνήμης σε PHP και πολλές άλλες γλώσσες είναι πραγματικά κατάφερε για εσάς. Έτσι, ενώ στην C, όπως έχετε μάθει οδυνηρά, κάτι που malloc ή calloc ή realloc, θα πρέπει να ελευθερώσετε τον εαυτό σας. Οτιδήποτε fopen, θα πρέπει να fclose, ούτως ώστε οι πόροι είναι τελικά απελευθερώθηκαν και εργαλεία όπως Valgrind δεν κάνει παρατηρήσετε και δεν παραπονιούνται, το οποίο είναι ένα καλό πράγμα για να τρέξει πάνω τους. 

Αλλά σίγουρα, πρέπει να υπάρχει υπάρξει κάποια αλιευμάτων, σωστά; Σε αντίθετη περίπτωση, έχουμε το είδος των σπατάλη ένα σωρό εβδομάδες. Έτσι υπάρχει οποιοσδήποτε αριθμός λόγων Γι 'αυτό το είδος της εκμεταλλευτώ αυτή την τροχιά, αλλά υπάρχει ένα trade-off. Δεξιά, αυτό ήταν θεματική. 

Λοιπόν, τι θα μπορούσε ένα trade-off εδώ μετακίνηση, από την Γ στην PHP; Αισθάνεται σαν όλα να κερδίσει μέχρι στιγμής, εκτός από ένα κομμάτι της ασχήμιας εδώ ή εκεί. Ναι. Τι είναι αυτό; 

Φοιτητής: [δεν ακούγεται] μνήμη. David J. Malan: Ταχύτητα. ΟΚ. Λοιπόν, η ταχύτητα μου ήταν αρκετά γρήγορη. Σωστά; Αλλά η ταχύτητα της εκτέλεσης του προγράμματος; Εντάξει, έτσι ώστε να είναι μια δίκαιη σημείο. 

Έτσι, όπως θα συνέβαινε, εγώ εκ των προτέρων Μπαίνει πρώτη τόσο Λύση Δοκιμάστε μου, η μία Είχα στη μεγάλη πλακέτα Ήταν μια λύση δοκιμή που βασίζεται, και έχω ότι σε αυτόν τον κατάλογο εδώ. Γι 'αυτό και σε μια στιγμή, μπορώ να πάω μπροστά και να εκτελέσετε αυτή στο βασιλιά James Bible, πατώντας Enter. Και αυτό είναι σωστό ελπίζουμε εφαρμογή, στο τέλος, μου δίνει το χρόνο στο σύνολο 0,38 δευτερολέπτων για αυτό ένα κάπως αυθαίρετο παράδειγμα. 

Και αν εγώ τώρα πάω σε αυτό δεύτερο παράθυρο τερματικού εδώ όπου άνοιξε το πρώτο του gedit, ας Θέλω να πάω σε σημερινή code-- η οποία, και πάλι, είναι σε αυτόν τον κατάλογο here-- και επιτρέψτε μου να πάει μπροστά και να τρέξει ορθογράφο. Έτσι, ακριβώς για να είναι σαφής, Αυτή είναι η έκδοση της PHP. Είμαι απλά δείχνει το πάνω μέρος του εδώ. 

Έτσι, αν κάνω ορθογράφο της περισπωμένη CS50 PSET 5 κείμενα, King James, εισάγετε. Είναι ακόμα πιο γρήγορα από ό, τι γραπτώς το σε C, αλλά ο συνολικός χρόνος είναι, ειδοποίηση, 0,93, ενώ μου Εφαρμογή C-βάση ήταν 0,38. Γι 'αυτό είναι μια μη-τετριμμένο διαφορά. 

Και αυτό είναι μόνο για ένα αρχείο. Αν ήταν να λειτουργούν και τα δύο προγράμματα σε σχέση με το μεγάλο διοικητικό συμβούλιο και έχουν ένα σωρό των εισροών δοκιμαστεί, αυτό σίγουρα θα προσθέσει επάνω. Και αν είχαμε ακόμη μεγαλύτερα σύνολα δεδομένων, Αυτό, επίσης, θα προσθέσει έως και όλα τα άλλα. Οπότε ναι, πληρώνοντας κάποια τιμή της ταχύτητας είναι πράγματι η περίπτωση. Τι άλλο; Ναι; 

Φοιτητής: Ποσό της χρήσης μνήμης RAM. 

David J. Malan: Ποσό της χρήσης μνήμης RAM. Έτσι, δεν είχα δώσει έναν δευτερόλεπτα σκέφτηκε όταν έγραφε αυτό το PHP έκδοση ως προς το πόσο μνήμη ήμουν με τη χρήση. Είμαι εντελώς αναβολή ότι με την PHP το ίδιο και όποιος έγραψε αυτό το πρόγραμμα. Και αυτό θα μπορούσε να είναι εντάξει, αλλά αν πραγματικά πραγματικά νοιάζονται για συμπιέζοντας όσο επιδόσεις έξω από το πρόγραμμά μου ή από την ιστοσελίδα μου ή από ό, τι εργαλείο Χτίζω, ίσως PHP, πράγματι, δεν είναι η σωστή γλώσσα. 

Και στην πραγματικότητα, αυτός είναι ο λόγος, για παράδειγμα, πολλοί web servers-- τα πραγματικά προγράμματα που εξυπηρετήσει μέχρι web content-- δεν είναι γραμμένο σε PHP ή σε Python ή Ruby. Είναι γραμμένο, όπως θα κάνουμε τώρα με το chipset 6, σε C, έτσι ώστε να μπορείτε να αποσπάσουν κάθε κομμάτι της απόδοσης από αυτό και πραγματικά να ασκήσουν ποιοτικό έλεγχο πάνω στο τι είναι συμβαίνει κάτω από το κουκούλα και όχι απλά να το πάρετε για χορηγηθεί κάποια υψηλότερη δομή δεδομένων επίπεδο. 

Σκεφτείτε, μετά από όλα, όποιος στην PHP υλοποιούνται ότι η έννοια του κατακερματισμού table-- είναι στην πραγματικότητα περισσότερο σωστά ονομάζεται μια συνειρμική array-- κάνει αυτός ή αυτή έχουν καμία ιδέα τι είδους των εισροών θα έχετε την ευκαιρία να βάζοντας στη δομή; Έτσι, προφανώς, δεν είναι, σωστά; Είναι ένα γενικό εργαλείο στην εργαλειοθήκη που είναι παρέχεται σε όποιον θέλει να το χρησιμοποιήσει, και έτσι σίγουρα δεν μπορεί να βελτιστοποιηθεί τελικά για το τι ακριβώς θέλετε να κάνετε. 

Έτσι, το εμπόριο-offs-- χρόνο ανάπτυξης θα μπορούσε διαφέρουν, οι επιδόσεις μπορεί να διαφέρουν, πολυπλοκότητα ή η χρήση της μνήμης μπορεί να διαφέρουν. Και έτσι αυτό που θα βρείτε όλο και περισσότερο είναι ότι υπάρχει πρόκειται να είναι διαφορετική εργαλεία για το εμπόριο. Και στην πραγματικότητα για ένα σούπερ πλειοψηφία των τελευταία έργα των ανθρώπων σε αυτή την κατηγορία, είτε το πιστεύετε είτε όχι, Γ δεν πρόκειται να είναι η σωστή γλώσσα για να χρησιμοποιήσει. 

Και στην πραγματικότητα, ένα από τα φαστ φουντ τελικά, για κάθε κατηγορία, όπως αυτή είναι να σας κάνει να σκεφτείτε, Λοιπόν, τι θα έπρεπε να τραβήξει από το ράφι όταν θέλετε να λύσει κάποιο πρόβλημα. Και πράγματι, θα διασχίσουν τη γέφυρα ακόμη περισσότερο καθώς κοιτάζουμε σε περισσότερες γλώσσες ακόμη και πέρα ​​από το σήμερα. 

Ας μετάβαση τώρα να ίσως ένα πιο οικείο πλαίσιο για τη χρήση μιας γλώσσας, όπως η PHP. Είναι κάπως κοινό να χρησιμοποιήσει σε η γραμμή εντολών, γράφει σενάρια όπως έκανα, αλλά είναι πολύ, πολύ πιο συχνές. Και αυτό επρόκειτο να χρησιμοποιηθεί σε η μορφή των αρχείων που συνήθως καταλήγουν σε .php-- αλλά αυτό είναι όχι μια prerequisite-- ότι οι ίδιοι παράγουν περιεχόμενο στον Παγκόσμιο Ιστό. 

Έτσι, επιτρέψτε μου να πάει μπροστά και να ανοίξει μερικά παραδείγματα που έχω προετοιμαστεί εκ των προτέρων. Και αυτά είναι στην πραγματικότητα το είδος της αληθινής ιστορίες από το ότι ένα από τα πρώτα πράγματα Έκανα ποτέ τον εαυτό μου μετά την ολοκλήρωση CS50 και ίσως, νομίζω, CS51 χρόνια είναι μου συγκάτοικο και εγώ ήμασταν βοηθώντας για να τρέξει το ενδοτοιχωματικό καινούριο αθλητικό πρόγραμμα, το οποίο, κατά τον χρόνο, είχε καινούριος εγγραφή για διάφορες αθλήματα συμπληρώνοντας ένα κομμάτι χαρτί, όπως ονομάστηκε, το περπάτημα σε όλη την αυλή για να Wigglesworth, και πτώση σε ορισμένες πτώση πόρτα του επόπτη. Και τότε αυτός ή αυτή θα περάσουν αυτά και τότε πράγματι να μας στείλετε email με το χέρι ότι ήταν εγγεγραμμένοι για κάποιο άθλημα. 

Έτσι, σαφώς, μια ευκαιρία για βελτίωση. Αυτές τις μέρες, ίσως στραφούν σε απλά Φόρμες Google, αλλά πίσω στην ημέρα, είχαμε να φτάσουν στην πραγματικότητα for-- αυτό δεν ήταν ακόμη τόσο πολύ ago-- φθάσουν για τον προγραμματισμό γλώσσα που δεν ήταν PHP. Εκείνη την εποχή, ήταν κάτι που ονομάζεται Perl, η οποία έχει φύγει από τη μόδα από τότε. Αλλά η ιδέα είναι η ίδια. 

Και κάθισα ουσιαστικά προς τα κάτω για να δοκιμάσετε στο λιμάνι πηγαίνει εκδόσεις της Perl σε PHP, αλλά σε πλήρη αποκήρυξη, δεν δίνουν οποιαδήποτε σκέψη για την αισθητική ακριβώς ακόμα. Έτσι, εδώ είναι μια ιστοσελίδα. Αυτό είναι ένα αρχείο. Αν μεγέθυνση, προφανώς του ονομάζεται froshim0.php μόνο και μόνο επειδή είναι η πρώτη μας παράδειγμα σε αυτή τη σειρά. Και παρατηρήσετε ότι έχει ό, τι φαίνεται να είναι ένα πολύ άσχημο μορφή HTML, αλλά μια μορφή είναι ενδιαφέρουσα επειδή επιτρέπει Θέλω να παρέχει είσοδο του χρήστη στο πρόγραμμα περιήγησης. 

Τώρα τελευταία φορά που είχαμε μια μορφή, σε τους οποίους δεν μπορούμε να υποβάλει ερώτημα παραμέτρων μας, η παράμετρος ουρά όπως λεγόταν; Έτσι, στο Google, σωστά; Εμείς κλότσησε εντελώς την ιδέα της να κάνει τίποτα με την συγκεκριμένη είσοδο. 

Αλλά σήμερα, θα αρχίσουν να παράγουν έξοδο. Και η συμπεριφορά Πάω να δω εδώ αρχικά είναι αρκετά τετριμμένο. Ντέιβιντ, θα ελέγξετε μακριά φύλου Εδώ, λένε Matthews εδώ. Δεν θα είναι ο αρχηγός. Πάω να κάνετε κλικ στο Εγγραφή. Και παρατηρήσετε ότι η διεύθυνση URL έχει αλλάξει για να εγγραφείτε-0.php, και στη συνέχεια να υπάρχει αυτό το άσχημο κείμενο εδώ. Έδωσα καμία σκέψη για η μορφοποίηση του αυτή. 

Αλλά αυτό που είναι ενδιαφέρον είναι ότι οι τρεις τιμές είχαν ήδη περάσει όπως φαίνεται στο. Αυτό είναι το είδος της PHP ισοδύναμο με printf-- θα δούμε τι είναι πραγματικά ονομάζεται σε bit-- που απλά τυπώνει έξω τι σας πέρασε σε αυτό. Έτσι, το γεγονός αυτό δείχνει ότι αυτή η μορφή είχαν τουλάχιστον τρεις τομείς σε αυτό, και είδες εμένα να πληκτρολογήσετε. Το ένα ήταν το όνομά μου, ο ένας ήταν το φύλο, ο ένας ήταν κοιτώνα. Και καπετάνιος δεν μπόρεσα ούτε καν να αποστέλλονται ο διακομιστής γιατί εγώ δεν το ελέγχει. 

Έτσι, αυτό είναι να πούμε προφανώς, όταν υποβάλλετε τα πράγματα στο διαδίκτυο, δεν αφορά μόνο τη διεύθυνση URL μερικές φορές change-- μερικές φορές δεν το κάνει. Στην πραγματικότητα, το όνομα του αρχείου αλλάξει, αλλά αυτό είναι απούσα από τη διεύθυνση URL ότι είδαμε την τελευταία φορά με την Google. Ναι; 

Φοιτητής: Όχι συμβολοσειρά ερωτήματος 

David J. Malan: Δεν υπάρχει συμβολοσειρά ερωτήματος. Δεν υπάρχει κάτι ερωτηματικό. Δεν υπάρχει q ερωτηματικό ισούται με γάτες, όπως κάναμε την τελευταία φορά. Και δεν υπάρχει βέβαια καμία όνομα ερωτηματικό ισούται David ή κοιτώνα ισούται Matthews, έτσι ώστε, όπου ότι όλα πηγαίνουν; 

Λοιπόν, επιτρέψτε μου να πάω πίσω στο gedit εδώ και να ανοίξει το πρώτο από τα αρχεία σε vhost μου, τοπική υποδοχής, δημόσια Κατάλογος εδώ και να πάει σε froshim0. Έτσι αποδεικνύεται ότι σχεδόν όλα αυτής της σελίδας είναι απλά HTML. Και αυτό μπορεί να είναι άγνωστη σε εσάς, αλλά σύντομα θα είναι περισσότερο με PSET 6 και PSET 7 και 8 PSET. Αλλά αυτό είναι μόνο μια σελίδα HTML. 

Και τα ενδιαφέροντα πράγματα φαίνεται να είναι εδώ. Μια ετικέτα μορφή του οποίου η δράση χαρακτηριστικό έχει μια τιμή του καταχωρητή 0. Γι 'αυτό όταν υποβάλλουν αυτό, πηγαίνει σε αυτό το αρχείο. Όμως η μέθοδος είναι διαφορετική μετά today--. Έτσι αποδεικνύεται υπάρχει τουλάχιστον δύο μεθόδους στο διαδίκτυο που χρησιμοποιείται να στείλουν πληροφορίες από το πρόγραμμα περιήγησης στο διακομιστή. Αποκτήστε το βάζει στο URL. Δημοσίευση βάζει αλλού. Και πότε και γιατί θα μπορούσε να σας πραγματικά θέλουν μια ιστοσελίδα να χρησιμοποιούν θέση, τότε αντ 'αυτού του να πάρει, απλά διαισθητικά; Κάθε ιστοσελίδα. Τι είδους δεδομένα θα πρέπει να περάσει μόνο κατά τεκμήριο τώρα μέσω ταχυδρομείου σε αντιδιαστολή να πάρει, αν έχουμε δει οι δύο διαφορές; Φοιτητής: [δεν ακούγεται] εξασφαλίσει. David J. Malan: Εάν θέλετε κάτι για να είναι ασφαλής. Έτσι, μπορείτε να πληκτρολογήσετε έναν κωδικό πρόσβασης σε μια ιστοσελίδα, μια πιστωτική κάρτα σε μια ιστοσελίδα θα το είδος αυτών των αναντίστοιχο αν το πρόγραμμα περιήγησης που ότι αξίας στο εσωτερικό του URL. Γιατί; Μπορείτε να το δείτε, το οποίο δεν φαίνεται να είναι μια τέτοια μεγάλη υπόθεση, αλλά οι πιθανότητες είναι εσείς αρκετά συχνά τα πόδια μακριά από τον υπολογιστή ή τη χρήση του υπολογιστή σας εργαστήρια, και έτσι κάποιος άλλο ή ακόμα και ένα συγκάτοικο θα μπορούσε εύκολα να περπατήσετε και να δείτε ότι οι ιδιωτικές πληροφορίες. Όταν στέλνετε ένα e-mail μέσω του διαδικτύου, ίσως Δεν θέλω αυτό το τέλος των δεδομένων πάνω στο URL, καθώς και. Και έτσι υπάρχει οποιοσδήποτε αριθμός λόγων γιατί θα μπορούσαμε να θέλουμε να το θέσω εδώ. Και photos-- δεξιά, δεν μπορώ ακόμη αρκετά Φανταστείτε πώς θα πάρετε ένα γραφικό, σαν JPEG, και το βάζουμε σε μια διεύθυνση URL. Θα μπορούσε να το κάνει. Υπάρχουν τρόποι που κωδικοποιεί αυτό, αλλά είναι απλά δεν είναι απλή υπόθεση όπως αυτή. 

Έτσι εγγραφείτε 0 είναι στην πραγματικότητα πολύ απογοητευτικό. Όλα τα λέει κυριολεκτικά είναι αυτό. Εκτυπώνει στο εσωτερικό ορισμένων Html tags τα ακόλουθα. Έχω ένα tag της PHP εδώ ένθετα στο εσωτερικό του προ ετικέτας. "Προ" σημαίνει απλώς προ-μορφοποιημένο κείμενο, μονο-απόσταση μεταξύ τους, όπως και μια γραφομηχανή. 

Printr είναι μια εκτύπωση αναδρομική συνάρτηση. Και έπειτα υπάρχει αυτό ενδιαφέρον πράγμα εδώ. Και θα επανέλθουμε σε αυτό επειδή υπάρχουν και άλλοι, αλλά το σύμβολο του δολαρίου υπογράμμισης μετά φαίνεται να είναι μια μεταβλητή στην PHP στην οποία τίποτα μπορείτε να στείλετε από το πρόγραμμα περιήγησης στο διακομιστή παίρνει αποθηκεύονται για εσάς. Και θα δούμε πώς να φτάσετε στο ότι οι πληροφορίες πριν από καιρό. 

Αλλά πρώτα, ας πάμε πίσω στο ένα ελαφρώς διαφορετικό παράδειγμα. Πηγαίνοντας σε register-- ή μάλλον, froshims1.php, η οποία μοιάζει λίγο διαφορετικό. Πήρα λίγο περισσότερο προσπάθεια με τη μορφοποίηση, ακόμα κι αν είναι ακόμα αρκετά άσχημο. Αλλά Πάω να πάει μπροστά και πληκτρολογήστε "Δαβίδ" τώρα. Άντρας. Θα ελέγξει "καπετάνιος" αυτή τη φορά. Θα κάνουμε Matthews. Και εγγραφείτε. 

Και αυτή τη φορά, λέει, χμ, δεν είναι πραγματικά. Εντάξει, έτσι τι'S REGISTER 1; Επιτρέψτε μου να πάω σε ανοικτό νηολόγιο 1 and-- χμ. Εντάξει, έτσι αυτό είναι ενδιαφέρον, και αυτό είναι ένα σκαλοπάτι προς την επιχείρηση πιο ενδιαφέροντα προγράμματα. 

Παρατηρήστε την κορυφή του αυτό το αρχείο έχει ένα PHP tag καθώς και ορισμένα σχόλια. Και αυτά είναι, προς το παρόν, μια απόσπαση της προσοχής οπότε ας απαλλαγούμε από αυτά τα σχόλια ακριβώς σαν να είσαι σε C. Και ισχυρίζομαι με αυτό το κομμάτι του κώδικα με ένα σχόλιο ότι αυτός ο κώδικας είναι την επικύρωση της υποβολής. 

Λοιπόν, αποδεικνύεται ότι μεταβλητές όπως το σύμβολο του δολαρίου υπογραμμίζουν θέση είναι που ονομάζεται σούπερ διεθνοποιημένων. Είναι όπως αυτά ειδικές παγκόσμιες μεταβλητές που είναι ακριβώς omni-σήμερα διαθέσιμες στο πλαίσιο του προγράμματος σας. Και μπορείτε να χρησιμοποιήσετε πλατεία συμβολισμός βραχίονα σε δείκτη σε αυτούς που δεν χρησιμοποιούν αριθμούς όπως 0, 1, 2, 3, αλλά πραγματικές λέξεις. 

Έτσι, μπορείτε να σκεφτείτε το σύμβολο του δολαρίου υπογραμμίζουν θέση ως είδος ενός πίνακα κατακερματισμού ότι θα μπορούσε να περάσει ένα κλειδί σε, μια αναζήτηση λέξη-μεταξύ των αγκύλες, και πρόκειται να σας δώσει πίσω το τιμή που ο χρήστης πραγματικά. PHP έχει μια λειτουργία καλείται κενό που απλά λέει ναι ή όχι, αυτό μεταβλητή είναι κενή ή όχι. Έχουμε δύο μέτρα και δύο μπαρ, πράγμα που σημαίνει απλά ή, όπως στη C. 

Έτσι, στην πραγματικότητα, αυτή η γραμμή 4 είναι απλά λέγοντας ότι αν ο χρήστης δεν δώσει ένα όνομα ή δεν δώσει ένα φύλο ή δεν έκανε δίνουν ένα κοιτώνα, να προχωρήσει και να ανακατευθύνει τον ή της μέσω αυτής της γραμμής εδώ. Έτσι, αυτό είναι λίγο αινιγματικό, αλλά αυτό απλά σημαίνει κυριολεκτικά πάει πίσω σε αυτήν τη θέση, έτσι κλωτσιές τον χρήστη πίσω από όπου αυτός ή αυτή προήλθε από. Αλλά είναι λίγο άκομψο σε ότι έχω δύσκολο κωδικοποιημένα. 

Αλλά τι γίνεται αν αυτό αν η κατάσταση δεν αξιολογεί στην αλήθεια; Τι και αν ο χρήστης δεν μου δώσει του ή το όνομα και κοιτώνα και το φύλο της; Ότι αν η κατάσταση δεν είναι πρόκειται να αξιολογηθεί στην αληθινή, έτσι δεν χτύπησε την έξοδο στην γραμμή 7. Λοιπόν, τι θα συμβεί; Και αυτό είναι ό, τι είναι ενδιαφέρον για την PHP. 

Μπορείτε να ρίξετε μέσα και έξω της λειτουργίας PHP, να το πω έτσι. Αν θέλετε κάποια κώδικα για να εκτελέσει, μπορείτε να ανοίξετε και να κλείσετε ένα tag της PHP και να θέσει τον κωδικό εκεί, όπως έχω κάνει εδώ. Μόλις κλείσετε η ετικέτα PHP, ο διακομιστής είναι ακριβώς πρόκειται να φτύσει ό, τι βάζετε εκεί. Και πράγματι, αυτό ήταν μέρος του Ο αρχικός σχεδιασμός της PHP, για καλύτερο προς το χειρότερο, ήταν αυτό συνεύρεση του κώδικα και σήμανσης γλώσσας. Και θα δούμε ότι αυτό το πολύ περιέρχεται γρήγορα σε ένα χάος. Και έτσι θα κάνουμε καλύτερα από ό, τι Αυτό τελικά, αλλά απλά παρατηρήσετε την ευκολία με την οποία είμαι πράγματι σε θέση να εκτελέσει κάποια λογική. 

Αλλά εξακολουθεί να είναι λίγο απογοητευτικό. Ας ανοίξει έκδοση δύο από Frosh ΔΥ, η οποία προφανώς υποβάλλει register2.php. Έτσι, αυτό το αρχείο είναι στην πραγματικότητα πρόκειται να φαίνονται σχεδόν το ίδιο. Πάω να πάει στο Frosh ΔΥ 2. Αλλά σε Frosh ΔΥ 2, ας δούμε τι θα συμβεί. 

Δαβίδ, κάντε κλικ στο κουμπί, όπως αυτό λέγεται? Matthews, δεν υπάρχει καπετάνιος. Εγγραφείτε. Έχετε εγγραφεί. Όχι πραγματικά. Ω περιμένετε, απλά κάναμε ότι το παράδειγμα, δεν κάναμε; Εντάξει, να σταθεί με. Θα κάνουμε το τρία. Είναι σαφές ότι κάτι είναι περίπου να συμβεί με το Gmail. Θα φτάσουμε εκεί. 

Έτσι Frosh ΔΥ 3 μοιάζει με αυτό. Δεν διαφορετικά. Αλλά όταν το κάνω Δαβίδ, αρσενικό, Matthews, και εγγραφή, αυτή η τρίτη και τελική έκδοση αξιώσεις, πολύ απλά, θα Οι εγγεγραμμένοι πραγματικά. Αυτό είναι το είδος των άυλων. Αλλά έχω αυτή την αξίωση με αυτό τρίτη και τελική έκδοση Έχω τώρα ανασυνταχθεί ακριβώς τι μου συγκάτοικο και έφτιαξα για τα Frosh ΔΥ Πρόγραμμα χρόνια πριν. Και ήταν απλό. Δεν υπήρχε βάση δεδομένων, Δεν υπολογιστικό φύλλο Excel. Αλλά το πιο σημαντικό, δεν υπήρχε περισσότερο χαρτί γιατί αυτό που κάναμε με αυτό το πρόγραμμα ήταν με το ηλεκτρονικό ταχυδρομείο στην πραγματικότητα το Proctor, ο οποίος ήταν προηγουμένως λήψη αυτά τα πράγματα μέσω εντύπων. 

Και προφανώς έχουμε προγραμματιστεί αυτό το ένα τέτοιο τρόπο, ώστε όταν κάποιος καταχωρεί, Λογαριασμό e-mail Τζον Χάρβαρντ το proctor-- ή τον εαυτό του σε αυτήν την περίπτωση, John Harvard-- με τα ακόλουθα text-- "Αυτό το άτομο μόλις εγγραφεί." Το όνομα είναι David, καπετάνιος είναι κενό? φύλο, αρσενικό? και κοιτώνες, Matthews. 

Έτσι, ό, τι συνέβη εκεί; Λοιπόν, το εν λόγω αρχείο εδώ είναι προφανώς register3.php. Και αν μπορώ να ανοίξω αυτό, θα δείτε τόσο η ισχύς του κώδικα, όπως αυτό και, επίσης, ειλικρινά, η ανασφάλεια ενός συστήματος όπως το ηλεκτρονικό ταχυδρομείο. Έχω μόνο αποτελεσματικά προσποιήθηκε είναι John Harvard με τον ακόλουθο τρόπο. 

Έχω την ανοικτή ετικέτα php επάνω στην κορυφή, η οποία ακριβώς λέει εδώ έρχεται κάποια κώδικα PHP. Εδώ κάτω, γυρίζει εκεί έξω οι βιβλιοθήκες σε PHP. Απλά δεν χρειάζεται να περιλαμβάνουν header αρχεία τόσο πολύ. Μπορείτε να πάρετε περισσότερο με το νεροχύτη της κουζίνας, να το πω έτσι. 

Αλλά αυτή τη φορά στη γραμμή 4, να κάνω θέλουν να ειδική βιβλιοθήκη που ονομάζεται PHP αλληλογραφίας, το οποίο είναι κάτι που μπορείτε να εγκαταστήσετε δωρεάν σε πολλά συστήματα. Εδώ κάτω είμαι επικύρωση η υποβολή μόνο ελέγχοντας έκανε ο χρήστης δώσει μου ένα όνομα, ένα φύλο, και ένα κοιτώνα. Και αν ναι, να προχωρήσει και να υπόσταση σε ένα πρόγραμμα ηλεκτρονικής αλληλογραφίας. 

Μπορείτε να σκεφτείτε αυτό ως ένα γραμμή κώδικα που διαθέτει μόνο. Είναι σαν malloc, αλλά είναι λίγο πιο σέξι στο ότι δεν αναφέρω μόνο malloc και κάποιες γενικές αριθμό. Λέτε να μου δώσει ένα από αυτά, να μου δώσει ένα νέο μία από αυτές. 

Και αν έχετε προγραμματιστεί στο Java ή C ++ ή άλλες γλώσσες, μπορεί να έχετε δει αυτό. Αλλά το κοντό του, αν άγνωστη, αυτή η γραμμή θέτει σε σύμβολο του δολαρίου ταχυδρομείου ένα ειδικό struct που ονομάζεται ένα αντικείμενο που έχει ενσωματωμένο λειτουργικότητα ηλεκτρονικού ταχυδρομείου. Και στην πραγματικότητα, να παρατηρήσετε και παρόμοια σύνταξη. 

Αυτό δεν είναι ένας δείκτης, per se. PHP χρησιμοποιεί ακριβώς την ίδια σύνταξη. Αυτή η γραμμή που λέει χρήση SMTP-- Simple Mail Transfer Πρωτόκολλο, το οποίο είναι ακριβώς η πρωτόκολλο που χρησιμοποιείται για την αποστολή αλληλογραφίας. Αυτό είναι που προσδιορίζει τη χρήση Διακομιστή SMTP του Χάρβαρντ, η οποία είναι κάπου εδώ στην πανεπιστημιούπολη. 

Αυτό λέει ό, τι το πρωτόκολλο TCP αριθμό θύρας για να μιλήσω, και εγώ μόλις κατάλαβα ότι έξω από googling ή ζητώντας από το γραφείο βοήθειας. Και στη συνέχεια, επειδή Χάρβαρντ χρησιμοποιεί κάποια ασφάλεια του συστήματος για την server-- ταχυδρομείου τουλάχιστον για την κρυπτογράφηση κίνηση ανάμεσα σε εσάς και, παρόλο που ο καθένας μπορεί να στείλει σε it-- Πάω να ενεργοποιήσετε το πρωτόκολλο TLS για τη διατήρηση αυτής ασφαλή. 

Αλλά αυτό είναι όπου τα πράγματα πάρει λίγο τρομακτικό. Μπορώ μόνο αυθαίρετα να πω ότι είμαι jharvard, και μπορώ μόνο αυθαίρετα email εαυτό μου εδώ. Και τότε μπορώ να καθορίσετε ένα θέμα με αυτή τη γραμμή εδώ. 

Και αυτό ακριβώς φαίνεται άσχημο, αλλά είναι απλώς ένα μάτσο αλληλουχία. Βγάζει PHP έχει ένα σούπερ χρήσιμο σύμβολο, όπως ορισμένες γλώσσες, ο χειριστής τελεία, η οποία μόλις κυριολεκτικά συνενώνει συμβολοσειρά μετά συμβολοσειρά μετά χορδών, και δεν έχετε να malloc ή σχήμα από το συνολικό μήκος του string. Μπορείτε απλά να το κάνει. Και μάλιστα, επειδή είμαι συνενώσει σε όλα αυτά τα πράγματα με αυτές τις κουκκίδες, γι 'αυτό το e-mail μου αποστέλλονται κοίταξε όπως έπραξε. 

Και στη συνέχεια, τέλος, εδώ, είμαι αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου. Έτσι, αν αυτό είναι λάθος, Είμαι ακριβώς πρόκειται να πεθάνει, η οποία είναι μια λειτουργία που μόλις εκτυπώσεις στην οθόνη μερικά μήνυμα σφάλματος. Αλλά είναι, στην πραγματικότητα, καλώντας τη λειτουργία αποστολής. Διαφορετικά, αν όλα αυτό αποτύχει, μου ανακατευθύνει πίσω εδώ. 

Και γιατί βλέπω ότι Είμαι εγγεγραμμένος πραγματικά; Λοιπόν, αυτό που συνέβη εδώ. Έτσι Φέρνω αυτό επάνω για μια-δυο λόγους. 

Ένα, αυτό είναι ακριβώς το πώς και αν χτίζετε κάποια ιστοσελίδα για ένα τελικό σχέδιο ή για τον πραγματικό κόσμο, αυτό είναι πώς μπορείτε να στείλετε e-mail υπενθυμίσεις με τους πελάτες σας ή τους συνδρομητές σας. Αυτό είναι το πώς μπορείτε να στείλετε υπενθυμίσεις κωδικού πρόσβασης. Αυτό είναι το πώς μπορείτε να στείλετε τους ανθρώπους μηνύματα ότι έχουν ένα νέο Facebook μήνυμα σε εκκρεμότητα ή κάτι τέτοιο. 

Αλλά μιλάει επίσης να Το γεγονός ότι αυτό θα μπορούσε ήταν πολύ καλά από Davin ή οποιονδήποτε άλλον. Και το λέω αυτό το είδος του με ένα χαμόγελο, επειδή είμαι αρκετά σίγουροι για το τι συμβαίνει μέσα πολλά από το μυαλό σας σε αυτό το σημείο. Αλλά αυτό είναι ένα από εκείνα που κάνουν όπως εγώ λένε, όχι αυτό που κάνω το είδος των πραγμάτων, επειδή είναι ασήμαντο σε σφυρηλατήσει τα μηνύματα σαν αυτό. Αλλά, όπως ίσως έχετε δει ή να διαβάσετε στο Crimson, των καθυστερήσεων είναι επίσης αρκετά ασήμαντο για τους ανθρώπους για να τους εντοπίζουν πίσω σε κάποιο προέλευσης. Και να με ρωτήσεις κάποια στιγμή, ίσως σε CS50 γεύμα, πώς ήρθα για πρώτη γνωριστήκαμε πολύ στενά σχεδόν στο Διοικητικό Συμβούλιο ed πολλά χρόνια πριν, όταν ανακάλυψα πώς λειτούργησε το διαδίκτυο. Έτσι, σε κάθε case-- ελαφρώς αφού έκανε το διοικητικό συμβούλιο ed. 

Έτσι, σε κάθε περίπτωση, υπάρχει ένα σωρό σούπερ διεθνοποιημένων, όπως και αν ονομάζεται εδώ, μία εκ των οποίων εμείς saw-- σύμβολο του δολαρίου υπογράμμισης μετά. Υπάρχει μια ομόλογό ονομάζεται get, η οποία είναι όπου τα πράγματα από μια διεύθυνση URL καταλήγει πηγαίνει. Και υπάρχουν ένα σωρό άλλοι, too-- συνεδρία και server και μπισκότο. Θα επανέλθουμε σε μπισκότων κάποια άλλη στιγμή, αλλά συνεδρία είναι είδος δροσερό επειδή το δικαίωμα now-- μέχρι now-- ό, τι έχουμε κάνει με ένα web browser Είναι το είδος των ανιθαγενών, να το πω έτσι. Μπορώ να κάνετε κλικ γύρω, πρόσβαση αρχεία στο διακομιστή, κάτι συμβαίνει στην οθόνη, αλλά τότε η σύνδεση κλείνει. Ο Internet Explorer ή το Firefox εικονίδιο σταματήσει να γυρίζει και μπορείτε απλά να δούμε τι η ιστοσελίδα περιέχει. 

Έτσι HTTP είναι ανιθαγενείς σε ότι αφού κάνει μια σύνδεση, παίρνει κάποια δεδομένα, αυτό είναι όλο. Δεν υπάρχει πλέον σύνδεση, σε αντίθεση με το Skype, σε αντίθεση με υποστήριξη FaceTime, σε αντίθεση με GChat, η οποία διατηρεί ένα σταθερό σύνδεση με το διακομιστή. Το διαδίκτυο είναι θεμελιωδώς αποσυνδεθεί, αν και θα δείτε πριν από καιρό πώς μπορούμε να προσομοιώσει τα πράγματα όπως το Facebook chat και GChat, που διατηρούν την illusion-- ή πραγματικά να κάνουμε διατηρήσει μια σταθερή σύνδεση με τη χρήση πιο σύγχρονη τεχνολογία. 

Αλλά αν πάω σε, ας πούμε, counter.php, Αυτό είναι ένα άλλο απλό παράδειγμα, όπως θα δούμε, ότι σκέφτεται σήμερα Έχω επισκεφθεί το site μηδέν χρόνο. Αλλά αν εγώ απλά επαναλάβετε τη φόρτωση της σελίδας, γνωρίζει κατά κάποιο τρόπο ήμουν εδώ πριν. Αν φορτώσετε εκ νέου και πάλι, ξέρει Ήμουν εδώ πριν. Και ξανά και ξανά και ξανά και ξανά. 

Έτσι, υπάρχει κάποια συν-plussing συμβαίνει, αλλά ειδοποίηση το μικρό πράγμα γυρίζει ποτέ έτσι λίγο επάνω στην κορυφή και στη συνέχεια αποσυνδέεται, έτσι δεν είναι σαν να έχω ένα σταθερό σύνδεση με τη συσκευή μου. Λοιπόν, αν πάω σε counter.php, παρατηρήσετε πόσο απλό είναι. Θέλω πρώτα καλέσετε αυτό το ειδικό λειτουργία που σύντομα θα αρχίσετε να παίρνετε ως δεδομένο ονομάζεται έναρξης της συνεδρίας. Ξεκινήστε μια συνεδρία. 

Και μια συνεδρία πλέον είναι απλά πρόκειται να είναι ένας κάδος, όπως ένα εμπορικό καλάθι στο οποίο μπορείτε να βάλετε τιμές και το είδος της εμπιστοσύνης ως προγραμματιστής ότι πρόκειται να είναι εδώ όταν ο χρήστης έρχεται back-- ένα δεύτερο αργότερα, μία ώρα αργότερα, ακόμα και ένα χρόνο αργότερα, εφ 'όσον αυτός ή αυτή δεν καθαρίζει cookies τους, όπως εμείς τελικά θα δούμε. Και τώρα έχω μόνο αν μια κατάσταση εδώ. Έτσι, αν το ακόλουθο κλειδί, που ονομάζεται μετρητής, βρίσκεται μέσα αυτού του σούπερ global-- αυτό το κλειδί τραπέζι, αν will-- ονομάζεται συνεδρία, τότε προχωρήστε και πιάσε το αξία από την session-- think αυτό ως εμπορικό cart-- και να το αποθηκεύσετε σε μια προσωρινή μεταβλητή που ονομάζεται μετρητής. 

Διαφορετικά, αν η τιμή του μετρητή ήταν δεν έχει οριστεί στο λεγόμενο καλάθι αγορών, μόλις γίνει η προετοιμασία στο 0. Τέλος, εδώ κάτω, πάει και να βάλει πίσω μέσα στα καροτσάκια ή της συνεδρίασης η τιμή του μετρητή +1. Έτσι, αποδεικνύεται ότι αυτή η ειδική here-- δοχείο η οποία, και πάλι, είναι ένα από αυτά που σχετίζονται συστοιχίες, μια σειρά που μπορείτε δείκτη σε λέξεις αντί numbers-- παραμένει ακόμα και αφού ο χρήστης πηγαίνει μακριά. Και πάλι, εγώ θα πάω πίσω στην σελίδα τώρα. Ήταν ένα λεπτό ή έτσι. Αλλά θυμάται ότι έχω εδώ 19 φορές πριν. Αυτή είναι η 20η επίσκεψη μου. 

Και έτσι αυτό πρόκειται να είναι το κλειδί για την στην υλοποίηση κάθε ιστοσελίδα που θυμάται ότι είστε συνδεδεμένοι, ότι βάζετε κάτι κυριολεκτικό στο καλάθι αγορών σας να αγοράσει ή ότι έχετε κάποια τον αριθμό των μηνυμάτων που εκκρεμούν. Κάθε φορά που θέλετε να θυμηθείτε τα στοιχεία, θα δούμε ότι η PHP, όπως αρκετές άλλες γλώσσες, μας παρέχει αυτή ψευδαίσθηση του κράτους αν και, όπως θα δείτε στο PSET 6, όπως έχετε κάνει αιτήσεις HTTP από τον client στον server, αυτό είναι όλο. Μόλις πάρετε πίσω ότι απάντηση, δεν υπάρχει τίποτα περισσότερο έρχονται πίσω από το διακομιστή από προεπιλογή. Αλλά θα δούμε πώς να επιλύσετε αυτό. 

Καλά τώρα, ας προσπαθήσουμε να καθαρίστε αυτό επάνω λίγο. Έχουμε δει μερικά διαφορετικά παραδείγματα που δίνονται εκεί. Ω, και ως ένα μέρος, για όσοι είναι εξοικειωμένοι ή δεν είναι εξοικειωμένοι, Ο λόγος που η Frosh ΔΥ παράδειγμα πήγε από αναζητούν πραγματικά άσχημο να slightly-- καλά, ακόμα ugly-- έως ελαφρώς λιγότερο άσχημο αν και ακόμα άσχημο είναι γιατί αν κοιτάξουμε τον πηγαίο κώδικα εδώ, αποδεικνύεται ότι έχω αυτό στην κορυφή του αρχείου. 

Βγάζει ότι bootstrap είναι ένα από τα πολλά ελεύθερα διαθέσιμες βιβλιοθήκες εκεί έξω που δεν υπάρχουν για τις γλώσσες προγραμματισμού πάντα, αλλά για CSS ή για το JavaScript ή HTML ή οποιοδήποτε αριθμό των γλωσσών. 

Και αυτοί οι λαοί here-- αρχικά βγήκε της Twitter-- έχουν μόνο ένα σωρό στυλ. Είναι ένα τεράστιο αρχείο εδώ ότι κάποιος έγραψε, ή κάποιος έγραψε, πάροδο του χρόνου που καθορίζει τα χρώματα και τη μορφοποίηση και εταζέρα, ώστε να μπορώ να το είδος των δανειστεί σύνταξή τους και δεν πρέπει να καταλάβω πώς να βάλει τη φόρμα μου. Αυτό είναι επίσης minified έτσι ώστε ένας υπολογιστής μπορεί να καταλάβουμε αυτό, αλλά δεν αναγκαστικά ένας άνθρωπος. Έτσι, αυτό είναι ακριβώς γιατί η στυλιζάρισμα εκεί άλλαξε. 

Αλλά ας κάνουμε τώρα καλύτερα όσον αφορά το σχεδιασμό, γιατί αν μείνει κάτω Αυτός ο δρόμος είναι πολύ μακρύς, κώδικα μας πρόκειται να να πάρει βρώμικο και Messier. Έτσι, ας επικεντρωθεί σε αυτά τα παραδείγματα εδώ. Το τελευταίο για σήμερα. 

Έτσι, εδώ είναι μια εξαιρετικά απλή έκδοση 1.0 της ιστοσελίδας CS50 του. Έχει μόνο συνδέσεις με διαλέξεις και εξεταστέα ύλη, και αυτό είναι ότι η χρήση μη διατεταγμένη λίστα tag-- την ετικέτα UL που χρησιμοποιήθηκαν την τελευταία φορά. Και αν στην πραγματικότητα, αν μου ανοίξει Θέα Σελίδα Πηγή, θα δείτε ότι αυτό είναι πραγματικά, πραγματικά απλή HTML. Και στην πραγματικότητα, ακόμη και αν αυτό είναι ένα αρχείο PHP κάτω από την κουκούλα, είναι ακόμα φτύνουν μόνο HTML για τώρα. 

Έτσι, αν κάνω κλικ στο Διαλέξεις, Βλέπουμε αυτό να συμβαίνει. Και αν κάνω κλικ στην εβδομάδα μηδέν, βλέπουμε αυτό. Και αν κάνω κλικ στο Τετάρτη, βλέπουμε αυτό. Και αυτό προφανώς ήταν το PDF από τις διαφάνειες από εκείνη την ημέρα. Όλα τα έχω κάνει είναι η σύνδεση με ένα άγκυρα ετικέτα σε αυτό το URL εδώ. 

Έτσι, αυτό είναι μόνο για να πω ότι αυτό είναι ένα αρκετά απλή έκδοση της ιστοσελίδας του CS50. Ας δούμε πώς έχει εφαρμοστεί. Αν πάω στον κατάλογο mvc0, θα δούμε μερικά αρχεία. Το ένα είναι ένα README, οπότε αν μερικά από αυτό είναι πάρα πολύ γρήγορη, μπορείτε απλά να σακί γύρω πιο χαλαρό αργότερα. Και προειδοποίηση εδώ είναι ένα αρχείο index.php. Αποδεικνύεται ότι αν εσείς ο ίδιος, το ανθρώπινο, δεν καθορίσετε ένα όνομα στο τελικό μια διεύθυνση URL, ο web server συνήθως συνάγει κάποιο προεπιλεγμένο όνομα για εσάς. Μια κάτι δείκτης τελεία είναι γενικά η προεπιλογή. 

Έτσι, γι 'αυτό πριν από λίγο όταν επισκέφθηκα αυτό το URL εδώ, κανένα όνομα αρχείου, κανένα αρχείο επέκταση, καμία περίοδος στη διεύθυνση URL. Απλά ήξερε κάπως μαγικά να ψάξουν για index.php. Είναι απλά μια σύμβαση. Θα μπορούσε να ονομάζεται τίποτα. 

Έτσι, αν μπορώ τώρα να πάει σε index.php, θα δείτε ότι, indeed-- ας να απαλλαγούμε από τα σχόλια εδώ γιατί δεν υπάρχει πραγματικά τίποτα ενδιαφέρον να it-- Αυτό είναι απλά σκληρό κωδικοποιούνται HTML. Έτσι ώστε να είναι συνεπής, όμως, με την αξίωση μου ότι μπορείτε να αναμιγνύω HTML και PHP. Δεν υπάρχει καμία πραγματική Λογικός Προγραμματισμός εδώ. 

Και τα άλλα αρχεία είναι αρκετά πολύ απλά ως πληκτικός. Είναι απλά δύσκολο-κωδικοποιημένα εβδομάδα ένα εδώ για μία εβδομάδα m και μία εβδομάδα W, για τη Δευτέρα και την Τετάρτη. Και στη συνέχεια, αν έχω ανοίξει εβδομάδα μηδέν, παρατηρήσετε ότι είναι σχεδόν πανομοιότυπα. 

Και αυτό είναι το είδος της ένα βασικό πακέτο. Παρατηρήστε πόσο περιττό είναι. Αυτά τα αρχεία μόλις αλλάξει, και ακόμα μου τράβηξε ένα από αυτά copy / paste τις θέσεις εργασίας όπου πήρα ένα file-- προφανώς στην εβδομάδα zero-- να αντιγραφεί όταν μία εβδομάδα ήρθε γύρω, και πειραγμένο μερικές τιμές. Θα πρέπει πιθανώς να είναι σε θέση να κάνουμε κάτι καλύτερο από αυτό. 

Έτσι, ας πάμε πίσω μέχρι MVC και να πάει σε μία έκδοση. Και παρατηρήσετε Έχω ένα μερικά αρχεία, επειδή ό, τι ήταν κοινά για όλα αυτά τα αρχεία μόνο ένα στιγμή ago-- αν πάω πίσω στην έκδοση 0, ας πάμε πίσω στο δείκτη, και μόλις postulate-- μια φορά μπορώ να απαλλαγώ από την comments-- Ποιο μέρος αυτής της σελίδας είναι προφανώς σε κάθε ένα από τα αρχεία μου; Απλά καλέστε έξω. Ποιες γραμμές είναι διπλές πιθανώς σε όλες από αυτές τις σελίδες; Ναι; 

Φοιτητής: [δεν ακούγεται]. 

David J. Malan: 1 έως 9. Ναι, απολύτως. 1 έως 9, εκτός ίσως από 8 αλλάζει λίγο, γιατί CS50 γίνεται διαλέξεις ή εβδομάδα μηδέν ή κάτι τέτοιο. Αλλά σχεδόν ταυτόσημα. Έτσι, όλα αυτά τα πράγματα είναι απλά είδος αντιγραφεί και επικολληθεί. Και υπάρχει ένα ζευγάρι άλλες γραμμές μπορώ να σκεφτώ του που είναι πιθανώς όμοια σε όλα τα αρχεία. 

Φοιτητής: 12 και 13. David J. Malan: Ναι. Σίγουρα, 12, 13, και 14, κατά πάσα πιθανότητα, μόνο και μόνο επειδή του ενδιαφέροντα πράγματα συμβαίνει στις γραμμές 11 και 10, έτσι φαίνεται. Οπότε ας δούμε την έκδοση 1, η οποία προσπαθεί να βελτιώσει σε αυτό. Στην έκδοση 1 του παρόντος MVC example-- θα Εξηγήστε τι MVC μέσα σε ένα moment-- αν πάω σε δείκτη, το είδος του φαίνεται μια μικρή σύγχυση τώρα. Δεν είναι τόσο απλό όσο πριν. 

Αλλά τη στιγμή που θα αρχίσουν να διαβάσετε προσεκτικά, είναι αρκετά απλή τι κάνει. Προφανώς γραμμή 1 και γραμμή 8 έχουν αντικατασταθεί όλα τα πράγματα που μόλις identified-- αν και μόνο για το καλό μέτρο, Άφησα τα ULS υπάρχει μόνο στην περίπτωση που κάποιο ημέρες δεν έχουν μια λίστα με πράγματα. Και έτσι απαιτούν είναι κάτι σαν λίρας περιλαμβάνονται στο Γ αντίγραφα και πάστες τα περιεχόμενα αποτελεσματικά ακριβώς εδώ σε αυτό το αρχείο. 

Έτσι, σε header.php, όπως σας θα μπορούσε να συναχθεί από το όνομά του, πρόκειται να είναι η επικεφαλίδα της σελίδας. Είναι το είδος των ορφανών εδώ. Έχει μόνο την κορυφή σε αυτό, αλλά δεν υπάρχει περισσότερο περιεχόμενο κατωτέρω. 

Και αν κοιτάξουμε υποσέλιδο εν τω μεταξύ, που ήταν το άλλο αρχείο mentioned-- αυτό είναι ακόμα λιγότερο ενδιαφέρον, αλλά και πάλι, αυτό είναι κοινή για όλα. Έτσι, αυτό είναι το υποσέλιδο. Αυτή είναι η επικεφαλίδα. Αυτό είναι το αρχείο που είναι αλλάζει, οπότε γιατί να μην προσπαθήστε να συνυπολογίσει τα κοινά με αυτές τις δύο γραμμές εδώ; 

Αλλά μπορούμε να καθαρίσετε αυτό μέχρι λίγο περισσότερο. Πάω να πάει μπροστά και ανοίξει έκδοση δύο, όπου θα δούμε ότι υπάρχει ένα νέο αρχείο, helpers.php. Θα δούμε τι είναι αυτό σε μια στιγμή. Ας πάμε στο δείκτη, όπως η το σημείο εισόδου, όπως πριν. 

Και τώρα παρατηρήσετε είμαι απαιτούν helpers.php, δεν κεφαλίδα ή το υποσέλιδο. Αλλά βοηθοί είναι κάτι σαν helpers.c και helpers.h από PSET 2 ή PSET 3 πολύ καιρό πριν, όταν στην πραγματικότητα έκανε αναζητήσετε και να βρείτε για το συγκεκριμένο PSET, και είχατε όλοι κωδικό σας για διαλογή και η αναζήτηση σε ένα ξεχωριστό αρχείο. Αυτό είναι ό, τι συμβαίνει εδώ. 

Και τώρα γραμμή 3 μοιάζει λίγο διαφορετικό. Και αυτό είναι μόνο μία γραμμή. Για να γίνει αυτό ακόμη περισσότερο σαφής, θα μπορούσα απλά το κάνετε αυτό να είναι στυλιστικά συνεπής με όλα τα άλλα που έχουμε κάνει. Αλλά αυτό δεν είναι πραγματικά αλλάζοντας τη λειτουργικότητα. Είναι μόνο μία γραμμή πραγματικό κώδικα. 

Προφανώς, υπάρχει μια συνάρτηση κάπου ονομάζεται καθιστούν κεφαλίδα, και αυτό είναι όπου τα πράγματα να πάρει αρκετά ισχυρό. Παρατηρήστε ότι στο εσωτερικό των παρενθέσεων της Είναι ό, τι άλλο κομμάτι της σύνταξης; Είναι ίσως λίγο δύσκολο να πω, αλλά παρατηρήσετε there's-- Θα βάλω κάποιο λευκό χώρο. Υπάρχει αγκύλες. 

Και αγκύλες είδαμε πριν από λίγο στο πλαίσιο των συστοιχιών συνειρμική, που είναι, και πάλι, όπως πίνακες κατακερματισμού. Και αν νομίζετε τώρα σε C, το σειρά των επιχειρημάτων σε λειτουργία πρέπει να είναι πάντα το ίδιο. Θα πρέπει να θυμόμαστε ό, τι το διατάξει is-- x, y, z ή z, y, x-- και θα πρέπει να τους παρέχει πάντα με την ίδια σειρά ή βλέμμα τους επάνω αν έχετε ξεχάσει. 

Αλλά αυτό φαίνεται να είναι ένας έξυπνος τρόπος του περνώντας μια αυθαίρετη τιμή κλειδιού ζεύγη σύμφωνα με την οποία ο τίτλος είναι το όνομα του ένα επιχείρημα σε αυτή την περίπτωση και CS50 είναι η αξία του. Και το γεγονός ότι έχω Αυτές οι αγκύλες εδώ σημαίνει ότι θα μπορούσα επίσης περάσει σε κάτι σαν μια εβδομάδα είναι 1 ή 0 ή 2 ή 3. Έτσι έχουμε παραμετροποιείται Αυτή η λειτουργία κατά τέτοιο τρόπο ότι μπορεί να χρειαστούν πολλαπλές εισόδους, αλλά για τώρα είναι μόνο η μία. 

Αν τώρα πάμε σε helpers.php, παρατηρήσετε τι κάνει. Αυτό είναι ένα μικρό κομμάτι της νέας λειτουργικότητας, αλλά για τώρα απλά να πάρουν την πίστη ότι αυτό είναι η σύνταξη με την οποία θα ορίσουμε μια συνάρτηση σε PHP. Μπορείτε κυριολεκτικά να πω λειτουργία. Δεν καθορίσετε μια επιστροφή πληκτρολογήστε, και ότι είναι συνεπής με την μεταβλητή λεπτομέρεια νωρίτερα όπου δεν χρειάζεται πραγματικά να πληκτρολογήσετε έντονα. 

Αυτό καθορίζει μόνο ότι, εξ ορισμού, αυτό παίρνει μια συνειρμική συστοιχία ως επιχείρημα. Και ξέρετε τι; Εάν ο χρήστης δεν περάσει ένα σε, να αναλάβει μια προκαθορισμένη τιμή. 

Αυτό είναι ένα χαρακτηριστικό ότι η C δεν έχει για εμάς, το οποίο είναι ωραίο, γιατί τώρα δεδομένα, ακόμη και αν δεν θα δώσει τίποτα, Είναι πρόκειται να είναι μια συστοιχία αλλά κενή. Και, παρεμπιπτόντως, εκχύλισμα απλά κάνει κάτι funky όπου λαμβάνει όλα τα κλειδιά από αυτό συνειρμική σειρά, όλα τα πράγματα θα μπορούσε να θέσει σε αγκύλες, και δημιουργεί μεταβλητές από αυτά έτσι ώστε να μπορούμε να έχουμε τελικά την πρόσβαση για τους footet.php και header.php. Αυτό είναι λίγο αφηρημένο, οπότε επιτρέψτε μου να το επισημάνω αυτό. 

Στο index.php, παρατηρήσετε ότι είμαι περνώντας σε ένα βασικό ζευγάρι αξίας του τίτλου με τιμή CS50. Αν εξετάσουμε τώρα helpers.php, παρατηρήσετε ότι RenderHeader η εξαγωγή ότι τα δεδομένα που περνάω και, στη συνέχεια απαιτούν header.php. Αυτό που έχω κάνει είναι είδος ενός φτωχού εφαρμογή τώρα από τα ακόλουθα. 

Αν έχω ανοίξει header.php, ειδοποίηση ότι έχω πλέον σκληρά κωδικοποιημένες τη λέξη CS50 σε αυτό το αρχείο κεφαλίδας. Έχω βάλει αυτό το ομολογουμένως atrociously που ονομάζεται λειτουργία, HTML ειδικούς χαρακτήρες, εκεί. Αλλά παρατηρήστε τι έχω κάνει. Έχω ανοιχτό HTML. Στη συνέχεια έχουν ανοικτή κεφαλή και ανοιχτή τίτλο. 

Και στη συνέχεια στο εσωτερικό της ανοικτής και ο τίτλος του κοντά ετικέτες, έχω ένα κομμάτι του κώδικα PHP. Και αυτό είναι ένα ωραίο, αλλά της σύνταξης, που απλά σημαίνει ηχώ έξω. Σημαίνει κυριολεκτικά this-- απηχούν την following-- αλλά αυτό είναι πιο σέξι να γράψω. Ηχώ από τον τίτλο που είναι ήδη περάσει στο. 

Αλλά τι νομίζετε HTML ειδική char είναι όλα σχετικά, ειδικά αν έχετε κάποια προηγούμενη εμπειρία HTML; Ποιους χαρακτήρες μπορεί να είναι επικίνδυνο να περάσει σε μια σελίδα όπου είστε δυναμικά δημιουργώντας η ιστοσελίδα με κώδικα όπως αυτό; Επιτρέψτε μου να πάω σε αυτό το αρχείο, έκδοση δύο, και να δούμε αν δεν μπορώ να προκαλέσουν αυτό. 

Έκδοση δύο είναι αυτό. Και παρατηρήσετε τα πάντα είναι μια χαρά, λειτουργεί καλά. Αλλά ας υποθέσουμε ότι έχω πάει σε index.php και Έχω διευκρινίσει ότι ο τίτλος της σελίδας μου Δεν είναι CS50. Είναι ανοιχτό βραχίονα ειδοποίησης σενάριο Γεια σας κόσμο, στενή και μόνη προσφορά, κοντά παρένθεση, τελεία, ελεύθερο βραχίονα, σενάριο κάθετος. 

Σενάριο, όπως θα για να δουν τελικά, είναι μια ετικέτα που μπορείτε να χρησιμοποιήσετε για να χρησιμοποιήσετε από άλλο γλώσσα προγραμματισμού που ονομάζεται JavaScript στο εσωτερικό μιας ιστοσελίδας. Και τώρα παρατηρήσετε τη λογική εδώ. Εδώ είναι ένα κλειδί που ονομάζεται τίτλο. Εδώ είναι τρελό μεγάλη αξία τώρα. 

Αλλά αν πάω να τους βοηθούς PAGE- ή μάλλον, η σελίδα κεφαλίδας, Είμαι καλώντας τη λειτουργία αυτή για αυτόν τον τίτλο για πρώτη φορά. Έτσι, αν εγώ τώρα φορτώστε ξανά αυτήν τη σελίδα, εγώ δείτε αυτό, το οποίο φαίνεται γελοίο, αλλά είναι ασφαλές. Απλώς φαίνεται ανόητο. 

Αλλά ας υποθέσουμε ότι αντί Είχα ξεχάσει αυτό. Και σημειώστε τα λόγια μου, ένας μη μηδενικός αριθμός του θα ξεχάσετε να το κάνετε αυτό και θα πάρετε κάποια εργατικός φοιτητής ή ο φίλος έρχεται για εσάς στην εύλογη CS50 ή ανώνυμα τη νύχτα σπρώχνει γύρω στην ιστοσελίδα σας και ουσιαστικά ένεση κώδικα εν αγνοία σας στο site σας κατά κάποιο τρόπο. 

Διότι αν εγώ απλά φτύνουν από τον τίτλο εδώ και τίτλος there-- καλά, εάν ο τίτλος κυριολεκτικά μοιάζει με αυτό και PHP ως μια γλώσσα που μπορεί να φτύνουν τις άλλες γλώσσες το κείμενο, Αυτό είναι κυριολεκτικά πηγαίνει να αντικαταστήσουν αυτή την ετικέτα με, Φυσικά, αυτό που έβαλα αλλού. 

Έτσι, αν εγώ τώρα πάω εδώ και να φορτώσετε εκ νέου μετά αναίρεση αυτών των μηχανισμών ασφαλείας, τώρα έχω Hello World εδώ. Τώρα που δεν είναι όλοι το μεγάλο του αντιμετώπιση, αλλά θα μπορούσε να κάνει κάτι λίγο πιο κακόβουλο εδώ, σαν να υπάρχει άλλα tags-- όπως θα δούμε μια φορά ξοδεύουμε περισσότερο χρόνο στην JavaScript-- σαν τοποθεσία dot href παίρνει, παραθέτω, εισαγωγικά, HTTP business.com, αλλά το αντίθετο από αυτό από την άλλη ημέρα. Και τώρα μπορείτε να προκαλέσουν ένα web σελίδα πραγματικά να πάει αμέσως σε αυτήν την ιστοσελίδα εδώ. 

Και στην πραγματικότητα, δεν θέλω ακόμη και να πάει στο business.com γιατί δεν θέλω να ξέρουν τι είναι αυτό. Αλλά αυτό, επίσης, θα προκαλέσει κώδικα να εγχυθεί σε αυτή τη σελίδα. Έτσι, αυτό είναι μόνο για να πω ότι ακόμη και αν είμαστε εισαγωγή σούπερ νωρίς για κάποια αυτών των περισσότερο πολύπλοκων δομών, είναι όλα προς το τέλος του φροντίζοντας ότι ο κωδικός σας δεν είναι εκμεταλλεύσιμα. 

Έτσι τώρα μια τρίτη εκδοχή εδώ. Είναι να πάρει λίγο πιό φανταχτερό. Δεν είχα πραγματικά like-- η πρωκτική πλευρά του εαυτού μου ήταν να πάρει λίγο ενοχλημένος από το το γεγονός ότι είχα μια λειτουργία που ονομάζεται RenderHeader και RenderFooter ότι ήταν σχεδόν πανομοιότυπα. Έτσι, αυτό συνέβη σε μένα, γιατί να μην κάνουμε Έχω παραμετροποιήσετε αυτές τις λειτουργίες σε ένα μόνο ονομάζεται καθιστούν, έχουν λάβει ένα δεύτερο επιχείρημα όπως το όνομα του προτύπου, η τελική να render-- είτε κεφαλίδα ή το υποσέλιδο; Και στη συνέχεια, προαιρετικά, αν θέλω να περάσει σε ορισμένα βασικά ζεύγη αξία όπως κάνω για τον τίτλο για το header αλλά όχι για το υποσέλιδο, Θα μπορούσα να το κάνω αυτό. 

Και έτσι τώρα αν πάω σε helpers.php, είναι λίγο πιο περίπλοκη. Και εγώ θα κύμα χέρια μου το λεπτομέρειες, αλλά αυτό είναι μόνο μία λειτουργία. Έτσι, αυτό είναι ένα βήμα προς ένα καλύτερο σχεδιασμό. 

Μπορούμε να πάρουμε ένα βήμα παραπέρα. Αν πάω στην τέταρτη μου έκδοση αυτή, παρατηρούμε τώρα ότι κάνω κάτι ακόμα περισσότερο το είδος των αινιγματικό. Και ξέρω ότι αυτό είναι ένα παρτίδα να απορροφήσει ταυτόχρονα, αλλά είμαστε ακριβώς το είδος του καθαρισμού πράγματα. Τώρα βάζω βοηθοί μου το αρχείο σε ένα φάκελο που ονομάζεται includes-- απλά μια αυθαίρετη Ονομα όπου θέλω να βάλω τα πράγματα ότι θέλω να include-- και, στη συνέχεια, το υπόλοιπο αυτό είναι η ίδια. 

Αλλά αν κοιτάξουμε τώρα στο gedit, ειδοποίηση που έχω πάρει απαλλαγούμε από όλα τα άλλα αρχεία και έχω μετακινηθεί τους, για παράδειγμα, σε εδώ. Και στη συνέχεια, πρότυπα, Έχω αυτό εδώ, πάρα πολύ. Και έτσι όλα αυτά είναι τώρα προς βήμα της χρησιμοποιώντας ένα πολύ καλύτερο πρότυπο σχεδιασμού. Και είμαστε πολύ γρήγορα πρόκειται να απομακρυνθούμε από προεπιλογή λειτουργικότητα της PHP, η οποία ξεκινήσαμε εδώ με, όπου μπορείτε απλά συμμιγνύω PHP, και σας HTML, CSS και σας, και μπορείτε απλά να φτύσει και πηγαίνετε για το δρόμο σας. Δεν πρόκειται να είναι πολύ διατηρήσιμη. Ακριβώς όπως και στη C, αρχίσαμε να χρησιμοποιούμε πολλαπλά αρχεία και πολλαπλές λειτουργίες και factoring πράγματα που έξω. Θα κάνουμε το ίδιο και εδώ. Και στην πραγματικότητα, στο πέμπτο και τελικό έκδοση εδώ, έκανα ένα άλλο πράγμα. Μπορείτε ακόμη να χρησιμοποιήσετε τελεία τελεία, η οποία, πάλι, είναι ακριβώς το γονικό κατάλογο. Για να είναι ακόμα μεγαλύτερη ασφάλεια συνειδητή, γιατί αν κοιτάξουμε την ακρόαση εδώ για πέμπτη και τελική έκδοση, προειδοποίηση ότι έχω έναν κατάλογο που ονομάζεται εδώ κοινό, και στη συνέχεια η ίδιο επίπεδο, να το πω έτσι, Έχω περιλαμβάνει και πρότυπα και, στη συνέχεια, ότι readme αρχείο κειμένου. 

Και ο λόγος που έχω δομημένη αρέσει this-- και τόσα πολλά web ξενιστές, ιδίως εκείνων 5 δολάρια αυτούς μήνα ή αυτοί $ 10 το μήνα, εάν είχατε ποτέ μία από αυτές services-- αυτό που τόσο πολλοί από αυτούς κάνουν είναι το μόνο που αναμένουμε από εσάς να απορρίπτουν όλα των αρχείων σας σε έναν κατάλογο, όπως κάναμε ήδη με Αυτό το πρώτο παράδειγμα. 

Αλλά μόλις ξεκινήσετε την οικοδόμηση περισσότερο εξελιγμένες περιοχές που αποθηκεύουν μόνο δεδομένα που νοιάζονται για και τα αρχεία σας νοιάζει, στην πραγματικότητα την οργάνωση πράγματα σωστά και με μεγαλύτερη ασφάλεια συνείδηση ​​στο μυαλό μπορεί να αρχίζουμε να υπερασπιστούν ενάντια σε όλους τους φίλους ότι έχετε είτε εντός είτε εκτός αυτής της κατηγορίας οι οποίοι, μόλις αρχίσετε να κάνετε προγράμματα εαυτό σας στο διαδίκτυο, πρόκειται να ξεκινήσει να πάρει σε σας και σε αυτούς. 

Και έτσι θα δούμε τελικά, σε αυτό το σχέδιο. Αυτό είναι απλά μια εικόνα που απεικονίζει την ακόλουθη. Εμείς πάμε να βάλουμε όλα μας προγραμματισμού λογικής σε ένα ή περισσότερα αρχεία, και θα πάμε να ξεκινήσει μόνο καλώντας τους ελεγκτές. Είναι το μέρος όπου οι εγκέφαλοι των ιστοσελίδες μας πραγματικά είναι. Στη συνέχεια θα πάμε να έχουν απόψεις, και τις απόψεις είναι τόσο απλό όσο ακριβώς ξεχωριστά files-- ονομάζεται πρότυπα, συχνά. Έχουν ακριβώς το αισθητική της σελίδας μου, τι θέλω τη σελίδα για να δείτε like-- τα χρώματα και τη διάταξη και οι θέσεις των όλες τις μεταβλητές. 

Και στη συνέχεια πιο ενδιαφέρουσα ότι θα πάρουν τελικά να είναι το μοντέλο, το οποίο πρόκειται να είναι ακριβώς η λέξη που χαστούκι σε άλλες τεχνολογίες ότι θέτουν σε η εικόνας, όπως η πραγματική βάσεις δεδομένων, έτσι ώστε όταν θέλετε για να αποθηκεύσετε τις πληροφορίες, που δεν πρέπει απλώς να στείλετε ένα e-mail στο Proctor σας ή για τον εαυτό σας, μπορείτε πραγματικά να το αποθηκεύσετε σε μια βάση δεδομένων χρησιμοποιώντας μια άλλη γλώσσα γνωστή ως SQL. Και έτσι θα φύγουμε από εδώ σήμερα και σηκώστε με αυτή την Τετάρτη και την εισαγωγή δεδομένων στη συνέχεια. 

[Παίζει μουσική]