[Powered by Google Translate] [Εβδομάδα 9] [David J. Malan - Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50. - CS50.TV] Εντάξει. Καλώς ήρθατε και πάλι. Αυτό είναι CS50, και αυτή είναι η αρχή της εβδομάδας 9. Σήμερα, έχουμε επικεντρωθεί κυρίως στο σχεδιασμό, δεν είναι πλέον στο πλαίσιο του Γ αλλά στο πλαίσιο της PHP και ένα κομμάτι της SQL και ένα κομμάτι της JavaScript, ιδιαίτερα προς το τέλος του τόσο PSET 7 και επίσης τελικό έργο σας. Στην πραγματικότητα, εάν είστε σε εκείνο το σημείο στο τελικό σχέδιο σας όπου κατά πάσα πιθανότητα από μια ώρα ή έτσι πριν σας τουλάχιστον άρχισαν να δώσει κάποια σκέψη στο τελικό σχέδιο σας και σκέφτεστε θα θέλατε να συνεργαστεί με 1 ή 2 συμμαθητές, αν έχετε πρόβλημα σύνδεσης με τα εν λόγω συμμαθητές, διστάσετε να συμπληρώσετε τη φόρμα στο cs50.net/partners/form. Είναι απλά σας ρωτά ποιος είσαι, τι είδους έργο σκέφτεστε, όπου ζείτε μόνο για οργανωτικούς λόγους. Και στη συνέχεια, αν θέλετε να κρατήσει ένα μάτι για την επόμενη εβδομάδα ή έτσι το URL φύλλο εκεί, μπορείτε να δείτε στη συνέχεια, ένα read-only έκδοση του Google doc στην οποία είμαστε συλλογή αυτών των πληροφοριών. Έτσι, εάν θέλετε να συνεργαστεί με κάποιον, με όλα τα μέσα διστάσετε να φτάσει στους ανθρώπους μέσω του εν λόγω μηχανισμού. Αλλά η πλειοψηφία των λαοί κάνουν σόλο δουλειά. Αυτό είναι εντελώς καλά. Έτσι, δεν αισθάνονται ότι αυτό είναι σε καμία περίπτωση υποχρεωτική. Την Παρασκευή ήταν μόνο εγώ και μερικοί από την ομάδα εδώ, άδειο θέατρο ως επί το πλείστον. Υπήρχαν 3 τουρίστες κάθονται εκεί, έτσι ώστε να ήταν λίγο δύσκολη. Αυτό που μιλήσαμε ήταν βάσεις δεδομένων και μιλήσαμε για PSET 7 α λίγο. Και αν δεν συμβεί για να πιάσει ότι στο βίντεο ακριβώς ακόμα, αυτό είναι εντάξει. Θα προσπαθήσω να καθορίσει οποιουσδήποτε όρους που διαφορετικά θα θεωρήσουμε δεδομένο βασίζεται σε διάλεξη της Παρασκευής. Σήμερα, όμως, θα πάμε να προσπαθήσουμε να φτάσετε στο σημείο όχι μόνο να είναι σε θέση να κάνει κάτι σαν PSET 7 αλλά πραγματικά να κατανοήσει τι συμβαίνει κάτω από την κουκούλα, ιδιαίτερα κάποιες από τις αφαιρέσεις που έχουμε θέσει σε εφαρμογή στο αρχείο functions.php για να κάνουν τη ζωή σας λίγο πιο εύκολη, αλλά, έτσι ώστε να κατανοήσουν τελικά έτσι ώστε όταν οι ρόδες βγει σε λίγες εβδομάδες μπορείτε ακόμα να επιβιώσουν στον πραγματικό κόσμο και να κάνουμε αυτά τα πράγματα χωρίς πλαίσιο CS50 κάτω από σας. Αυτό $ _SESSION, για όσους από εσάς είναι εξοικειωμένοι ή που ήδη πιάσει το βίντεο την Παρασκευή, ό, τι δεν ΣΥΝΕΔΡΙΑ ας κάνουμε σε PHP με βάση web εφαρμογή; Αυτό είναι ένα superglobal μεταβλητή, που σημαίνει ότι είναι παρόμοιες στο πνεύμα με GET και POST και μερικοί άλλοι, αλλά τι είναι αυτό το πράγμα χρήσιμο για; Τι είναι ΣΥΝΕΔΡΙΑ χρησιμοποιείται για; Ναι. [Φοιτητής] Σύνδεση μέσα Συγνώμη; [Φοιτητής] Σύνδεση Σύνδεση μέσα Πράγματι μέσα. Σε PSET 7 είμαστε χρήση αυτής της superglobal ΣΥΝΕΔΡΙΑ να διευκολυνθεί η καταγραφή μέσα Και τι είναι ωραίο για αυτό το superglobal είναι ότι πρόκειται για ένα associative array. Ένας associative array, ανάκληση, είναι απλώς μια σειρά, αλλά δεν είναι πλέον δείκτες των οποίων πρέπει να είναι αριθμοί σαν 012. Μπορούν να είναι αριθμοί ή μπορούν να είναι ακόμα και χορδές. Και έτσι αν έχετε βουτήξει σε PSET 7 ακόμα, ίσως θυμάστε ότι είμαστε αποθήκευση ενός κλειδιού ονομάζεται ID μέσα από αυτό το associative array των οποίων η αξία είναι κάτι σαν 123 - Όποια και αν είναι η στιγμή είστε συνδεδεμένοι στο όνομα χρήστη είναι. Το κίνητρο για αυτό είναι ότι ακόμη και μετά ο χρήστης έχει επισκεφθεί localhost ή στην ιστοσελίδα μου γενικότερα και στη συνέχεια να έχετε συνδεθεί, ακόμα κι αν δεν κάνετε κλικ σε ένα σύνδεσμο ή να επιστρέψετε στην ιστοσελίδα μου για 5 λεπτά ή ακόμα και μια ώρα ή ακόμη και μια ημέρα, αλλά αφήνουν παράθυρο του browser τους ανοιχτό, μέσω αυτής της superglobal μπορώ να θυμόμαστε ότι έχετε εισέλθει Με άλλα λόγια, αυτό μου επιτρέπει να αποθηκεύετε λίγο μακροπρόθεσμα κάτι που θέλω για ένα χρήστη. Και μπορείτε να σκεφτείτε πραγματικά σαν την ενσάρκωση του ένα καλάθι αγορών. Μέρη όπως το Amazon προφανώς αφήσει να βάλει τα πράγματα σε ένα καλάθι αγορών, αλλά HTTP, το πρωτόκολλο, το οποίο τροφοδοτεί το Web, είναι σκάφος άνευ εθνικότητας με την έννοια ότι όταν επισκέπτεστε μια ιστοσελίδα, ως επί το πλείστον δεν έχετε κάποια σταθερή σύνδεση με το δίκτυο μεταξύ του προγράμματος περιήγησης και διακομιστή. Από τη στιγμή που έχετε κατεβάσει την HTML και τα αρχεία JPEG και τα αρχεία GIF και όλα αυτά, η σύνδεση πηγαίνει μακριά και έχετε μόνο ένα αντίγραφο της HTML και εταζέρα από το διακομιστή. Αλλά αν ο διακομιστής θέλει να θυμάται κάτι για σας, η επιβάρυνση είναι στο διακομιστή για να καταγράψει πραγματικά αυτές τις πληροφορίες. Και έτσι ο προγραμματιστής που έχει τον έλεγχο του διακομιστή μπορεί να βάλει τίποτα που θέλετε μέσα από αυτό το superglobal associative array και θα είναι εκεί την επόμενη φορά που ο χρήστης έρχεται πίσω, είτε πρόκειται για λεπτά ή ακόμη και μέρες αργότερα, εκτός και αν κλείσετε το παράθυρο του browser τους, στο οποίο ΣΥΝΕΔΡΙΑ σημείο εξαφανίζεται. Έτσι είναι εφήμερη αποθήκευση, είναι μη-επίμονο, και είναι γραφτό να πάει μακριά μόλις ο χρήστης κλείσει browser τους - όχι μόνο ότι καρτέλα, συχνά ολόκληρο το πρόγραμμα περιήγησης, αυτόν τον τρόπο καταγραφής αποτελεσματικά το χρήστη έξω. Λοιπόν, πώς είναι αυτό το πράγμα που εφαρμόζεται στην πράξη; Ας ρίξουμε μια γρήγορη ματιά σε ένα απλό παράδειγμα είδαμε την Παρασκευή. Για όσους δεν είναι εξοικειωμένοι, ήταν τόσο απλό όσο αυτό. Αυτή είναι μια ιστοσελίδα με μοναδικό σκοπό στη ζωή είναι να μου πείτε πόσες φορές έχω επισκεφτεί αυτή τη σελίδα. Αυτή είναι η πρώτη φορά εδώ τη Δευτέρα ότι θα επισκεφθεί, έτσι ώστε να λέει 0 φορές. Αλλά αν αρχίσω επαναφόρτωση αυτής της σελίδας, λέει 1 φορά, 2, 3, 4, 5, και αυτό τελικά θα κρατήσει μόνο για καταμέτρηση επάνω, επάνω, επάνω, επάνω, επάνω για κάθε φορά που πραγματικά κάντε κλικ στο κουμπί Ανανέωση για αυτό. Λοιπόν, πώς είναι αυτή η εργασία; Επιτρέψτε μου να πάω μέσα από αυτό το αρχείο ονομάζεται counter.php. Το επάνω μέρος του είναι όλα τα σχόλια μπλε, αλλά το ενδιαφέρον κομμάτι είναι εδώ. Στις γραμμή 13 καλούμε session_start αυτή τη λειτουργία, και ότι είναι κυριολεκτικά το μόνο που πρέπει να κάνετε αν θέλετε να έχετε πρόσβαση σε αυτή την ειδική superglobal ονομάζεται $ _SESSION. Αυτό καθιστά δυνατή, και θα δούμε σε μια στιγμή πώς είναι ότι όλα είναι δυνατά. Στη γραμμή 16 ειδοποίηση τι κάνω. Εάν το κλειδί, που ονομάζεται μετρητής - με άλλα λόγια, η τιμή του δείκτη - "μετρητή" υπάρχει στο εσωτερικό αυτού του πίνακα ονομάζεται ΣΥΝΕΔΡΙΑ, τότε τι κάνω με αυτό στη γραμμή κάτω; Ποια είναι η γραμμή 18 κάνει; [Ακούγεται ανταπόκριση των φοιτητών] Τι είναι αυτό; [Φοιτητής] Αποθήκευση του αξία. Καλή. Είναι αποθήκευση του αξία που είναι σε ΣΥΝΕΔΡΙΑ τώρα σε μια νέα τοπική προσωρινή μεταβλητή, $ Μετρητή σε όλα τα πεζά γράμματα. Παρατηρήστε ότι η PHP είναι ήδη είναι λίγο τεμπέλης εδώ. Προσέξτε δεν έχουμε καμία αναφορά int ή float ή string ή κάτι τέτοιο επειδή η PHP είναι ασθενώς δακτυλογραφημένα, σύμφωνα με την οποία δεν χρειάζεται να καθορίσετε τον τύπο μιας μεταβλητής, και σε αυτή την περίπτωση εδώ δεν έχω δηλώσει ακόμα ακόμα. Είμαι δηλώνοντας ότι μέσα από αυτά τα άγκιστρα και σε αντίθεση με C, αυτό είναι πραγματικά εντάξει. Δεν έχει σημασία πόσο βαθιά ένθετα δήλωση μιας μεταβλητής στην PHP είναι - στο εσωτερικό του κηδεμόνα σγουρά, μέσα από σγουρά στήριγμα και τα παρόμοια - θα εκείνη τη στιγμή υπάρχουν για το υπόλοιπο του προγράμματος, προς το καλύτερο ή προς το χειρότερο. Έτσι, γίνεται αμέσως παγκόσμια μόλις την ορίζουν ως κάνουμε εδώ. Διαφορετικά, αν δεν βρίσκω ότι υπάρχει κάτι στο superglobal ΣΥΝΕΔΡΙΑ, Είμαι προφανώς την προετοιμασία αυτής της μεταβλητής σε αντίθεση με 0, έτσι απλά υποθέτοντας ο χρήστης δεν ήταν ποτέ εδώ πριν. Και τότε αυτό βέβαια είναι που αυξάνει τον μετρητή πώς; Είμαι ενημέρωση την τιμή που είναι μέσα από αυτό το associative array θέτοντας το ίσο με ό, τι είναι σήμερα μετρητής + 1. Αν μετακινηθείτε προς τα κάτω εδώ στο HTML της σελίδας, είναι πραγματικά αρκετά απλή. Το μόνο που έχω στο σώμα αυτής της σελίδας, "Έχετε επισκεφθεί αυτόν τον ιστότοπο έτσι-και-έτσι φορές." Και αυτό είναι ένα κατασκεύασμα PHP. Αν το κάνετε