[Παίζει μουσική] ROB BOWDEN: Hi. Είμαι Rob, και ελπίζω να είστε έτοιμοι να θέσει απόθεμα στο διάλυμα αυτό. Κατ 'αρχάς, ας ρίξουμε μια ματιά στο μητρώο. Έτσι, να θυμάστε ότι εδώ είμαστε έλεγχο για να δούμε αν μια μορφή ήταν δημοσιεύτηκε σε αυτή τη σελίδα. Έτσι το πρώτο πράγμα που θα πάμε να κάνετε είναι να πάτε στο άλλο. Και θα πάμε να καταστήσει η φόρμα εγγραφής. Έτσι, η φόρμα εγγραφής θα για να δημοσιεύσετε στο register.php. Και τι πρόκειται να στείλετε; Πρόκειται να στείλετε ένα όνομα χρήστη ότι η χρήστης θα πρέπει να συμπληρώσετε, έναν κωδικό πρόσβασης, και επιβεβαίωση - πληκτρολογήσει τον κωδικό πρόσβασης και πάλι. Μέχρι τώρα, όταν αυτή η μορφή δημοσιεύτηκε register.php θα εκτελέσει αυτή την περίπτωση. Κοιτάζοντας αυτό, αν, είμαστε οι πρώτοι πρόκειται να επικυρώσει την είσοδο. Θέλουμε να βεβαιωθείτε ότι το όνομα χρήστη και ο κωδικός πρόσβασης δεν ήταν κενά και ότι η επιβεβαίωση πραγματικότητα ταιριάζει με τον κωδικό πρόσβασης. Μόλις έχουμε διαπιστώσει ότι μπορούμε στην πραγματικότητα εγγραφή του χρήστη. Τι σημαίνει αυτό; Λοιπόν, θέλουμε να εισαχθεί η χρήστη στη βάση δεδομένων μας. Και αυτό είναι το πώς θα το κάνουμε. Έτσι θα πάμε για να ενταχθούν στα χρηστών τραπέζι το όνομα χρήστη πεδία, hash, και τα μετρητά. Η προκαθορισμένη τιμή των μετρητών πρόκειται να είναι 10.000. Και θα πάμε να περάσει ως όνομα χρήστη, όνομα χρήστη, μέσω του POST super παγκόσμιο αυτό είναι που υποβάλλονται από τη φόρμα. Και θα πάμε για την κρυπτογράφηση τον κωδικό πρόσβασης. Έτσι, αν αυτό καταφέρει, τότε τα αποτελέσματα θα είναι μη-ψευδής. Αν αποτύχει, τότε θα Θέλω να ζητήσω συγνώμη. Κάτι πήγε στραβά. Και τι θα μπορούσε να πάει στραβά; Λοιπόν, πρέπει να υπάρχει ένα μοναδικό όνομα. Και έτσι το ερώτημα θα μπορούσε να αποτύχει αν το όνομα χρήστη που ήδη υπήρχε στον πίνακα. Έτσι, υποθέτοντας ότι ήταν ένα μοναδικό όνομα χρήστη, Στη συνέχεια θα πάμε στο ερώτημα για να αρπάξει το ID του εν λόγω χρήστη. Να θυμάστε ότι το ID είναι αυτόματη προσαύξηση. Και έτσι αν συμβεί να αποτύχει για κάποιο λόγο, τότε θα ήθελα να ζητήσω συγνώμη ότι δεν θα μπορούσε να αρπάξει την ταυτότητα. Αλλά και αν υποτεθεί ότι δεν απέτυχε, τότε αρπάζουμε το ID από αυτό το ερώτημα επέστρεψε, αποθηκεύουν ότι σε συνεδρία μας - έτσι θέλουμε να συνδεθείτε σε αυτόν το χρήστη από αποθήκευση του αναγνωριστικού στη σύνοδο super παγκόσμια, και, τέλος, ανακατεύθυνση στο χαρτοφυλάκιό μας. Και αυτό είναι για μητρώο. Τώρα θα πάμε να προχωρήσουμε στο απόσπασμα. Έτσι παράθεση πρόκειται να έχει ένα πραγματικά παρόμοιο set up. Βλέπουμε εδώ ότι αυτός είναι ο κώδικας που θα πάμε να εκτελέσει όταν μια μορφή είναι δημοσιεύτηκε σε αυτή τη σελίδα. Αλλά πρώτα έχουμε στην πραγματικότητα να καταστήσει το εν λόγω έντυπο. Έτσι, λαμβάνοντας μια ματιά σε μορφή απόσπασμα, τι τα πεδία είναι εκεί; Βλέπουμε ότι όλες απόσπασμα έχει είναι ένα ενιαίο πλαίσιο κειμένου με το σύμβολο όνομα. Και έτσι όταν το έντυπο απόσπασμα έχει αναρτηθεί να quote.PHP είμαστε τώρα πρόκειται να εκτέλεση αυτού του κώδικα. Και η μόνη μεταβλητή στην POST μας super παγκόσμια πρόκειται να είναι το σύμβολο. Εμείς επικυρώνει ότι για να βεβαιωθείτε ότι που δημοσιεύτηκε στην πραγματικότητα το σύμβολο. Και αν δεν το έκαναν, θα σας πω πρέπει να παρέχει ένα σύμβολο. Υποθέτοντας ότι έκαναν παρέχουν ένα σύμβολο, κοιτάζουμε μέχρι αυτό το σύμβολο. Τώρα θυμηθείτε ότι κοιτάζω προς τα πάνω μπορεί να έχει απέτυχε, δεδομένου ότι, καλά, ίσως δεν ήταν έγκυρο σύμβολο για να αρχίσει με. Έτσι, αν αυτό το βλέμμα μέχρι την επιστροφή ψευδείς, θα ήθελα να ζητήσω συγνώμη ότι η σύμβολο δεν βρέθηκε. Μόλις έχουμε βρει το σύμβολο, τώρα μπορεί να καταστήσει το πρότυπο quote.PHP. Τι σημαίνει αυτό μοιάζει; Αυτό ακριβώς πρόκειται να εκτυπώσετε ότι ένα μερίδιο από ό, τι το όνομα αποθέματα ήταν Αξίζει ό, τι η τιμή της μετοχής είναι. Τώρα γιατί δεν χρησιμοποιούμε αυτό το htmlspecialchars λειτουργούν; Αυτό συμβαίνει γιατί το όνομα και το σύμβολο μετοχής μπορεί στην πραγματικότητα να περιέχουν ειδικές χαρακτήρες που δεν θα πρέπει να να ερμηνευθεί ως HTML. Εντάξει, έτσι ώστε να είναι για το απόσπασμα. Τώρα θέλουμε να δούμε index.php και χαρτοφυλακίου. Αλλά πρώτα πρέπει πραγματικά να κατασκευάσει ο πίνακας χαρτοφυλάκια. Εδώ είναι το πώς θα πάμε να το κάνουμε αυτό. Έτσι, ας ρίξουμε μια ματιά στη δομή. Και βλέπουμε ότι τα χαρτοφυλάκια πίνακας πρόκειται να έχει μια ταυτότητα. Έτσι, αυτό πρόκειται να είναι το χρήστη ID που είναι εισαγωγή των μετοχών. Έχουμε ένα σύμβολο, το οποίο πρόκειται να είναι το σύμβολο της εταιρείας που είμαστε εισαγωγή των μετοχών. Και τότε οι μετοχές είναι ο αριθμός των μετοχές που εισάγεται. Έτσι, να θυμάστε ότι το κατά το spec το chipset, ορίζουμε ότι η ταυτότητα και το σύμβολο - ελέγχουμε δείκτες, ταυτότητας και σύμβολο είναι το πρωτεύον κλειδί. Έτσι, ένα όνομα χρήστη και το σύμβολο αντιστοίχιση πρέπει να εμφανίζεται μόνο μία φορά σε αυτόν τον πίνακα. Τώρα, ας δούμε τον κώδικα. Έτσι τώρα index.php πρόκειται να αρπάξει όλα των πληροφοριών του χαρτοφυλακίου μας και εμφανίσει στο χρήστη. Έτσι, η πρώτη, θα πάμε για να αρπάξει τα μετρητά ότι ο χρήστης έχει τη στιγμή από το τραπέζι μετρητών. Να θυμάστε, ότι το ερώτημα θα είναι πάντα να επιστρέψει μια σειρά από πίνακες. Έτσι ακόμα κι αν επιλεγεί μόνο μετρητά από μία μόνο γραμμή, χρειάζεται ακόμη να πιάσε ότι τα μετρητά από την τιμαριθμική αναπροσαρμογή σε η zeroth δείκτης των γραμμών και την αρπαγή της Δείκτης μετρητά. Έτσι, τώρα θέλουμε να επιλέξετε όλα τα πληροφορίες από τον πίνακα χαρτοφυλάκια που είναι σχετικές με το παρόν συνδεδεμένος χρήστης. Εμείς, φυσικά, πρέπει να επαληθευτεί ότι ότι στην πραγματικότητα πέτυχε, το οποίο θα πρέπει πάντα να κάνετε κάθε φορά που το ερώτημα. Μόλις έχουμε όλες αυτές τις πληροφορίες, το spec το chipset μας πληροφορεί ότι εμείς θα πρέπει να το κάνετε αυτό, προκειμένου να όμορφα αποθηκεύσει όλες τις πληροφορίες σε αυτό θέσεις του πίνακα. Έτσι είμαστε looping πάνω από όλα τα Πληροφορίες χαρτοφυλακίου, αναζητώντας το απόθεμα σχετίζονται με κάθε γραμμή στο Πληροφορίες χαρτοφυλακίου, και στη συνέχεια αποθήκευση στη συστοιχία θέση το όνομα, τιμή, μετοχές και το σύμβολο όλων που σχετίζονται με το εν λόγω απόθεμα. Και τέλος, θα πάμε να καταστήσει portfolio.PHP, περνώντας το ποσό των μετρητών που έχουμε σήμερα, η θέσεις πίνακα που μόλις κατασκευαστεί, και ο τίτλος αυτής της σελίδα η οποία θα είναι το χαρτοφυλάκιο. Ας ρίξουμε μια ματιά σε portfolio.PHP. Και βλέπουμε ότι το μεγαλύτερο ενδιαφέρον μέρος είναι αυτό βρόχο. Έτσι είμαστε looping πάνω από τις θέσεις συστοιχία, δημιουργώντας ένα πίνακα, όπου ο εν λόγω πίνακας - είμαστε συμπλήρωση κάθε γραμμή με το πληροφορίες που βάζουμε μέσα το θέσεις του πίνακα. Και πάλι, θα πρέπει να χρησιμοποιήσετε htmlspecialchars σε περίπτωση που αυτό το σύμβολο ή το όνομα περιέχουν χαρακτήρες HTML. Και εδώ είμαστε πολλαπλασιασμό της τιμής και το ποσό των μετοχών που έχουμε προκειμένου να πάρει το πόσο αυτό είναι σήμερα η αξία για τον χρήστη. Και αυτό είναι για το χαρτοφυλάκιο. Τώρα θα ρίξουμε μια ματιά σε sell. Έτσι πωλούν πρόκειται να πάει πίσω στο μορφή που είχαμε στην register.php. Βλέπουμε ότι μια μορφή πρόκειται να αναρτηθεί σε αυτή τη σελίδα. Αλλά πρώτα, όταν θα φορτώσει τη σελίδα, θα πάμε να το κάνουμε αυτό. Έτσι τι είναι αυτό το κάνει; Λοιπόν, θα μπορούσαμε να έχουμε μόνο τη σελίδα πώληση έχουν ένα ενιαίο πλαίσιο κειμένου που ο χρήστης εισέρχεται σε αυτό το σύμβολο που θέλουμε να πουλήσουμε. Αλλά θα πάμε να είναι λίγο πιο έξυπνος και θα πάμε να έχουν μια σταγόνα προβλέπουν ότι επιτρέπει στο χρήστη να επιλέξει πραγματικά σύμβολα που έχουν ήδη. Έτσι παίρνουμε το χαρτοφυλάκιο του χρήστη. Εμείς πάμε για να επιλέξετε από τα χαρτοφυλάκια όλα τα σύμβολα που ο χρήστης έχει σήμερα, το παρόν συνδεδεμένος χρήστης. Βεβαιωθείτε ότι το πέτυχε. Και τώρα θα πάμε να βρόχο πάνω από το επέστρεψε πληροφορίες, ακριβώς την αρπαγή κάθε σύμβολο, και την αποθήκευση σε αυτήν την σειρά συμβόλων. Και τώρα θα πάμε να καθιστούν τη μορφή πώλησης. Έτσι, η μορφή πώλησης πρόκειται απλά είναι ένα drop down μενού, μια επιλογή. Και κάθε επιλογή υπό τη μορφή πώλησης είναι πρόκειται να εκτυπώσετε μόνο το σύμβολο ότι άρπαξε από το χαρτοφυλάκια πίνακα. Έτσι, η μορφή πώλησης πρόκειται να υποβάλλουν πίσω στο sell.PHP. Κοιτάζοντας sell.PHP, αυτός είναι ο κώδικας που πρόκειται να εκτελέσει, όταν θα υποβάλει σε αυτή τη σελίδα. Θέλουμε να επικυρώσει ότι ο χρήστης που είναι εγγεγραμμένες ένα σύμβολο. Τώρα αν υποτεθεί ότι το έκαναν - έτσι και τώρα θέλουμε να καθορίσουμε πόσα μοιράζεται ο χρήστης στην πραγματικότητα πώλησης και πόσα χρήματα ο χρήστης θα πρέπει να πάρει για την πώληση ότι πολλές μετοχές. Γι 'αυτό και πιάσε τον αριθμό των μετοχών που ο χρήστης έχει για αυτό το σύμβολο. Ψάχνουμε σε χαρτοφυλάκια για το συγκεκριμένο χρήστη και το συγκεκριμένο σύμβολο. Τώρα, βεβαιωθείτε ότι όντως επέστρεψε μια σειρά. Γιατί αν δεν το έκανε, ο χρήστης δεν στην πραγματικότητα έχουν αυτό το σύμβολο για να πουλήσει. Υποθέτοντας ότι έχουν αυτό το σύμβολο, θέλουμε να αρπάξει τον αριθμό των μετοχές που έχουν. Και τώρα θέλουμε να δούμε μέχρι το πώς πολύ κάθε μετοχή αξίζει. Γι 'αυτό και χρησιμοποιείται για τη λειτουργία κοιτάζω προς τα πάνω. Ψάχνουμε την τιμή του συμβόλου. Υποθέτοντας ότι το βλέμμα επάνω πέτυχε, τώρα θα πάμε να ενημερώσετε πραγματικότητα όλα οι πληροφορίες. Έτσι θέλουμε να διαγραφεί από τα χαρτοφυλάκια οι μετοχές που πουλάτε. Θέλουμε να ενημερώσετε το χρήστη χρηματικό ποσό. Και είμαστε το ενημέρωση από μετοχές φορές την τιμή της μετοχής - έτσι ώστε να είναι πόσα χρήματα ο χρήστης που μόλις έκανε. Και τώρα θέλουμε να ενημερώσετε την ιστορία μας. Έτσι, δεν έχουμε λάβει μια ματιά στο τραπέζι ιστορία ακόμα. Γι 'αυτό και θα επανέλθουμε σε αυτό. Τώρα επιτέλους θα πάμε να ανακατευθύνει πίσω στο χαρτοφυλάκιο. Τώρα, ας ρίξουμε μια ματιά στην αγορά. Έτσι, αγοράζετε θα πρέπει να είναι αρκετά παρόμοια με πουλήσει. Βλέπουμε ότι είμαστε και πάλι θα για να ελέγξετε για να δείτε αν είμαστε την υποβολή σε αυτή τη σελίδα. Υποθέτοντας ότι δεν είμαστε, είμαστε πρόκειται να φορτωθεί το έντυπο buy. Τι κάνει λοιπόν η μορφή buy μοιάζει; Βλέπουμε εδώ είναι απλά μια τακτική μορφή που πρόκειται να υποβάλλουν πίσω στο buy.PHP. Και πρόκειται να έχει ένα σύμβολο που ο χρήστης εισέρχεται, ο αριθμός των μετοχές που ο χρήστης θέλει να αγοράσει αυτού του συμβόλου, και αυτό είναι όλο. Έτσι, όταν υποβάλλουν πίσω στο buy.PHP, είμαστε τώρα πρόκειται να εκτελέσει αυτόν τον κώδικα. Εμείς πάλι θέλετε να επικυρώσετε ότι η χρήστης εισάγει κάτι που ισχύει. Έτσι, εδώ είμαστε να διασφαλίσουμε ότι που είναι εγγεγραμμένες ένα σύμβολο. Εδώ είμαστε να διασφαλίσουμε ότι που είναι εγγεγραμμένες μετοχές. Και εδώ είμαστε να διασφαλίσουμε ότι άρχισε έναν ακέραιο αριθμό μετοχών, έτσι ώστε δεν προσπαθείτε να αγοράσει μετοχές της ABC. Τώρα θέλουμε να δούμε την τιμή του σύμβολο έτσι ξέρουμε πόσο μετρητά πρέπει να αφαιρούν από το χρήστη. Τώρα θα επιλέξουμε πόσα μετρητά το χρήστη στην πραγματικότητα έχει και βεβαιωθείτε ότι ότι πέτυχε. Εδώ είμαστε αρπάζοντας τα χρήματα. Και τώρα εδώ, είμαστε φροντίζοντας ώστε ο χρήστης να έχει αρκετά μετρητά. Έτσι, αν ο αριθμός των μετοχών του χρήστη θέλει να αγοράσει φορές την τιμή του κάθε των μετοχών αυτών είναι μεγαλύτερη από το ποσό των μετρητών που έχουμε, τότε η χρήστης δεν μπορεί να αντέξει αυτό. Υποθέτοντας ότι ο χρήστης έχει αρκετά μετρητά, τώρα θέλουμε να το τοποθετήσετε στη χαρτοφυλάκιο του χρήστη. Λοιπόν, θα εισάγουμε στο χρήστη χαρτοφυλακίου, εφόσον αυτό συμβαίνει να είναι η πρώτη φορά που ο χρήστης αγοράζει το συγκεκριμένο σύμβολο. Αλλά ό, τι και αν συμβεί ήδη να έχουν κάποια μετοχής της Apple; Λοιπόν, τώρα είμαστε κάνοντας χρήση του για διπλούν κλειδί δήλωση ενημέρωση. Έτσι, αυτός είναι ο λόγος νωρίτερα αυτό διευκρινίζεται ότι ID και το σύμβολο πρέπει να είναι μια κοινή πρωτεύον κλειδί, έτσι ώστε αν προσπαθήσουμε να εισάγετε μια ταυτότητα και ένα σύμβολο που είναι ήδη εκεί, εμείς θα ενημερώσουμε ακριβώς το μετοχές να συμπεριληφθούν οι νέες μετοχές που ο χρήστης αγοράζει. Τώρα θέλουμε να ενημερώσετε το ποσό των μετρητά που διαθέτει ο χρήστης, εφόσον μόλις περάσει κάποια χρήματα για τις μετοχές αυτές. Και τέλος, θα ενημερώσει ο πίνακας ιστορία και πάλι. Η οποία, και πάλι, θα δούμε σε σε ένα δευτερόλεπτο. Και, τέλος, θα ανακατευθύνει πίσω στην portfolio.PHP. Έτσι, ας ρίξουμε μια ματιά στο ο πίνακας της ιστορίας. Τώρα, να θυμάστε ότι ο πίνακας ιστορία είναι υποτίθεται για να παρακολουθείτε όλες τις αγορές και πωλεί ότι όλοι οι χρήστες κάνουν, όχι μόνο το σημερινός αριθμός των μετοχών που η οι χρήστες έχουν, το οποίο είναι αυτό χαρτοφυλάκιο είναι. Έτσι είμαστε παρακολούθηση του χρήστη που η αγορά ή πώληση, εάν η συγκεκριμένη συναλλαγή ήταν αγορά ή ένα ξεπούλημα, το σύμβολο που είναι να αγοραστεί ή να πωληθεί, ο αριθμός των μετοχών ότι είμαστε η αγορά ή η πώληση, η τιμή του απλού μερίδιο που είναι να αγοράζονται ή πωλούνται, και, τέλος, το χρόνο ότι αυτή η αγορά ή πώληση συμβαίνουν. Και αυτό είναι όλο της ιστορίας πληροφορίες που χρειαζόμαστε να παρακολουθείτε. Έτσι, όταν κοιτάξαμε πωλούν, είδαμε ότι ήμασταν εισαγωγή στην ιστορία πώληση, όπως αν είμαστε αγορά ή πώληση, η τρέχουσα σφραγίδας χρόνου, και το τρέχοντα χρήστη, το σύμβολο που είναι να πωλούνται, ο αριθμός των μετοχών που είναι που πωλούνται, και η τιμή του το απόθεμα αυτή τη στιγμή. Ομοίως, στην αγορά, θα φαίνονται σχεδόν το ίδιο. Η μόνη διαφορά είναι, αντί της πώλησης, είμαστε αγοράζουν. Έτσι, στην πωλούν και να αγοράζουν, είμαστε εισάγοντας Ο πίνακας ιστορίες όλα τα αγοράζει και πωλεί που συμβαίνουν. Έτσι, όλα history.PHP χρειάζεται να κάνετε είναι να αρπάξει οι πληροφορίες από την ιστορία πίνακα, βεβαιωθείτε ότι πέτυχε, και να καταστήσει τις εν λόγω πληροφορίες. Έτσι, εξετάζοντας το πρότυπο history.PHP, οι ενδιαφέρουσες πληροφορίες είναι ακριβώς εδώ. Είμαστε looping πάνω από όλα τα συναλλαγές, την εκτύπωση αν αυτό Ήταν μια αγοράσει ή να πουλήσει, μορφοποίηση ημερομηνίας και ώρας ότι κάναμε αυτή τη συναλλαγή. Θυμηθείτε ότι πρέπει να χρησιμοποιήσετε htmlspecialchars σχετικά με την σύμβολο, μόνο στην περίπτωση. Και τέλος, η μορφοποίηση του αριθμού των μετοχών που αγοράστηκαν και την τιμή ενός ενιαίου μεριδίου εκείνη τη στιγμή. Και αυτό εμφανίζει όλες της ιστορίας πληροφορίες που χρειαζόμαστε. Και αυτό είναι για αυτό το chipset. Το όνομά μου είναι Rob, και αυτό ήταν CS50 Οικονομικών.