DOUG LLOYD: Μερικές φορές όταν είμαστε προγραμματισμό
κάνουμε τα πράγματα τόσο συχνά, έτσι συχνά, και έτσι πολλοί άνθρωποι
κάνουν το ίδιο idea-- ή τον ίδιο πράγμα, ότι έχει ένα όνομα.
MVC είναι ακριβώς ένα τέτοιο πράγμα.
Αυτό λέγεται ένα παράδειγμα προγραμματισμού.
Είναι περίπου όπως ένα βέλτιστων πρακτικών που έχουν αποσταχθεί κάτω
από ανθρώπους που προσπαθούν να κάνουν κάτι.
Σε αυτή την περίπτωση, να εφαρμόσει ένα σύστημα σελίδες
ότι ένας χρήστης αλληλεπιδρά με σε ένα πιο πολύπλοκο ιστοσελίδα.
Και αυτό γίνεται τόσο συχνά ώστε συνιστάται ως πρότυπο
ότι οι άλλοι άνθρωποι μπορεί να ήθελαν να ακολουθήσουν, και υπάρχει ένα πολύ συγκεκριμένο σύνολο των τρόπων
ότι θα μπορούσε κανείς να ακολουθήσει αυτό το παράδειγμα.
>> Έτσι, MVC είναι ένα παράδειγμα, και ο λόγος που χρησιμοποιούμε είναι αφηρημένες μακριά λεπτομέρειες
από τον χρήστη.
Μερικά πράγματα που ο χρήστης δεν χρειάζεται πραγματικά να δω.
Θέλουν ακριβώς να έχουν μια καλή εμπειρία για το χρήστη,
και δεν χρειάζεται να τις πρόσβαση σε κάθε ενιαίο αρχείο, ότι
υπάρχει στον web server μας, ίσως.
Μπορεί να υπάρχουν κάποια αρχεία που είναι ακριβώς χρησιμοποιείται για να ενισχύσει την εμπειρία του χρήστη,
και έτσι μπορούμε αφηρημένη εκείνους μακριά.
Μπορούμε να ταξινομήσετε κρύβουν έτσι ο χρήστης δεν μπορεί να λειτουργήσει με αυτά,
αλλά μας pages-- pages-- μας ξέρουν πώς να τους αντιμετωπίσει
και να τους καλέσετε ή ίσως απαιτούν, θέλει τους, ή κάτι τέτοιο.
>> Το κύριο κίνητρο για το MVC είναι η ασφάλεια των δεδομένων,
επειδή MVC έρχεται συνήθως στο πλαίσιο της εργασίας με τις βάσεις δεδομένων.
Και ιδίως εμείς θέλετε να αποτρέψετε τους χρήστες
επηρεάζοντας άμεσα από τις βάσεις δεδομένων.
Θέλουμε μόνο να το κάνει έμμεσα, μέσω διήθησης μας.
Ή να διασφαλίσουμε ότι όλα είναι ΟΚ από μας κάνει λίγο τον έλεγχο σφαλμάτων
ή θωράκιση ασφαλείας πριν αποστέλλει στη βάση δεδομένων, όπου
τα πράγματα θα μπορούσαν να πάνε στραβά, ίσως πραγματικά λάθος, αν δεν είμαστε προσεκτικοί.
>> Έτσι MVC σημαίνει Model View Controller.
Τι κάθε ένα από αυτά σημαίνουν;
Βασικά, το μοντέλο είναι η βάση δεδομένων σας.
Είναι όπου όλη η σημαντικά δεδομένα για το site σας
lives-- ονόματα, logins, κωδικοί πρόσβασης.
Και μπορείτε να το ενημερώσετε, αναφέρονται σ 'αυτήν, λίγο πολύ τα πάντα έτσι.
Θα έπαιρνα ερώτημα σε μια βάση δεδομένων, θα ήθελα να ρωτήσω πληροφορίες από τη βάση δεδομένων.
Αυτό είναι το model-- όλα τα δεδομένων, όπου ζει το site σας.
>> Η θέα είναι κάτι σαν η εμπειρία του χρήστη.
Είναι οι σελίδες που βλέπουν μετά έχουν ζητήσει πληροφορίες.
Έτσι ίσως θα υποβάλουν Είσοδος information-- τους
οι οποίες θα έκαναν σε έναν ελεγκτή, το οποίο θα μιλήσουμε για σε ένα δευτερόλεπτο.
Μπορούν ίσως να υποβάλουν τους πληροφορίες σύνδεσης,
και η βάση δεδομένων των ψήφων.
Οι πληροφορίες που ζητήθηκαν και τραβιέται από τη βάση δεδομένων.
Και στη συνέχεια, όταν ο χρήστης είναι συνδεδεμένοι σε, βλέπουν την αρχική σελίδα τους.
Αυτή είναι μια άποψη, εντάξει;
>> Και τότε ο ελεγκτής είναι ό, τι είναι καλείται η επιχειρηματική λογική του site σας.
Και επιχειρηματική λογική είναι ένας από τους όρους αυτούς, ότι
Είναι το είδος του wishy-washy-- αρέσει, τι σημαίνει επιχειρηματική λογική;
Βασικά επιχείρησή σας η λογική είναι η PHP σας.
Χρήστη σας δεν χρειάζεται για να δείτε άμεσα PHP σας,
Αλλά η PHP σας είναι ίσως ό, τι συμβαίνει να κάνουν αιτήσεις για τη βάση δεδομένων.
>> Έτσι, η είσοδος του χρήστη βούληση πληροφορίες σε μια άποψη,
η οποία θα ενσωματώσει έναν ελεγκτή.
Όπως, θα πληκτρολογείτε σε μια φόρμα.
Πώς ότι οι διαδικασίες μορφή πληροφοριών είναι ο ελεγκτής.
Αυτή είναι η PHP που είναι πραγματικά καθιστώντας το αίτημα στο μοντέλο.
Και τότε το μοντέλο δίνει πληροφορίες για την άποψη,
το οποίο δίνει στο χρήστη, ίσως το καλύτερο απεικονιστεί ως εξής.
>> Έτσι, εδώ είμαστε.
Εδώ μας είναι στα αριστερά, και το μοντέλο μας Προβολή ελεγκτή διάταξη παράδειγμα.
Πώς δουλεύει?
>> Η user-- ΕΜΕΙΣ-- κάνει μια να ζητήσει από τον ελεγκτή.
Έχουμε υποβάλει πληροφορίες όπως με μια μορφή HTTP.
Με βάση αυτό, ο ελεγκτής του δουλειά είναι να βεβαιωθείτε
ότι αυτό που ο χρήστης έχει δώσει δεν είναι κάτι που θα μπορούσε να βλάψει το μοντέλο.
Και έτσι ο ελεγκτής πρόκειται να βεβαιωθείτε ότι όλα είναι εντάξει.
Πρόκειται να εξετάσουμε πολύ προσεκτικά.
Αν υπάρχει κάποια λάθη, θα σταματήσει τα πράγματα έτσι ώστε ο χρήστης να μην μπορεί να πάρει με το μοντέλο.
>> Αλλά και αν υποτεθεί ότι όλα είναι ΟΚ και αυτό είναι ένα έγκυρο ερώτημα,
ο ελεγκτής θα θέσει υπό αμφισβήτηση το model-- αυτό θα του ζητήσει να παράσχει πληροφορίες.
Το μοντέλο θα προβλέπει ότι πληροφοριών σε μια σελίδα που είναι μια άποψη,
αυτό θα το μεταδώσει ότι τρόπο, και στη συνέχεια η θέα
θα καταλαμβάνουν τις πληροφορίες ζήτησε από το μοντέλο.
>> Έτσι, για παράδειγμα, αν μιλάμε σχετικά με τη σύνδεση στη σελίδα σας στο Facebook,
για παράδειγμα.
Η προβολή θα είναι τα δεδομένα που προέκυψαν από το μοντέλο που
αναφέρεται στους φίλους σας και ειδήσεις ζωοτροφές ή τέτοια πράγματα, έτσι δεν είναι;
Αλλά δεν θα δούμε κάποιου άλλου.
>> Θα ήθελα να είναι έτσι getting-- υποβάλλετε ένα ερώτημα,
κάνετε login στο model-- δικαιολογία μένα, μπορείτε να συνδεθείτε στη σελίδα.
Οι χρήσεις του ελεγκτή τα στοιχεία σύνδεσής σας
να υποβάλουν σχετική αίτηση στο μοντέλο για να κάνει βεβαιωθείτε ότι είστε αυτός που λέτε ότι είστε.
Όπως και το μοντέλο του, εντάξει, ναι, είστε αυτός που λέτε ότι είστε,
οπότε επιτρέψτε μου να σας δώσω τις ζωοτροφές ειδήσεις σας.
Θα σας δώσω τα ανεπεξέργαστα δεδομένα για ζωοτροφές ειδήσεις σας στην προβολή,
και τότε η άποψη καθιστά όμορφη, επεξεργάζεται με έναν τρόπο
ότι έχουμε συνηθίσει, εμφανίζοντας ότι οι πληροφορίες για το χρήστη.
>> Παρατηρήστε τη σύνδεση που είναι μη υφιστάμενα σε αυτό το διάγραμμα.
Δεν υπάρχει άμεση σύνδεση ανάμεσα σε εσάς και το μοντέλο.
Υπάρχει πάντα αυτό το ρυθμιστικό της ο ελεγκτής από την πλευρά της εισόδου,
και υπάρχει ένα ρυθμιστικό του δείτε από την πλευρά εξόδου.
>> Ίσως είσαι καλός πρόσωπο, και έτσι ίσως να
δεν θα κάνει οποιαδήποτε ζημιά στο μοντέλο, αλλά ίσως δεν είσαι.
Ή μήπως υπάρχει κάποιος που ένας κακόβουλος χρήστης που θα ίσως
θέλουν να βλάψουν τη βάση δεδομένων σας, ίσως διαγράψει τα πάντα από τη βάση δεδομένων σας,
η οποία θα μπορούσε να είναι πολύ ακριβά.
Προφανώς, έχοντας χρήστη is-- δεδομένων υπάρχει αξία να έχουν τα δεδομένα του χρήστη.
Και έτσι, αν δεν είχαμε θέσει αυτό το ρυθμιστικό ζώνη μεταξύ του χρήστη και του database--
ο χρήστης και τα πράγματα model-- ενδέχεται να μην πάνε και τόσο καλά για εμάς.
>> Και γι 'αυτό είναι σημαντικό να έχουν αυτό το παράδειγμα, όπου
ο χρήστης μπορεί να αλληλεπιδράσει με τη βάση δεδομένων, σίγουρος, αλλά θα πρέπει να περάσουν μέσα από εμάς
να το κάνεις.
Και αυτό είναι βασικά η ιδέα με το MVC.
Είναι προσπαθεί να υλοποιήσει την ασφάλεια των δεδομένων.
Είναι προσπαθούν να προστατεύσουν το μοντέλο από ακούσια ή εκούσια
κακόβουλους χρήστες.
>> Έτσι τι συμβαίνει όταν εφαρμόζουμε αυτό το παράδειγμα;
Λοιπόν, είμαστε χωρίζει τα δεδομένα απαιτείται από website-- μας
ο model-- από τη λογική που υλοποιεί την ιστοσελίδα μας
functionality-- την controller-- και από απλή αισθητική και σελίδα
πρότυπα που περιλαμβάνουν μας χρήστης experience-- τη θέα.
Τι σημαινει αυτο?
Λοιπόν, αυτό σημαίνει ότι μπορείτε να κάνετε βλέπει ορατή στο χρήστη.
Μπορείτε να αποκρύψετε το μοντέλο μακριά.
Και controllers-- το χρήστη δεν μπορεί ίσως να χειριστείτε άμεσα.
Δεν χρειάζεται να αποκτήσετε πρόσβαση στον κώδικα της PHP σας.
Απλά πρέπει να δούμε μια μορφή όπου μπορούν να πληκτρολογήσετε τα πράγματα σε.
Έτσι ίσως η μορφή είναι μία άποψη, ο ελεγκτής
είναι η PHP που η μορφή υποβάλλει, το ελεγκτής κάνει ένα ερώτημα για το μοντέλο,
το μοντέλο δίνει περισσότερες πληροφορίες σε μια διαφορετική άποψη ότι
εμφανίζει πληροφορίες για εσάς.
>> Τα προγράμματά σας μπορούν να έχουν πρόσβαση όλα επιχειρηματική λογική σας,
αλλά οι χρήστες σας δεν μπορεί άμεσα πρόσβαση επιχειρηματική λογική σας.
Και ένα ιδιαίτερα, ίσως, ορατή απεικόνιση αυτή
είναι που έχετε λάβει ποτέ 403 Απαγορευμένη σφάλμα.
Έχετε πάει ποτέ σε μια ιστοσελίδα σελίδα και να δει 403 Forbidden;
Είναι κάτι σαν 404 Not Found.
>> 403 Απαγορευμένη σημαίνει ότι θα προσπαθήσει να έχει πρόσβαση μια σελίδα που δεν έχετε πρόσβαση.
Ίσως αυτό να είναι το site χρησιμοποιώντας διαχωρισμό MVC
για να κρύψει μακριά επιχειρηματική λογική του ότι πρέπει να υπάρχει στο διακομιστή για
για τη σελίδα για να εργαστούν, αλλά δεν θέλετε να μεταβείτε άμεσα.
Έτσι, μπορείτε να πάρετε μια 403 Forbidden σφάλμα.
>> Και δεν θα είναι καν θέμα αν ήταν συνδεδεμένοι.
Κανένας χρήστης δεν μπορεί να αγγίξει αυτό το dot PHP αρχείο.
Μπορούν να αγγίξει μόνο αυτό, και αυτό ένα--
το ένα που μπορούν να touch-- ίσως μπορούν να αλληλεπιδρούν με το κλειδωμένο αρχείο
πιο έμμεσα από τον χρήστη.
>> Έτσι, βλέπουμε μερικές φορές αυτό δικαιώματα σφάλμα, αυτό 403 Forbidden.
Πώς μπορούμε να αλλάξουμε τα δικαιώματα έτσι ότι τα πράγματα μπορεί ή δεν μπορεί να δει κανείς;
Όταν το κάνουμε αυτό συνήθως είναι να χρησιμοποιήσετε ένα Εντολών του Linux που ονομάζεται chmod-- C-H-mod.
>> Για να γίνει αυτό, η μορφή είναι αρκετά simple-- chmod, άδειες,
και ό, τι αρχείο που θέλετε να εφαρμόσει την αλλαγή αυτή σε.
Έτσι, ίσως θέλετε να δείτε κάτι όπως this-- chmod 600 helpers.php.
Ή ίσως θέλετε να δείτε this-- chmod μια Plus X που περιλαμβάνει τον κατάλογο.
Ήταν σημαίνει αυτό όμως;
Έτσι, υπάρχουν δύο διαφορετικοί τρόποι ότι οι παραχωρήσεις είναι συνήθως
εφαρμόζεται χρησιμοποιώντας chmod.
Η πρώτη ονομάζεται οκταδικό μέθοδο αριθμούς.
Αυτό ισχύει συνήθως δικαιώματα σε τρεις διαφορετικές κατηγορίες
των χρηστών ταυτόχρονα.
Έτσι chmod 711 αρχείο θα επιτρέψει το δικαίωμα να διαβάζει, να γράφει, και να εκτελέσει
το αρχείο σας, θα επιτρέψει others-- ειδικά
ομάδα σας και η world-- να εκτελέσει μόνο το αρχείο.
Αυτό είναι ό, τι μεταφράζεται αυτό.
Ο πρώτος αριθμός υπάρχει είναι ό, τι μπορείτε να κάνετε,
ο δεύτερος αριθμός είναι τι ομάδα σας μπορεί να κάνει,
και ο τρίτος είναι αυτό που ο κόσμος μπορεί να κάνει.
Όποιος επισκέπτεται σας σελίδα, αυτός είναι ο κόσμος.
>> Τι είναι αυτοί οι αριθμοί στην πραγματικότητα μεταφράζεται σε όμως;
Έτσι, αυτά τα βασικά μεταφράζουν σαν αυτό.
Εάν η άδεια είναι μηδέν, τίποτα δεν μπορεί να συμβεί.
Αν είναι ένα, μπορείτε να εκτελέσετε το file-- αν αυτό είναι την άδειά σας.
Αν είναι δύο, μπορείτε να γράψετε το αρχείο αλλά δεν μπορείτε να κάνετε τίποτα άλλο.
Αν είναι τρεις, να σας μπορεί να γράψει και να εκτελέσει.
Και ούτω καθεξής, όπως μπορείτε να δείτε.
Και επτά σημαίνει ότι μπορείτε να κάνετε τα πάντα.
>> Γιατί, λοιπόν, αυτά ονομάζονται οκταδικό αριθμούς;
Λοιπόν, αν το σκεφτείς, εδώ είναι σαν ΔΑ και yeses,
και αν σκεφτούμε τους το κόκκινο και το πράσινο κουτιά,
Ίσως αυτό κάνει λίγο πιο σαφής.
Αλλά αν σκεφτούμε αυτά τα κόκκινα κουτιά ως μηδενικά και τα πράσινα κουτιά όπως αυτά,
αυτά είναι στην πραγματικότητα απλά σύνολα των δυαδικών αριθμών, έτσι δεν είναι;
000 μεταφράζεται σε δεκαδική 0? 001, δεκαδικά 1? 010 είναι δεκαδικός 2, και ούτω καθεξής.
Και έτσι λέμε αυτά οκταδικό αριθμοί, διότι εκεί
είναι οκτώ διαφορετικές δυνατότητες.
Υπάρχουν οκτώ διαφορετικά ψηφία, αν είμαστε
μιλάμε για τρεις bits του information--
το bit ανάγνωσης, η διαγραφή bit, και το εκτελέσει λίγο.
Έτσι τώρα μπορείτε να μιλήσετε δυαδικό, δεκαδικό, δεκαεξαδικό, οκταδικό και.
Έτσι, ξέρετε πώς να επικοινωνούν με υπολογιστές σε τέσσερις διαφορετικές αριθμός
συστήματα, έτσι ώστε να είναι αρκετά δροσερό.
>> Έτσι, εκτός από το οκταδικό καθεστώτος άδεια, δεν υπάρχει
Επίσης, η συμβολική άδεια σύστημα, το οποίο είναι ελαφρώς διαφορετική
και συνήθως χρησιμοποιείται καλύτερα να εφαρμόσει ή αφαιρέσετε μια άδεια σε όλους τους τομείς.
Έτσι chmod a Plus X αρχείο να προσθέσω το δικαίωμα
να εκτελέσει και στις τρεις κατηγορίες users--
τον εαυτό σας, την ομάδα σας, και τον κόσμο.
Αυτός είναι ο συν την προσθήκη του μέρους.
Το δικαίωμα να εκτελέσει, αυτό είναι το x.
Και το γεγονός ότι ισχύει για όλους τρεις ομάδες των χρηστών θα είναι το ένα.
>> Έτσι this-- ένα συν x-- πρόκειται πιθανώς να είναι ακριβώς το ίδιο με chmod 711
αρχείο, γιατί αν πάμε πίσω και να εξετάσουμε το σύστημα οκταδικό αριθμό,
αυτά και εφτάρια μας το δώσει δικαίωμα να εκτελέσει ένα αρχείο.
Έτσι, αυτό είναι πιθανώς το ίδιο.
>> Και μπορείτε να το χρησιμοποιήσετε οδηγός αναφοράς για ό, τι
τα διάφορα πράγματα στο συμβολική δομή chmod-σης είναι.
Τα πράσινα αντικείμενα εδώ θα είναι όπου όλο το πράσινο χρώμα παράδειγμα
Ήταν πριν από ένα δευτερόλεπτο.
Το μπλε θα είναι το μπλε.
Το πορτοκαλί θα είναι το πορτοκάλι.
Έτσι, μπορείτε να εφαρμόσετε τα πράγματα για σας ομάδα, για τους άλλους, με το χρήστη,
ή σε όλους.
Μπορείτε να δώσετε τα διαβάσετε, γράψει και να εκτελέσει την πρόσβαση,
και μπορείτε να προσθέσετε ή να αφαιρέσετε ή να εκχωρήσετε ακριβώς ένα σετ
των αδειών που χρησιμοποιούν αυτό το μοντέλο.
>> Πώς μπορούμε να ελέγχετε τι καθεστώς άδειας αρχείο είναι;
Πριν να την αλλάξουμε, είναι ίσως καλό να γνωρίζουμε πραγματικά
ποια είναι τα δικαιώματα αρχείου είναι.
Ένας τρόπος για να γίνει αυτό είναι να εκτελέσετε την εντολή ls αλλά απλά λίγο τσίμπημα.
Έτσι, αν τύπου LS εξόρμηση l-- αυτό είναι ένα πεζό l-- ίσως
Θα δείτε κάτι σαν αυτό.
Μοιάζει λίγο αινιγματικά, αλλά το μέρος που πραγματικά νοιάζονται για
είναι τα πράγματα στα αριστερά εκεί.
Αυτό καθορίζει στην πραγματικότητα ένα σύστημα δικαιωμάτων στο αρχείο.
Και μπορείτε να πείτε ίσως επειδή είναι πήρε το r, το βάρος του, και το Χ είναι διάσπαρτα.
>> Εκείνοι πρώτη three-- αγνοώντας την πρώτη
για μια δεύτερη, η οποία θα διπλασιάσουμε τα πίσω για να.
Αυτοί οι τρεις πρώτοι μετά η first-- έτσι το δεύτερο,
τρίτη και τέταρτη χαρακτήρες της συμβολοσειράς 10 χαρακτήρων
είναι τα δικαιώματα που έχετε.
Έτσι, προφανώς, μπορώ να διαβάσει, γράψει και να εκτελέσει PHP.
Μπορώ να διαβάζουν, να γράφουν, και εκτελέσει PHP WebDev,
και μπορώ να διαβάσει και να γράψει test.php.
>> Η ομάδα μου μπορεί να το κάνει αυτό.
Έτσι, προφανώς, με την PHP και PHP WebDev καταλόγους,
η ομάδα μου μπορεί να γράψει σε τους, αλλά τίποτα άλλο.
Και ο κόσμος δεν μπορεί να κάνει τίποτα.
Έτσι, αυτά τα αρχεία δεν είναι προσβάσιμες από το κοινό
και αν προσπάθησα να πρόσβαση σε αυτά και δεν ήμουν
Apache τρέχει να τα καταστήσει προσβάσιμα, τότε θα πάρει ένα σφάλμα 403.
Είναι μια αποτυχία.
Προσπάθησα να αποκτήσετε πρόσβαση σε ένα αρχείο, αλλά εγώ Δεν έχετε δικαιώματα για να το κάνουμε.
Και τι είναι αυτό το πρώτο χαρακτήρα;
Λοιπόν, μπορείτε πιθανώς να προεκτείνουν εδώ ότι η d's αναφέρονται στους καταλόγους
και η παύλα σημαίνει λεγόμενη «κανονικά αρχεία".
Και ίσως έχετε δει αυτό, όταν έχετε Προσπάθησα να αφαιρέσετε ένα αρχείο χρησιμοποιώντας rm.
Έχετε δει τον κρυπτικό μήνυμα "αφαίρεση κανονικό αρχείο" - στην περίπτωση αυτή,
θα ήθελα να είναι test.php.
Κανονικό αρχείο είναι απλά κάτι αυτό δεν είναι ένας κατάλογος.
Υπάρχουν μια-δυο άλλους εδώ, αλλά γενικά είστε
πρόκειται να δούμε d's για τους καταλόγους και τίποτα για το πρώτο στοιχείο.
Αλλά αυτό είναι πραγματικά όλα υπάρχει σε αυτό.
Μπορείτε να ελέγξετε το αρχείο δικαιώματα, χρησιμοποιώντας την εντολή ls παύλα l,
μπορείτε να τις αλλάξετε χρησιμοποιώντας chmod.
Και, φυσικά, να χρησιμοποιήσει these-- αλλάζοντας τα δικαιώματα
να επιβάλει αυτήν την MVC παράδειγμα να την προστασία των δεδομένων στην ιστοσελίδα σας
και να μην επιτρέπουν στους χρήστες να έχουν πρόσβαση σε όλα,
αλλά μόνο τα πράγματα που χρειάζονται να έχουν πρόσβαση, προκειμένου για τη σελίδα σας
να λειτουργεί με τον τρόπο που θέλετε να εργαστείτε.
>> Είμαι ο Νταγκ Lloyd.
Αυτό είναι CS50.