1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Week 8, Sambungan] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Universiti Harvard] 3 00:00:04,000 --> 00:00:08,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Ini adalah CS50, jadi ini adalah akhir 8 Minggu di sini. 5 00:00:13,000 --> 00:00:16,000 Kami sudah tentu mempunyai sedikit taufan awal minggu ini, 6 00:00:16,000 --> 00:00:19,000 jadi sekarang ia adalah benar-benar hanya anda dan saya di dalam dewan kuliah ini, 7 00:00:19,000 --> 00:00:22,000 tetapi hari ini kita meneruskan perbualan kami tentang PHP 8 00:00:22,000 --> 00:00:25,000 dan tentang pengaturcaraan web lebih amnya, dan kita juga memperkenalkan idea 9 00:00:25,000 --> 00:00:29,000 pangkalan data, terutamanya yang dipanggil MySQL, yang cukup popular pada hari ini, 10 00:00:29,000 --> 00:00:34,000 dalam sebahagian besar kerana berskala serta kerana menjadi sumber bebas dan terbuka. 11 00:00:34,000 --> 00:00:37,000 >> Tetapi pertama, lihat di mana kita berhenti kali terakhir. 12 00:00:37,000 --> 00:00:40,000 Ingatlah bahawa kita telah melihat Frosh beberapa contoh IM, 13 00:00:40,000 --> 00:00:44,000 dan ini adalah bentuk yang mengerikan bahawa saya datang dengan kira-kira 15 tahun + yang lalu 14 00:00:44,000 --> 00:00:49,000 untuk mempunyai pelajar pada daftar kampus untuk sukan bayat di antara dinding 15 00:00:49,000 --> 00:00:52,000 tanpa sebenarnya perlu berjalan lagi di seluruh kawasan itu untuk Wigglesworth 16 00:00:52,000 --> 00:00:56,000 ke slaid sekeping kertas fizikal bawah pintu beberapa pengawas mahasiswa. 17 00:00:56,000 --> 00:00:59,000 Sebaliknya kita berpindah segala-galanya dalam talian, tetapi untuk berbuat demikian kita perlu untuk menggunakan 18 00:00:59,000 --> 00:01:03,000 daripada beberapa teknologi, jadi satu, kita perlu HTML, bahasa tokokan hiperteks, 19 00:01:03,000 --> 00:01:07,000 yang sekali lagi adalah ini bahasa markup yang anda membuat laman web strukturnya. 20 00:01:07,000 --> 00:01:10,000 >> Menggunakan sedikit CSS pada hari ini, melata style sheet, 21 00:01:10,000 --> 00:01:16,000 di mana kita menggunakan stylizations laman web menggunakan sintaks yang sedikit berbeza, 22 00:01:16,000 --> 00:01:19,000 manakala HTML adalah semua tentang struktur tersebut. 23 00:01:19,000 --> 00:01:21,000 Kita juga perlu untuk memperkenalkan bahasa pengaturcaraan web. 24 00:01:21,000 --> 00:01:25,000 Dalam kes ini, kita akan menggunakan PHP, dan PHP akan membolehkan kita 25 00:01:25,000 --> 00:01:28,000 ke kandungan output dinamik serta melakukan perkara-perkara perancangan seperti 26 00:01:28,000 --> 00:01:33,000 menghantar e-mel, seperti mana yang berlaku pada nota kita meninggalkan minggu lepas. 27 00:01:33,000 --> 00:01:35,000 >> Ingatlah bahawa kod ini adalah dalam 2 bahagian. 28 00:01:35,000 --> 00:01:38,000 Satu, kita terpaksa froshims3.php, 29 00:01:38,000 --> 00:01:42,000 dan ini adalah sebahagian besarnya markup dengan bentuk HTML di dalamnya, 30 00:01:42,000 --> 00:01:45,000 sedikit kecil CSS di sini dalam ciri-ciri gaya 31 00:01:45,000 --> 00:01:48,000 supaya bentuk itu sendiri akan berpusat pada halaman, tetapi lebih dari itu 32 00:01:48,000 --> 00:01:51,000 kami mempunyai beberapa input borang wakil, medan teks Kotak pilihan,, 33 00:01:51,000 --> 00:01:55,000 beberapa butang radio, pilih menu, dan butang submit. 34 00:01:55,000 --> 00:02:01,000 Dan melalui borang ini, kami menyerahkan untuk fail yang nampaknya dipanggil register3.php, 35 00:02:01,000 --> 00:02:04,000 yang sendiri kelihatan sesuatu yang kecil seperti ini. 36 00:02:04,000 --> 00:02:08,000 Kini, kebanyakan kod di register3.php, ingat, adalah semua tentang e-mel. 37 00:02:08,000 --> 00:02:11,000 Ia tidak sedikit pengesahan borang yang telah dikemukakan untuk memastikan 38 00:02:11,000 --> 00:02:14,000 bahawa bidang sebenarnya syarat yang dijangka. 39 00:02:14,000 --> 00:02:18,000 Kemudian kita dipanggil beberapa fungsi PHP menggunakan sedikit sintaks baru, 40 00:02:18,000 --> 00:02:20,000 walaupun ia dipinjam dari C. 41 00:02:20,000 --> 00:02:24,000 >> Ini pengendali arrow membolehkan kita untuk membuat menggunakan sesuatu yang dipanggil berorientasi objek pengaturcaraan. 42 00:02:24,000 --> 00:02:27,000 Kami tidak akan pergi ke mana-mana secara terperinci di sini, tetapi tahu sekarang 43 00:02:27,000 --> 00:02:31,000 ia adalah cara yang mempunyai fungsi-fungsi yang berkaitan dengan objek, 44 00:02:31,000 --> 00:02:34,000 yang adalah sejenis khas struktur, seperti yang kita lihat di C. 45 00:02:34,000 --> 00:02:37,000 Tetapi untuk sekarang, hanya mengambil kepercayaan bahawa ini adalah sintaks yang betul untuk menggunakan 46 00:02:37,000 --> 00:02:41,000 apabila menggunakan perpustakaan seperti perpustakaan PHPMailer ini. 47 00:02:41,000 --> 00:02:44,000 Dan kemudian oleh akhir fail ini kita telah dijana secara dinamik e-mel 48 00:02:44,000 --> 00:02:47,000 yang mendapat dihantar ke akaun jharvard@cs50.net saya 49 00:02:47,000 --> 00:02:50,000 dari akaun jharvard@cs50.net saya, 50 00:02:50,000 --> 00:02:54,000 dan kami memaklumkan kepada pengguna dengan sewajarnya bahawa mereka telah mendaftar untuk sukan ini. 51 00:02:54,000 --> 00:02:57,000 Itu adalah cukup banyak apa tapak Frosh IM lakukan semua tahun-tahun yang lalu 52 00:02:57,000 --> 00:03:00,000 apabila saya dilaksanakan, diberikan, dalam bahasa yang berbeza, 53 00:03:00,000 --> 00:03:02,000 tetapi ia menunjukkan anda mungkin kuasa yang anda ada 54 00:03:02,000 --> 00:03:05,000 sekarang bahawa anda boleh meluahkan diri anda bukan sahaja programatik 55 00:03:05,000 --> 00:03:08,000 pada tahap yang rendah dalam bahasa seperti C tetapi pada tahap yang lebih tinggi 56 00:03:08,000 --> 00:03:11,000 dengan aplikasi ini dunia yang amat nyata seperti e-mel untuk benar-benar menyelesaikan 57 00:03:11,000 --> 00:03:13,000 beberapa masalah dunia sebenar. 58 00:03:13,000 --> 00:03:16,000 >> Kini, sudah tentu, walaupun saya menggunakan skrip ini untuk menjana beberapa 59 00:03:16,000 --> 00:03:20,000 e-mel dinamik dari jharvard@cs50.net, yang memang akaun 60 00:03:20,000 --> 00:03:23,000 bahawa saya mempunyai akses kepada, jangan menjadi agak berhati-hati untuk menghantar 61 00:03:23,000 --> 00:03:26,000 mail sahaja dari akaun yang sebenarnya anda sendiri, 62 00:03:26,000 --> 00:03:30,000 supaya perkara mendapatkan anda dalam sedikit air panas dalam kehidupan. 63 00:03:30,000 --> 00:03:35,000 Dengan itu berkata, mari kita kini peralihan untuk menyelesaikan masalah yang berbeza sama sekali, 64 00:03:35,000 --> 00:03:37,000 bahawa negeri penahan. 65 00:03:37,000 --> 00:03:39,000 Kini, apakah ini sebenarnya bermakna? 66 00:03:39,000 --> 00:03:42,000 HTTP, ini protokol pemindahan hypertext, 67 00:03:42,000 --> 00:03:45,000 sebenarnya protokol bernegara, dan apa yang bermakna ini adalah bahawa 68 00:03:45,000 --> 00:03:48,000 apabila anda tarik sehingga sesuatu seperti Google.com dan kemudian tekan enter 69 00:03:48,000 --> 00:03:51,000 biasanya pelayar anda mempunyai beberapa jenis ikon berputar yang kemudian 70 00:03:51,000 --> 00:03:54,000 keputusan dalam beberapa laman web yang dimuat turun, 71 00:03:54,000 --> 00:03:57,000 dan kemudian bahawa ikon sedikit berhenti berputar, dan bahawa sesungguhnya mencadangkan 72 00:03:57,000 --> 00:04:02,000 HTTP telah menyiapkan beberapa jenis sambungan kepada pelayan dan itu sahaja. 73 00:04:02,000 --> 00:04:05,000 HTTP adalah bernegara dalam erti kata bahawa ia tidak mengekalkan 74 00:04:05,000 --> 00:04:08,000 sambungan berterusan kepada pelayan di Skype dengan cara yang sama tidak 75 00:04:08,000 --> 00:04:11,000 atau GChat tidak kerana dengan HTTP 76 00:04:11,000 --> 00:04:15,000 andaian adalah bahawa apabila anda telah diambil laman web itu sahaja. 77 00:04:15,000 --> 00:04:18,000 >> Sekarang, dalam realiti hari ini di laman seperti Facebook dan Google Maps 78 00:04:18,000 --> 00:04:21,000 dan Twitter dan sebagainya terdapat dinamisme yang lebih banyak di mana 79 00:04:21,000 --> 00:04:25,000 walaupun selepas ikon yang berhenti berputar anda sebenarnya boleh mendapatkan lebih banyak update 80 00:04:25,000 --> 00:04:29,000 dari pelayan, lebih banyak tweet, kemaskini status di Facebook dan sebagainya. 81 00:04:29,000 --> 00:04:33,000 Tetapi, walaupun yang menggunakan teknik yang kita akan bercakap tentang dalam satu atau dua minggu 82 00:04:33,000 --> 00:04:36,000 dikenali sebagai Ajax menggunakan bahasa yang dipanggil JavaScript, 83 00:04:36,000 --> 00:04:38,000 tetapi pada akhir hari, HTTP masih bernegara. 84 00:04:38,000 --> 00:04:42,000 Dan lagi jika anda entah bagaimana mahu ingat perkara-perkara mengenai pengguna 85 00:04:42,000 --> 00:04:44,000 walaupun selepas mereka telah dicabut dari pelayan anda 86 00:04:44,000 --> 00:04:47,000 PHP tidak mampu anda satu cara untuk berbuat demikian 87 00:04:47,000 --> 00:04:52,000 kerana, seperti yang kita lihat masa lalu, PHP mempunyai beberapa superglobals, 88 00:04:52,000 --> 00:04:55,000 dan Superglobal adalah, sekali lagi, pembolehubah global khas 89 00:04:55,000 --> 00:04:59,000 yang diserahkan kepada anda oleh pelayan web dan oleh PHP sendiri. 90 00:04:59,000 --> 00:05:02,000 >> Anda tidak perlu berbuat apa-apa untuk meletakkan nilai-nilai di dalamnya, 91 00:05:02,000 --> 00:05:05,000 dan antara superglobals kita telah melihat setakat mendapatkan dan hantar, 92 00:05:05,000 --> 00:05:08,000 yang mana medan borang diletakkan secara automatik untuk anda, 93 00:05:08,000 --> 00:05:11,000 serta beberapa orang lain yang kita tidak pernah melihat lagi. 94 00:05:11,000 --> 00:05:17,000 Dalam _server $ adalah beberapa pembolehubah khas yang berkaitan dengan pelayan sendiri. 95 00:05:17,000 --> 00:05:22,000 Apakah alamat IP, apa protokol, HTTP atau HTTPS adakah anda menggunakan, 96 00:05:22,000 --> 00:05:25,000 apa permintaan kaedah adakah anda menggunakan dan sebagainya, jadi ada beberapa yang menarik, 97 00:05:25,000 --> 00:05:29,000 butiran berair tentang pelayan, dan pada hakikatnya, pengguna di sana juga. 98 00:05:29,000 --> 00:05:33,000 Terdapat $ _cookie, yang mana perkara-perkara ini dipanggil cookies disimpan. 99 00:05:33,000 --> 00:05:36,000 Kami tidak akan menghabiskan masa pada cookies diri mereka hari ini, 100 00:05:36,000 --> 00:05:40,000 tetapi tahu sekarang bahawa cookie adalah hanya sebahagian kecil maklumat 101 00:05:40,000 --> 00:05:43,000 bahawa pelayan web boleh menanam pada pelayar web 102 00:05:43,000 --> 00:05:46,000 dan seterusnya RAM atau cakera keras komputer 103 00:05:46,000 --> 00:05:49,000 untuk menyimpan maklumat tentang pengguna, misalnya, nama pengguna mereka 104 00:05:49,000 --> 00:05:52,000 supaya mereka tidak perlu menaip setiap kali mereka log masuk atau beberapa 105 00:05:52,000 --> 00:05:55,000 nombor unik atau pengenal pasti bagi pengguna yang 106 00:05:55,000 --> 00:05:58,000 supaya anda tidak perlu menyusahkan mereka dengan jenis yang sama soalan mengenai 107 00:05:58,000 --> 00:06:00,000 keutamaan dalam masa depan, tetapi kebanyakan kepentingan 108 00:06:00,000 --> 00:06:02,000 sekarang adalah $ _session. 109 00:06:02,000 --> 00:06:07,000 >> Ini Superglobal, yang, seperti yang lain, diserahkan kepada anda secara automatik oleh PHP 110 00:06:07,000 --> 00:06:10,000 apabila anda menulis laman web berasaskan PHP- 111 00:06:10,000 --> 00:06:13,000 boleh menyimpan apa sahaja yang anda mahu, rentetan, integer, 112 00:06:13,000 --> 00:06:16,000 mata terapung, nilai, array, objek, 113 00:06:16,000 --> 00:06:20,000 benar-benar apa-apa yang anda mahu, dan ia membolehkan anda untuk menyimpan dalam apa-apa cara 114 00:06:20,000 --> 00:06:23,000 bahawa walaupun jika pengguna melawat anda sekarang dan kemudian 115 00:06:23,000 --> 00:06:26,000 datang kembali minit dari sekarang atau 5 minit dari sekarang kerana 116 00:06:26,000 --> 00:06:28,000 mereka mengambil masa mereka sebelum mengklik beberapa pautan lain 117 00:06:28,000 --> 00:06:32,000 PHP akan memastikan bahawa apa sahaja yang anda dimasukkan ke dalam Superglobal sesi itu 118 00:06:32,000 --> 00:06:37,000 minit atau 5 minit lalu masih akan berada di sana apabila pengguna pulangan. 119 00:06:37,000 --> 00:06:40,000 Dan di bawah hood Superglobal ini dilaksanakan dengan cara 120 00:06:40,000 --> 00:06:44,000 perkara-perkara yang dipanggil cookies, tetapi untuk sekarang, ia adalah hanya satu abstraksi 121 00:06:44,000 --> 00:06:47,000 di mana ia adalah jenis bersamaan perancangan shopping cart. 122 00:06:47,000 --> 00:06:50,000 Apa sahaja yang anda, pengaturcara, dimasukkan ke dalam itu 123 00:06:50,000 --> 00:06:53,000 array bersekutu Superglobal akan berada di sana beberapa beberapa minit kemudian 124 00:06:53,000 --> 00:06:59,000 sehingga anda memadamkannya atau sehingga pengguna berhenti pelayar beliau sama sekali. 125 00:06:59,000 --> 00:07:02,000 >> Mari kita melihat contoh bagaimana perkara ini sebenarnya digunakan. 126 00:07:02,000 --> 00:07:07,000 Dalam counter.php kalangan keping hari ini kod 127 00:07:07,000 --> 00:07:09,000 kita mempunyai baris berikut. 128 00:07:09,000 --> 00:07:13,000 Pada permulaan fail ini kita mempunyai sekumpulan komen biru, yang tidak menarik buat masa sekarang. 129 00:07:13,000 --> 00:07:15,000 Tetapi dalam 13 baris kita mempunyai baris baru, 130 00:07:15,000 --> 00:07:18,000 session_start, dan yang benar-benar melakukan apa yang dikatakan. 131 00:07:18,000 --> 00:07:20,000 Ia bermula sesi. 132 00:07:20,000 --> 00:07:25,000 Ia membolehkan anda untuk menggunakan yang besar Superglobal $ _session, dan ia adalah semudah itu. 133 00:07:25,000 --> 00:07:30,000 Sekarang, jika kita teruskan untuk melihat pada garis 16, mari kita cuba untuk mengetahui apa yang laman web ini akan lakukan. 134 00:07:30,000 --> 00:07:35,000 Jika (isset ($ _SESSION ["kaunter"]) kemudian pergi ke hadapan 135 00:07:35,000 --> 00:07:39,000 dan kedai dalam pembolehubah kaunter, kaunter kecil, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Kaunter"]. 137 00:07:42,000 --> 00:07:45,000 Ini seolah-olah mengisytiharkan pembolehubah tempatan yang dipanggil kaunter 138 00:07:45,000 --> 00:07:48,000 di mana ia meletakkan salinan apa yang ada di dalam satu Superglobal 139 00:07:48,000 --> 00:07:52,000 dipanggil sesi di lokasi "kaunter." 140 00:07:52,000 --> 00:07:56,000 Yang lain, nampaknya, ini kaunter sedikit ubah tempatan, dimulakan kepada 0. 141 00:07:56,000 --> 00:08:01,000 >> Tetapi kemudian beberapa baris kemudian dalam 26 notis bahawa salinan sesi kaunter, 142 00:08:01,000 --> 00:08:06,000 utamanya, mempunyai nilai yang ditugaskan baru yang adalah nilai semasa campur 1. 143 00:08:06,000 --> 00:08:09,000 Secara ringkas, fail ini seolah-olah mengemaskini 144 00:08:09,000 --> 00:08:13,000 kaunter yang disimpan di dalam Superglobal sesi 145 00:08:13,000 --> 00:08:16,000 oleh incrementing ia sebanyak 1, tetapi ia pertama mengekalkan salinan nilai sebelumnya 146 00:08:16,000 --> 00:08:20,000 dengan menyimpannya dalam pembolehubah tempatan dipanggil $ kaunter, 147 00:08:20,000 --> 00:08:22,000 dan kemudian turun di sini mari kita lihat apa yang tinggal. 148 00:08:22,000 --> 00:08:24,000 Ia ternyata ia adalah cukup banyak hanya HTML. 149 00:08:24,000 --> 00:08:29,000 Pada bahagian bawah halaman ini, kita lihat dalam 37 baris yang saya telah melawat laman ini 150 00:08:29,000 --> 00:08:33,000 bilangan kaunter kali, jadi terdapat ciri-ciri pasangan yang menarik di sini. 151 00:08:33,000 --> 00:08:36,000 Satu, ini adalah jelas pembolehubah, tetapi ia tidak mencukupi untuk hanya meletakkan 152 00:08:36,000 --> 00:08:39,000 $ Kaunter dalam badan HTML anda kerana kursus 153 00:08:39,000 --> 00:08:43,000 jika ia hanya ada di kalangan PHP HTML anda akan menganggap bahawa hanya HTML. 154 00:08:43,000 --> 00:08:48,000 Anda benar-benar mahu $ kaunter akan dicetak pada skrin. 155 00:08:48,000 --> 00:08:51,000 >> Tetapi bukan dengan menjatuhkan ke mod PHP 156 00:08:51,000 --> 00:08:55,000 dengan sehelai ini sintaks kita dinamik boleh memasukkan nilai di sini 157 00:08:55,000 --> 00:08:58,000 sangat serupa dalam semangat untuk apa yang kita lakukan masa lalu dengan 158 00:08:58,000 --> 00:09:00,000 memasukkan nilai ke dalam rentetan. 159 00:09:00,000 --> 00:09:04,000 Malah, ini adalah hanya notasi trengkas untuk mengatakan sesuatu seperti ini benar-benar, 160 00:09:04,000 --> 00:09:12,000 cetak ($ ​​kaunter) atau bahkan sesuatu seperti printf (% s, kaunter), 161 00:09:12,000 --> 00:09:14,000 ataupun, kerana anda mungkin telah dilihat dalam talian atau dalam buku teks, 162 00:09:14,000 --> 00:09:17,000 ada fungsi dalam PHP dipanggil echo 163 00:09:17,000 --> 00:09:20,000 yang melakukan perkara yang sama, dan semua orang adalah cara hanya lagi lebar 164 00:09:20,000 --> 00:09:25,000 mengatakan 00:09:28,000 Dalam satu kes ini, anda tidak perlu meletakkan 166 00:09:28,000 --> 00:09:30,000 PHP perkataan selepas tanda tanya. 167 00:09:30,000 --> 00:09:34,000 Ini adalah notasi trengkas, sekali lagi, apa yang kita hanya melihat seketika lalu 168 00:09:34,000 --> 00:09:37,000 yang mengulangi beberapa nilai. 169 00:09:37,000 --> 00:09:39,000 >> Mari kita lihat apa hasil akhir ini sebenarnya adalah. 170 00:09:39,000 --> 00:09:43,000 Mari saya pergi lebih ke dalam fail counter.php kami, 171 00:09:43,000 --> 00:09:47,000 dan kita akan melihat bahawa Daud hanya membuat kesilapan dengan bermain dengan kod di sana. 172 00:09:47,000 --> 00:09:50,000 Mari kita pergi menetapkan apa sahaja yang beliau diskrukan sehingga, 173 00:09:50,000 --> 00:09:54,000 dan kesilapan itu seolah-olah berada di sana, pergi, pada 37 baris. 174 00:09:54,000 --> 00:09:59,000 Menurut ke atas halaman ini, saya telah melawat laman web ini 0 kali. 175 00:09:59,000 --> 00:10:02,000 Nah, mari kita pergi ke hadapan sekarang, dan pada bahagian atas pelayar klik pada 176 00:10:02,000 --> 00:10:05,000 reload ikon, dan saya klik reload, 177 00:10:05,000 --> 00:10:12,000 dan sekarang saya telah melawat tapak 1 masa, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 Dan sesungguhnya, jika kita melihat sumber halaman ini kod sumber sebenar berubah, 179 00:10:16,000 --> 00:10:19,000 dan notis ketiadaan lengkap PHP mana-mana, dan itu kerana 180 00:10:19,000 --> 00:10:23,000 Kod PHP dinilai atau ditafsirkan sebelah pelayan, 181 00:10:23,000 --> 00:10:27,000 dan sebagainya yang bermakna bahawa output skrip PHP adalah apa yang akhirnya dihantar ke pelayar, 182 00:10:27,000 --> 00:10:31,000 yang dalam kes ini adalah beberapa HTML mentah dan beberapa teks mentah. 183 00:10:31,000 --> 00:10:33,000 Apa yang berlaku di sini? 184 00:10:33,000 --> 00:10:37,000 >> Nah, dengan agak beberapa baris kod yang saya dapat menyimpan 185 00:10:37,000 --> 00:10:40,000 berterusan sepanjang beberapa saat, atau jika kita menunggu cukup lama, 186 00:10:40,000 --> 00:10:44,000 minit, walaupun jam, beberapa nilai dalam cara yang menjadikan HTTP 187 00:10:44,000 --> 00:10:47,000 stateful kelihatan seolah-olah kita telah mengekalkan 188 00:10:47,000 --> 00:10:51,000 ini sambungan kepada pelayan, dan ia hanya mengingati apa yang saya memberitahu ia kali terakhir, 189 00:10:51,000 --> 00:10:55,000 tetapi pada hakikatnya terdapat sekumpulan keseluruhan kerumitan yang berlaku di bawah hood 190 00:10:55,000 --> 00:10:59,000 melibatkan cookies yang membolehkan PHP untuk memberikan saya ilusi ini 191 00:10:59,000 --> 00:11:02,000 kart membeli-belah ini seperti ciri. 192 00:11:02,000 --> 00:11:05,000 Buat masa sekarang, satu contoh yang remeh di mana kita hanya menyimpan integer, 193 00:11:05,000 --> 00:11:08,000 tetapi ciri yang akan kembali untuk menjadi nilai yang besar 194 00:11:08,000 --> 00:11:10,000 apabila kita mula bercakap tentang projek-projek yang lebih kompleks, 195 00:11:10,000 --> 00:11:12,000 kalangan mereka masalah menetapkan 7. 196 00:11:12,000 --> 00:11:16,000 Ini adalah masalah anda yang terakhir ditetapkan dalam CS50. 197 00:11:16,000 --> 00:11:19,000 Saya tahu, ia begitu sedih, tetapi apa yang anda akan dapati adalah bahawa kita akan menyimpulkan 198 00:11:19,000 --> 00:11:22,000 ini sebahagian semester dengan sebenarnya peralihan 199 00:11:22,000 --> 00:11:25,000 dari konteks C pastinya konteks PHP 200 00:11:25,000 --> 00:11:27,000 tetapi semasa menggunakan beberapa asas-asas yang sama 201 00:11:27,000 --> 00:11:29,000 kita telah bercakap tentang untuk beberapa ketika. 202 00:11:29,000 --> 00:11:33,000 >> Objektif dengan pset 7 adalah untuk melaksanakan CS50 Kewangan, 203 00:11:33,000 --> 00:11:37,000 yang adalah versi anda sendiri Yahoo Kewangan atau Kewangan Google 204 00:11:37,000 --> 00:11:40,000 ataupun Etrade.com mana anda mempunyai keupayaan untuk 205 00:11:40,000 --> 00:11:43,000 melihat harga saham untuk simbol yang diberikan, tetapi lebih daripada itu 206 00:11:43,000 --> 00:11:48,000 anda mempunyai keupayaan untuk "membeli" dan "menjual" saham 207 00:11:48,000 --> 00:11:51,000 yang didagangkan di pelbagai bursa saham kerana sebagai halaman rumah ini 208 00:11:51,000 --> 00:11:55,000 sini mencadangkan, yang benar-benar sejauh mana kita telah mula 209 00:11:55,000 --> 00:11:59,000 set masalah bagi anda, anda mempunyai satu bentuk login yang meminta nama pengguna dan kata laluan. 210 00:11:59,000 --> 00:12:03,000 Ia mempunyai butang submit, tetapi selepas itu, kerana akhirnya kita akan melihat, 211 00:12:03,000 --> 00:12:06,000 tiada apa yang benar-benar berlaku di bawah hood lagi kerana ia 212 00:12:06,000 --> 00:12:09,000 kekal bagi anda untuk melaksanakan keupayaan untuk mendaftar pengguna baru, 213 00:12:09,000 --> 00:12:12,000 keupayaan untuk membeli saham, untuk menjual saham, 214 00:12:12,000 --> 00:12:14,000 untuk benar-benar melihat harga saham semasa. 215 00:12:14,000 --> 00:12:17,000 >> Dan sesungguhnya, ini akan menjadi sebagai dunia sebenar mungkin kerana kita lakukan 216 00:12:17,000 --> 00:12:20,000 termasuk sedikit kod yang akan membolehkan anda dengan fungsi tunggal 217 00:12:20,000 --> 00:12:25,000 query Yahoo Kewangan, yang hebat membuat data percuma yang disediakan 218 00:12:25,000 --> 00:12:31,000 untuk mencari harga saham berdasarkan simbol saham atau simbol ticker, 219 00:12:31,000 --> 00:12:34,000 dan anda mendapat kembali harga saham semasa hari. 220 00:12:34,000 --> 00:12:37,000 Data anda sebenarnya melihat dalam pset ini khususnya akan 221 00:12:37,000 --> 00:12:40,000 kira-kira sebagai dunia sebenar kerana ia boleh mendapatkan supaya anda sebenarnya pengantaramukaan 222 00:12:40,000 --> 00:12:43,000 dengan saham dunia sebenar, harga dunia sebenar, 223 00:12:43,000 --> 00:12:47,000 dan kita akan melihat berapa banyak wang yang anda boleh membuat mungkin 224 00:12:47,000 --> 00:12:51,000 dalam tempoh beberapa hari akan datang bermain dengan set masalah anda sendiri. 225 00:12:51,000 --> 00:12:55,000 >> Tetapi mari kita mula-mula menyediakan pentas untuk bagaimana untuk reka bentuk sesuatu yang sudah tentu lebih rumit 226 00:12:55,000 --> 00:12:59,000 daripada counter.php, yang lebih rumit daripada mana-mana IM Frosh contoh setakat ini, 227 00:12:59,000 --> 00:13:02,000 dan mari kita cuba untuk memperkenalkan beberapa paradigma di sini yang membolehkan kita 228 00:13:02,000 --> 00:13:06,000 untuk kedua-dua pset 7 dan mungkin bagi projek akhir anda jika anda melakukan sesuatu berasaskan web 229 00:13:06,000 --> 00:13:11,000 untuk menyimpan kod anda teratur, untuk menjaga diri anda waras, 230 00:13:11,000 --> 00:13:15,000 dan untuk mengambil langkah ke arah bekerjasama, sama ada di dalam projek akhir CS50 231 00:13:15,000 --> 00:13:18,000 atau di luar jika anda terus untuk memprogram sesuatu di masa hadapan. 232 00:13:18,000 --> 00:13:21,000 Ada ini paradigma reka bentuk umum 233 00:13:21,000 --> 00:13:24,000 dalam bidang sains komputer dan pembangunan perisian lebih amnya 234 00:13:24,000 --> 00:13:27,000 dikenali sebagai MVC, model view pengawal, 235 00:13:27,000 --> 00:13:30,000 dan ini adalah singkatan bodoh yang menggambarkan idea yang sangat bagus, 236 00:13:30,000 --> 00:13:34,000 yang merupakan pemisahan aspek yang berbeza program, 237 00:13:34,000 --> 00:13:39,000 khusus menjaga berasingan logik atau logik perniagaan laman web 238 00:13:39,000 --> 00:13:42,000 jadi apa-apa yang yang melibatkan perkara-perkara seperti 239 00:13:42,000 --> 00:13:45,000 memanggil fungsi dan pertanyaan pangkalan data dan sebagainya 240 00:13:45,000 --> 00:13:48,000 tidak berlaku di kalangan HTML anda 241 00:13:48,000 --> 00:13:51,000 tetapi dalam fail yang berasingan, dan sesungguhnya, ada fail ini satu 242 00:13:51,000 --> 00:13:54,000 biasanya bahawa anda telah dipanggil pengawal 243 00:13:54,000 --> 00:13:56,000 yang benar-benar otak di sebalik operasi, dan kita akan melihat contoh 244 00:13:56,000 --> 00:13:58,000 ini hanya seketika. 245 00:13:58,000 --> 00:14:01,000 >> Ada model yang pengaturcaraan kod 246 00:14:01,000 --> 00:14:05,000 yang tidak bercakap kepada pangkalan data anda, yang bercakap dengan Yahoo Kewangan dan sebagainya, 247 00:14:05,000 --> 00:14:08,000 dan kemudian ada V di MVC, pandangan, 248 00:14:08,000 --> 00:14:11,000 semua barangan yang berkaitan dengan estetika, fail-fail yang sebenarnya mengandungi 249 00:14:11,000 --> 00:14:14,000 HTML anda, mungkin CSS anda dan sebagainya. 250 00:14:14,000 --> 00:14:17,000 Idea di sini, sebagai gambar ini mencadangkan, adalah bahawa pengawal 251 00:14:17,000 --> 00:14:21,000 adalah fail, seperti yang kita tidak lama lagi akan melihat dan seperti yang anda terutamanya akan melihat dalam pset 7, 252 00:14:21,000 --> 00:14:24,000 bahawa dunia bercakap dengan melalui pelayar web mereka. 253 00:14:24,000 --> 00:14:27,000 Itu adalah fail yang mendapat dilawati di internet awam, 254 00:14:27,000 --> 00:14:30,000 tetapi pengawal bercakap berpotensi model, 255 00:14:30,000 --> 00:14:34,000 yang merupakan satu atau lebih fail lain yang mengandungi kod yang berkaitan dengan data, 256 00:14:34,000 --> 00:14:37,000 kod yang berkaitan dengan pangkalan data dan sebagainya, dan kemudian ia bercakap kepada 257 00:14:37,000 --> 00:14:40,000 pengawal satu atau lebih fail lain yang dikenali sebagai pandangan, 258 00:14:40,000 --> 00:14:43,000 yang estetika laman web, template macam, 259 00:14:43,000 --> 00:14:47,000 yang mungkin mengambil beberapa data sebagai input, tetapi pada akhir hari 260 00:14:47,000 --> 00:14:50,000 logik sahaja di dalam pandangan harus penyediaan data, 261 00:14:50,000 --> 00:14:53,000 iterating atas gelung dan sebenarnya meludah keluar beberapa 262 00:14:53,000 --> 00:14:56,000 Berasaskan HTML rendition daripadanya atau bahkan sesuatu seperti PDF. 263 00:14:56,000 --> 00:14:59,000 >> Apa yang baik tentang MVC adalah bahawa anda boleh mempunyai pandangan yang berbeza 264 00:14:59,000 --> 00:15:02,000 berdasarkan jenis peranti, berdasarkan jenis format fail yang anda sebenarnya 265 00:15:02,000 --> 00:15:04,000 mahu menunjukkan kepada pengguna. 266 00:15:04,000 --> 00:15:10,000 Mari kita lihat pada contoh semakin kompleks dan direka dengan baik beberapa 267 00:15:10,000 --> 00:15:13,000 dengan bermula pertama dengan 0 versi di sini. 268 00:15:13,000 --> 00:15:16,000 Biar saya pergi ke hadapan dan membuka dalam direktori MVC kami hari ini 269 00:15:16,000 --> 00:15:21,000 fail dipanggil index.php di titik 0 direktori. 270 00:15:21,000 --> 00:15:26,000 Notis ini adalah sebuah laman web yang sangat mudah dan sangat underwhelming 271 00:15:26,000 --> 00:15:29,000 itulah jenis 0 versi homepage untuk CS50, 272 00:15:29,000 --> 00:15:32,000 dan melihat bagaimana kita mempunyai pautan ke Kuliah, kami mempunyai pautan ke Sukatan, 273 00:15:32,000 --> 00:15:35,000 dan jika saya mengikuti pautan kepada notis Kuliah bahawa URL 274 00:15:35,000 --> 00:15:39,000 top up akan untuk menukar kepada lectures.php. 275 00:15:39,000 --> 00:15:44,000 Jika saya kemudian ikuti pautan kepada notis Minggu 1 bahawa URL perubahan kepada week1.php. 276 00:15:44,000 --> 00:15:46,000 Terdapat seolah-olah menjadi struktur hierarki yang agak mudah di sini. 277 00:15:46,000 --> 00:15:49,000 >> Mari kita lihat cepat di bawah hood bagaimana ini dibentangkan, 278 00:15:49,000 --> 00:15:53,000 dan sesungguhnya, jika saya melihat index.php ia agak mudah. 279 00:15:53,000 --> 00:15:57,000 Malah, walaupun saya dipanggil fail ini PHP tidak ada kod pengaturcaraan sebenar. 280 00:15:57,000 --> 00:16:01,000 Ada satu komen yang saya tulis di sini dalam PHP hanya jadi pengguna tidak berakhir melihat ia. 281 00:16:01,000 --> 00:16:05,000 Sudah tentu, kerana sebelum ini, apa-apa yang di antara tag PHP 282 00:16:05,000 --> 00:16:08,000 mendapat ditafsirkan, walaupun ia adalah komen, dan mentafsir komen 283 00:16:08,000 --> 00:16:11,000 bermakna hanya untuk membuang ia jauh di hujung hari dan tidak sebenarnya 284 00:16:11,000 --> 00:16:15,000 hantar ke pelayar, jadi segala-galanya di sini hanya estetika. 285 00:16:15,000 --> 00:16:20,000 Jika saya membuka sama lectures.php ini juga adalah hanya fail berkod keras. 286 00:16:20,000 --> 00:16:23,000 Ia berlaku dipanggil sesuatu. Php, 287 00:16:23,000 --> 00:16:27,000 tetapi ia benar-benar hanya html, dan week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 sama hanya markup, jadi ada sekumpulan kelemahan reka bentuk ini. 289 00:16:31,000 --> 00:16:33,000 Satu, ia adalah sejumlah besar salin / tampal. 290 00:16:33,000 --> 00:16:37,000 Walaupun satunya perkara yang berubah antara fail-fail adalah senarai yang tidak tertib, 291 00:16:37,000 --> 00:16:41,000 tag li, saya tetap mempunyai jenis doc, HTML, kepala, 292 00:16:41,000 --> 00:16:44,000 tajuk, badan dekat, dekat HTML dan lebih 293 00:16:44,000 --> 00:16:47,000 dalam setiap fail tunggal, yang bermaksud bahawa jika saya pernah mahu untuk menyusun semula 294 00:16:47,000 --> 00:16:50,000 ini laman web atau restylize saya perlu pergi dan menukar 295 00:16:50,000 --> 00:16:54,000 semua fail-fail secara manual atau dengan beberapa besar-besaran mencari dan menggantikan. 296 00:16:54,000 --> 00:17:01,000 >> Mari kita mengambil satu langkah ke arah reka bentuk bijak, lagi berfikir dalam versi 1 di sini 297 00:17:01,000 --> 00:17:04,000 mana sebagai satu membacanya saya bahawa kita telah dimasukkan supaya anda boleh bermain bersama-sama dengan 298 00:17:04,000 --> 00:17:07,000 ini lebih santai di rumah notis bahawa kita mempunyai di sini 299 00:17:07,000 --> 00:17:10,000 ringkasan fail dalam versi 1 laman web ini, 300 00:17:10,000 --> 00:17:13,000 dan ia seolah-olah bahawa saya telah mengambil ia kepada diri saya kepada faktor keluar 301 00:17:13,000 --> 00:17:17,000 beberapa kod biasa, header.php dan footer.php. 302 00:17:17,000 --> 00:17:20,000 Nah, mari kita melihat apa yang ada di dalam orang yang awal pertama. 303 00:17:20,000 --> 00:17:23,000 Header.php kelihatan biasa, 304 00:17:23,000 --> 00:17:26,000 tetapi notis mana ia mendapatkan dipotong? 305 00:17:26,000 --> 00:17:30,000 Hak selepas baris 19, supaya bahawa segala-galanya adalah perkara biasa 306 00:17:30,000 --> 00:17:33,000 dari index.php fail, lectures.php, 307 00:17:33,000 --> 00:17:36,000 week1 dan week2.php daripada contoh sebelumnya. 308 00:17:36,000 --> 00:17:40,000 Apa yang saya lakukan ialah salinan dan segala-galanya dipotong itu adalah perkara biasa untuk semua fail-fail, 309 00:17:40,000 --> 00:17:44,000 meletakkan ia dalam fail pengepala berasingan, dan begitu juga dalam footer.php 310 00:17:44,000 --> 00:17:48,000 adakah saya memohon prinsip yang sama di mana garis sahaja menarik 311 00:17:48,000 --> 00:17:52,000 dalam footer.php adalah kedua-dua, badan rapat dan dekat HTML. 312 00:17:52,000 --> 00:17:55,000 >> Tetapi apakah ini bermakna sekarang adalah bahawa dalam versi baru 313 00:17:55,000 --> 00:17:59,000 notis index.php bagaimana lebih mudah ia boleh mendapatkan. 314 00:17:59,000 --> 00:18:02,000 Diberikan, sedikit lebih samar mencari, sedikit kurang intuitif 315 00:18:02,000 --> 00:18:06,000 untuk mengikuti atas ke bawah, tetapi Tuhan saya, semua lebihan itu kini hilang. 316 00:18:06,000 --> 00:18:10,000 Kami memerlukan menggunakan fungsi PHP literal dipanggil memerlukan top up, 317 00:18:10,000 --> 00:18:15,000 yang sangat mengingatkan, ingat, C # termasuk mekanisme. 318 00:18:15,000 --> 00:18:17,000 Kami memerlukan header.php di atas. 319 00:18:17,000 --> 00:18:20,000 Kami memerlukan footer.php di bahagian bawah, dan satu-satunya yang berbeza 320 00:18:20,000 --> 00:18:25,000 atau istimewa tentang fail ini adalah kandungan yang bertujuan untuk menjadi unik kepadanya. 321 00:18:25,000 --> 00:18:29,000 Jika saya kemudian pergi ke, katakan, lectures.php, prinsip yang sama terpakai. 322 00:18:29,000 --> 00:18:32,000 Sekali lagi, beberapa komen top up, tetapi kemudian saya memerlukan header, memerlukan pengaki, 323 00:18:32,000 --> 00:18:35,000 dan di antara ia hanya kandungan yang sebenarnya berubah. 324 00:18:35,000 --> 00:18:38,000 Dan jika kita melihat ke dalam Minggu 1 dan Minggu 2 kita akan melihat 325 00:18:38,000 --> 00:18:42,000 bahawa prinsip yang sama telah digunakan di sana. 326 00:18:42,000 --> 00:18:44,000 Nah, kita tidak cukup dilakukan di sana. 327 00:18:44,000 --> 00:18:48,000 >> Mari kita lihat pada versi 2, yang mempunyai struktur yang sama, 328 00:18:48,000 --> 00:18:50,000 tetapi notis sekarang saya telah memperkenalkan sesuatu yang lain. 329 00:18:50,000 --> 00:18:53,000 Dalam line 10 Saya telah diperkenalkan helpers.php, 330 00:18:53,000 --> 00:18:55,000 yang nampaknya mengandungi fungsi pembantu. 331 00:18:55,000 --> 00:18:58,000 Satu fungsi pembantu adalah umumnya fungsi yang agak singkat 332 00:18:58,000 --> 00:19:01,000 bahawa anda menulis untuk membantu anda keluar di pelbagai tempat, 333 00:19:01,000 --> 00:19:04,000 dan mari kita lihat apa yang di dalam helpers.php. 334 00:19:04,000 --> 00:19:07,000 Dalam kes ini, ia kelihatan seperti ia mempunyai 2 fungsi. 335 00:19:07,000 --> 00:19:10,000 Ingat dari hari lain dengan contoh kiub kami 336 00:19:10,000 --> 00:19:13,000 anda boleh menentukan fungsi-fungsi anda sendiri dalam PHP, dan apa yang saya lakukan sekarang adalah saya 337 00:19:13,000 --> 00:19:17,000 ditakrifkan fungsi yang dipanggil menyebabkan pengaki dan menyebabkan header, 338 00:19:17,000 --> 00:19:21,000 pertama yang mengambil parameter yang dipanggil data, 339 00:19:21,000 --> 00:19:25,000 yang nilai lalai pelbagai kosong, seperti yang dicadangkan di sana, 340 00:19:25,000 --> 00:19:29,000 dan kita sebenarnya boleh menulis ini lebih ringkas dalam versi terbaru PHP 341 00:19:29,000 --> 00:19:32,000 dengan mengatakan kurungan persegi terbuka, ditutup kurungan persegi. 342 00:19:32,000 --> 00:19:35,000 Itu bermakna pelbagai kosong 0 saiz tetapi masih array. 343 00:19:35,000 --> 00:19:38,000 >> Ini fungsi ekstrak adalah sedikit istimewa kerana 344 00:19:38,000 --> 00:19:41,000 apa yang ia adalah ia mengambil sebagai hujah pelbagai bersekutu 345 00:19:41,000 --> 00:19:45,000 yang mempunyai 0 atau lebih pasangan nilai utama, dan jika anda mempunyai kunci foo 346 00:19:45,000 --> 00:19:48,000 dan nilai bar fungsi cabutan 347 00:19:48,000 --> 00:19:51,000 mewujudkan situasi di mana sekarang, sebagai garis 11, 348 00:19:51,000 --> 00:19:57,000 anda mempunyai pembolehubah tempatan dipanggil $ Anu yang nilai adalah bar. 349 00:19:57,000 --> 00:19:59,000 Dan jika anda mempunyai lebih banyak kunci dan nilai-nilai dalam pelbagai data, 350 00:19:59,000 --> 00:20:03,000 sama mereka akan diekstrak ke dalam skop tempatan 351 00:20:03,000 --> 00:20:06,000 atau nama ruang supaya footer.php dan 352 00:20:06,000 --> 00:20:09,000 idea yang sama di bawah sini supaya header.php 353 00:20:09,000 --> 00:20:12,000 mempunyai akses kepada pembolehubah-pembolehubah. 354 00:20:12,000 --> 00:20:15,000 Malah, izinkan saya membuka semula header.php 355 00:20:15,000 --> 00:20:18,000 dan menarik perhatian sekarang apa yang kelihatan seperti dalam versi ini. 356 00:20:18,000 --> 00:20:22,000 >> Bukannya keras pengekodan CS50 sebagai tajuk bagi setiap halaman tunggal 357 00:20:22,000 --> 00:20:24,000 notis dinamisme yang mungkin sekarang. 358 00:20:24,000 --> 00:20:29,000 Dalam baris 5 Saya mengulangi pemboleh ubah tajuk, 359 00:20:29,000 --> 00:20:34,000 tetapi pertama saya lulus bahawa pemboleh ubah tajuk kepada fungsi yang dipanggil htmlspecialchars. 360 00:20:34,000 --> 00:20:38,000 Satu nama bodoh untuk fungsi, selagi ia adalah, tetapi ia benar-benar melakukan apa yang dikatakannya. 361 00:20:38,000 --> 00:20:41,000 Ia memastikan bahawa mana-mana aksara khas 362 00:20:41,000 --> 00:20:46,000 dalam rentetan yang telah diluluskan dalam betul melarikan diri HTML. 363 00:20:46,000 --> 00:20:49,000 Ini sebenarnya adalah satu cara mengelakkan sesuatu yang dipanggil tapak skrip serangan silang 364 00:20:49,000 --> 00:20:52,000 di mana seseorang boleh dengan sengaja atau tidak sengaja 365 00:20:52,000 --> 00:20:55,000 menyuntik HTML mereka sendiri ke dalam laman web anda 366 00:20:55,000 --> 00:20:59,000 dengan menampal ke dalam bentuk tertentu, misalnya, 367 00:20:59,000 --> 00:21:02,000 sesuatu yang anda tidak cukup mengharapkan, terutamanya kod JavaScript, 368 00:21:02,000 --> 00:21:05,000 seperti yang kita akan bercakap tentang dalam seminggu atau masa dua. 369 00:21:05,000 --> 00:21:08,000 >> Ini header.php sekarang, ia adalah pandangan 370 00:21:08,000 --> 00:21:12,000 dalam erti kata bahawa ia membolehkan anda untuk melihat estetika kandungannya beberapa set data. 371 00:21:12,000 --> 00:21:14,000 Tetapi lebih khusus, ia adalah template. 372 00:21:14,000 --> 00:21:19,000 Ini adalah jenis pelan tindakan sekarang apa yang kita mahu header setiap halaman untuk kelihatan seperti, 373 00:21:19,000 --> 00:21:23,000 tetapi terdapat beberapa dinamisme yang kita mahu tajuk secara dinamik dimasukkan 374 00:21:23,000 --> 00:21:26,000 berdasarkan pembolehubah tajuk 375 00:21:26,000 --> 00:21:30,000 yang telah diekstrak apabila kita dipanggil, sekali lagi, 376 00:21:30,000 --> 00:21:33,000 fungsi header render. 377 00:21:33,000 --> 00:21:36,000 Sekarang, jika kita melihat pengaki render, terdapat sebenarnya tidak banyak menggunakan bahawa sekarang 378 00:21:36,000 --> 00:21:40,000 kerana dalam footer.php terdapat ada dinamisme jua. 379 00:21:40,000 --> 00:21:43,000 Mungkin ada, tetapi pada masa ini ia adalah senarai keras berkod 2 tag, 380 00:21:43,000 --> 00:21:46,000 tetapi idea yang sama terpakai, supaya sebenarnya mencadangkan mengapa 381 00:21:46,000 --> 00:21:49,000 adakah kita membuang masa mempunyai tandukan render dan fungsi render footer? 382 00:21:49,000 --> 00:21:52,000 Izinkan saya pergi bukannya kini ke versi 3, 383 00:21:52,000 --> 00:21:56,000 dan dalam 3 versi dalam pembantu saya memutuskan untuk memudahkan ia lebih. 384 00:21:56,000 --> 00:21:58,000 >> Biar saya mempunyai satu fungsi render. 385 00:21:58,000 --> 00:22:02,000 Biar saya mempunyai ia mengambil hujah lain, kali ini dipanggil template, 386 00:22:02,000 --> 00:22:05,000 yang bertujuan untuk menjadi nama template, 387 00:22:05,000 --> 00:22:11,000 dan kemudian saya akan menyatukan angkuh. php nilai yang berubah-ubah, 388 00:22:11,000 --> 00:22:17,000 dan kemudian jika ia wujud foo.php, bar.php atau header.php dan footer.php, 389 00:22:17,000 --> 00:22:20,000 maka saya akan pergi ke hadapan dan mengekstrak data pembolehubah 390 00:22:20,000 --> 00:22:23,000 dan kemudian memerlukan jalan yang. 391 00:22:23,000 --> 00:22:29,000 Dalam erti kata lain, untuk menggunakan ini sekarang, jika saya membuka index.php 392 00:22:29,000 --> 00:22:32,000 notis bahawa saya tidak hubungi header render lagi. 393 00:22:32,000 --> 00:22:36,000 Saya hanya panggil menyebabkan, tetapi saya lulus dalam nilai yang dipetik header 394 00:22:36,000 --> 00:22:39,000 untuk membuat jelas template yang saya benar-benar mahu untuk beban. 395 00:22:39,000 --> 00:22:41,000 >> Kemudian di sini perasan apa yang saya lakukan. 396 00:22:41,000 --> 00:22:44,000 Saya lulus dalam dinamik kunci hakmilik, 397 00:22:44,000 --> 00:22:47,000 nilai CS50, dan ini juga, seperti yang kita lihat sebelum ini, 398 00:22:47,000 --> 00:22:51,000 boleh dibuat lebih ringkas dalam versi terbaru PHP 399 00:22:51,000 --> 00:22:54,000 di mana saya boleh menggantikan fungsi array dengan kurungan persegi, 400 00:22:54,000 --> 00:22:57,000 yang saya mencadangkan adalah lebih dibaca dan pastinya 401 00:22:57,000 --> 00:22:59,000 sedikit lebih mudah untuk menaip. 402 00:22:59,000 --> 00:23:02,000 Dan sudah tentu, dengan panggilan render nota kaki di bawah, 403 00:23:02,000 --> 00:23:05,000 kita tidak mengganggu lulus dalam hujah kedua pada semua, tiada array bersekutu, 404 00:23:05,000 --> 00:23:07,000 kerana terdapat dalam apa yang dinamik pengaki bahawa. 405 00:23:07,000 --> 00:23:10,000 Ia hanya beberapa tag rapat untuk HTML. 406 00:23:10,000 --> 00:23:14,000 Baik, kita sedang mengambil langkah-langkah ke arah benar-benar membersihkan perkara-perkara di sini, 407 00:23:14,000 --> 00:23:17,000 tetapi biarlah saya membuka 2 contoh akhir. 408 00:23:17,000 --> 00:23:21,000 Ini satu, nombor 4, notis bahawa saya telah membuat keputusan yang sedar sekarang 409 00:23:21,000 --> 00:23:26,000 untuk memperbaiki contoh sebelumnya oleh akhirnya menggunakan hierarki beberapa fail-fail saya. 410 00:23:26,000 --> 00:23:29,000 >> Perhatikan bahawa dalam ringkasan ini, ini membaca saya, saya telah diperkenalkan 411 00:23:29,000 --> 00:23:32,000 satu termasuk direktori dan direktori template 412 00:23:32,000 --> 00:23:35,000 kandungan yang akan menjadi perkara yang saya mahu termasuk 413 00:23:35,000 --> 00:23:38,000 dan template yang saya mahu untuk memberi, masing-masing. 414 00:23:38,000 --> 00:23:42,000 Ini adalah benar-benar saya dubur dan cuba untuk menjaga perkara-perkara kemas, 415 00:23:42,000 --> 00:23:45,000 menyimpan fail-fail yang berkaitan bersama-sama, tetapi hasil akhir 416 00:23:45,000 --> 00:23:48,000 adalah bahawa kita kini mempunyai persediaan sedikit tidier, tetapi kita perlu ingat sekarang 417 00:23:48,000 --> 00:23:51,000 dalam, misalnya, index.php 418 00:23:51,000 --> 00:23:55,000 apabila kita memerlukan helpers.php fail 419 00:23:55,000 --> 00:24:01,000 kita perlu kini memerlukan melalui termasuk / helpers.php 420 00:24:01,000 --> 00:24:06,000 bukannya hanya mengatakan helpers.php kerana sekarang ia sebenarnya dalam direktori sub. 421 00:24:06,000 --> 00:24:09,000 Kini, sebagai diketepikan, anda akan lihat dalam contoh-contoh ini dan beberapa orang lain 422 00:24:09,000 --> 00:24:11,000 fungsi seperti memerlukan, memerlukan sekali. 423 00:24:11,000 --> 00:24:15,000 Terdapat sebenarnya fungsi itu sendiri dipanggil termasuk, dan mereka semua mempunyai tingkah laku yang sedikit berbeza. 424 00:24:15,000 --> 00:24:18,000 Di sini saya katakan memerlukan sekali untuk membuat super jelas bahawa saya hanya mahu mereka 425 00:24:18,000 --> 00:24:20,000 pembantu yang termasuk dalam projek saya sekali. 426 00:24:20,000 --> 00:24:24,000 Tetapi jika saya berhati-hati dan jika Saya sebenarnya berfikir melalui logik saya betul 427 00:24:24,000 --> 00:24:27,000 ia harus mencukupi terlalu hanya untuk mengatakan memerlukan top up 428 00:24:27,000 --> 00:24:31,000 begitu lama kerana saya sendiri tidak sengaja menghendaki supaya fail yang sama di tempat lain. 429 00:24:31,000 --> 00:24:34,000 Malah, ini adalah cara yang lebih cekap melakukan perkara-perkara yang kemudian menggunakan 430 00:24:34,000 --> 00:24:38,000 memerlukan sekali, jadi saya akan mengurangkan ia turun ke hanya memerlukan. 431 00:24:38,000 --> 00:24:40,000 >> Mari kita mengambil satu langkah ke hadapan. 432 00:24:40,000 --> 00:24:46,000 Contoh terakhir ini sekarang, versi 5, mempunyai folder hierarki yang lebih bersih. 433 00:24:46,000 --> 00:24:50,000 Perhatikan apa yang saya telah dilakukan di sini setiap membaca saya dalam versi ini terakhir 434 00:24:50,000 --> 00:24:54,000 kini saya mempunyai direktori HTML saya, yang saya telah mendapat semua masa ini, 435 00:24:54,000 --> 00:24:58,000 tetapi di dalam ada kini hanya index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php dan week2.php. 437 00:25:01,000 --> 00:25:05,000 Termasuk direktori kini tinggal bersama direktori HTML, 438 00:25:05,000 --> 00:25:08,000 jadi pada tahap yang sama seperti adik-beradik, jadi untuk bercakap. 439 00:25:08,000 --> 00:25:10,000 Begitu juga folder template. 440 00:25:10,000 --> 00:25:14,000 Fleet utama di sini adalah saya telah memperkenalkan struktur sedikit lebih, 441 00:25:14,000 --> 00:25:17,000 tetapi ciri utama sekarang adalah bahawa hanya fail 442 00:25:17,000 --> 00:25:21,000 yang perlu untuk menjadi web yang diakses, terbuka addressable 443 00:25:21,000 --> 00:25:25,000 oleh URL di internet awam adalah dalam direktori HTML saya. 444 00:25:25,000 --> 00:25:28,000 >> Sementara itu, selain fail, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, yang dikatakan mungkin lebih sensitif, 446 00:25:32,000 --> 00:25:35,000 mungkin pembantu sebenarnya mempunyai beberapa nama pengguna dan kata laluan atau beberapa intelektual 447 00:25:35,000 --> 00:25:39,000 harta lombong, berfungsi Saya benar-benar tidak mahu dunia untuk melihat, walaupun tidak sengaja. 448 00:25:39,000 --> 00:25:45,000 Ia adalah amalan yang baik untuk menjaga daripada direktori HTML awam 449 00:25:45,000 --> 00:25:48,000 mana-mana fail yang tidak perlu diri menjadi awam. 450 00:25:48,000 --> 00:25:51,000 Semua yang anda perlu lakukan dalam kes ini apabila melihat, sebagai contoh, 451 00:25:51,000 --> 00:25:55,000 direktori HTML fail index.php, 452 00:25:55,000 --> 00:25:58,000 notis kita hanya perlu untuk menjadi sedikit lebih berhati-hati apabila memerlukan 453 00:25:58,000 --> 00:26:00,000 atau memerlukan sekali fail ini. 454 00:26:00,000 --> 00:26:03,000 Saya perlu terlebih dahulu melakukan .. untuk pergi ke direktori induk, 455 00:26:03,000 --> 00:26:06,000 maka janganlah / includes / helpers.php 456 00:26:06,000 --> 00:26:12,000 untuk menyelam kembali ke dalam untuk mendapatkan fail yang saya mengambil berat tentang. 457 00:26:12,000 --> 00:26:16,000 >> Mana-mana soalan itu MVC 458 00:26:16,000 --> 00:26:20,000 atau ini penjelmaan agak mudah daripadanya? 459 00:26:20,000 --> 00:26:23,000 Dan izinkan saya membuat jelas bahawa kita menumpukan agak sedikit pada 460 00:26:23,000 --> 00:26:27,000 V di sini, pandangan dan pemfaktoran daripada template ini. 461 00:26:27,000 --> 00:26:30,000 Kami telah tidak benar-benar dibezakan M dari C sahaja lagi. 462 00:26:30,000 --> 00:26:33,000 Malah, ada benar-benar ada di sini M, dan C kami, 463 00:26:33,000 --> 00:26:36,000 pengawal, tidak benar-benar melakukan semua yang banyak, tetapi anda akan mendapat lebih banyak 464 00:26:36,000 --> 00:26:39,000 biasa dengan kedua-dua mereka 2 surat dari MVC, 465 00:26:39,000 --> 00:26:43,000 atau sebaliknya, anda akan mendapat lebih biasa dengan C 466 00:26:43,000 --> 00:26:49,000 di MVC untuk menetapkan masalah 7, jadi terdapat lebih daripada itu di ufuk. 467 00:26:49,000 --> 00:26:51,000 Soalan? 468 00:26:51,000 --> 00:26:53,000 Terdapat sebenarnya tiada siapa di sini. 469 00:26:53,000 --> 00:26:57,000 >> Baiklah, mari kita sekarang beralih kepada topik kedua dan terakhir untuk hari ini. 470 00:26:57,000 --> 00:27:00,000 Itu adalah pengenalan pangkalan data. 471 00:27:00,000 --> 00:27:03,000 Sehingga ketika ini kita telah mempunyai beberapa cara untuk menyimpan data. 472 00:27:03,000 --> 00:27:05,000 Kami telah menggunakan pembolehubah. 473 00:27:05,000 --> 00:27:08,000 Kembali dalam fail C kami, I / O perbincangan kita mula menggunakan fail teks 474 00:27:08,000 --> 00:27:11,000 dan menggunakan fail seperti fprintf, dan kemudian kita bermula 475 00:27:11,000 --> 00:27:14,000 bercakap tentang CSV memfailkan sedikit, Comma Separated Values, 476 00:27:14,000 --> 00:27:17,000 jadi semua ini membolehkan kita mempunyai data yang disimpan 477 00:27:17,000 --> 00:27:19,000 sama ada tidak berterusan atau berterusan. 478 00:27:19,000 --> 00:27:23,000 Tetapi walaupun CSVs tidak benar-benar kondusif untuk mencari 479 00:27:23,000 --> 00:27:25,000 dan memasukkan dan memotong. 480 00:27:25,000 --> 00:27:28,000 Ia adalah benar-benar hanya satu fail teks bodoh dipisahkan dengan koma 481 00:27:28,000 --> 00:27:30,000 baris demi baris demi baris demi baris, jadi jika anda mahu 482 00:27:30,000 --> 00:27:32,000 search bahawa fail yang terbaik anda boleh lakukan benar-benar adalah carian linear. 483 00:27:32,000 --> 00:27:34,000 Anda perlu bermula di bahagian atas fail, membaca segala-galanya dalam, 484 00:27:34,000 --> 00:27:36,000 dan mencari nilai beberapa faedah. 485 00:27:36,000 --> 00:27:39,000 Jika anda ingin memasukkan ke dalamnya, anda perlu lakukan perkara yang sama, 486 00:27:39,000 --> 00:27:41,000 iterating ke atasnya dan memasukkan di tempat tertentu, 487 00:27:41,000 --> 00:27:45,000 dan pada hakikatnya, anda perlu untuk melakukan semua logik mencari diri sendiri. 488 00:27:45,000 --> 00:27:49,000 >> Anda tidak boleh melakukan corak pandai sepadan pada fail CSV melainkan anda sendiri menulis kod. 489 00:27:49,000 --> 00:27:51,000 Anda tidak boleh melakukan penapisan fail CSV 490 00:27:51,000 --> 00:27:53,000 melainkan anda sendiri menulis kod. 491 00:27:53,000 --> 00:27:56,000 Ia tidak akan menjadi baik jika orang lain dimasukkan ke dalam semua usaha 492 00:27:56,000 --> 00:27:59,000 sebenarnya membuat mencari mudah dan kemasukan mudah 493 00:27:59,000 --> 00:28:01,000 dan penghapusan mengemaskini dan sebagainya? 494 00:28:01,000 --> 00:28:04,000 Itulah apa pangkalan data. 495 00:28:04,000 --> 00:28:07,000 SQL, bahasa pertanyaan berstruktur, adalah lagi bahasa lain 496 00:28:07,000 --> 00:28:10,000 bahawa kita memperkenalkan sini hari ini, tetapi ini juga agak diakses, 497 00:28:10,000 --> 00:28:13,000 dan apa yang kita benar-benar akan melakukan hanya memetik daripada beberapa yang paling menonjol 498 00:28:13,000 --> 00:28:16,000 ciri-ciri supaya untuk pset 7, dan jika anda melakukan sesuatu berasaskan web, 499 00:28:16,000 --> 00:28:19,000 projek akhir anda, anda mempunyai keupayaan untuk meluahkan diri anda 500 00:28:19,000 --> 00:28:22,000 dari segi pertanyaan data. 501 00:28:22,000 --> 00:28:25,000 Anda mempunyai keupayaan untuk menyimpan sedikit atau banyak data 502 00:28:25,000 --> 00:28:28,000 dalam cara yang lebih berstruktur yang akan pada akhir hari 503 00:28:28,000 --> 00:28:32,000 membuat hidup anda lebih mudah kerana dengan SQL anda boleh meluahkan diri anda 504 00:28:32,000 --> 00:28:35,000 lebih tepat, lebih teratur untuk 505 00:28:35,000 --> 00:28:40,000 mendapatkan kembali beberapa subset data dari corpus data yang lebih besar. 506 00:28:40,000 --> 00:28:45,000 >> Anda boleh berfikir pangkalan data, dalam kes ini, pangkalan data SQL, benar-benar seperti Excel 507 00:28:45,000 --> 00:28:48,000 atau Nombor di mana ia adalah spreadsheet, 508 00:28:48,000 --> 00:28:50,000 atau mungkin spreadsheet berganda, dan spreadsheet, sudah tentu, 509 00:28:50,000 --> 00:28:53,000 mempunyai baris dan lajur, dan itu kerana 510 00:28:53,000 --> 00:28:56,000 Pangkalan data SQL adalah hubungan, hubungan dalam erti kata 511 00:28:56,000 --> 00:28:59,000 bahawa mereka menyimpan data di segi jadual ini, 512 00:28:59,000 --> 00:29:01,000 baris dan lajur. 513 00:29:01,000 --> 00:29:03,000 Mereka adalah lebih tinggi berbayar daripada sesuatu seperti spreadsheet, 514 00:29:03,000 --> 00:29:05,000 dan spreadsheet yang dimaksudkan untuk digunakan oleh manusia. 515 00:29:05,000 --> 00:29:08,000 Pangkalan data adalah bertujuan untuk digunakan oleh pengaturcara 516 00:29:08,000 --> 00:29:12,000 menulis kod terhadapnya, jadi penjelmaan pangkalan data 517 00:29:12,000 --> 00:29:14,000 akan menjadi sama ada baris arahan. 518 00:29:14,000 --> 00:29:18,000 >> Salah satu pangkalan data hubungan yang paling popular di luar sana adalah, sekali lagi, MySQL, 519 00:29:18,000 --> 00:29:22,000 yang hebat percuma, berbayar yang sangat tinggi, dan ini adalah apa yang 520 00:29:22,000 --> 00:29:24,000 Facebook digunakan sangat awal dan sedikit sebanyak masih hari ini 521 00:29:24,000 --> 00:29:27,000 untuk menyimpan banyak data, dan kita akan melihat dalam seketika 522 00:29:27,000 --> 00:29:30,000 bahawa menggunakan arahan agak mudah 523 00:29:30,000 --> 00:29:33,000 kita boleh pilih data, memasukkan data, data update, 524 00:29:33,000 --> 00:29:37,000 memadam data dan sebagainya, tetapi bersyukur, ada yang lebih mesra pengguna antara muka 525 00:29:37,000 --> 00:29:39,000 daripada hanya menaip pada prompt hitam dan putih di sini. 526 00:29:39,000 --> 00:29:43,000 Kami akan menggunakan untuk pset 7 dan luar alat percuma yang dipanggil phpMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Nama adalah kebetulan. 528 00:29:45,000 --> 00:29:47,000 Alat ini berlaku untuk dilaksanakan dalam PHP, 529 00:29:47,000 --> 00:29:49,000 tetapi itulah asasnya tidak relevan. 530 00:29:49,000 --> 00:29:53,000 Apa yang berguna tentang phpMyAdmin adalah bahawa ia adalah satu utiliti yang berasaskan web. 531 00:29:53,000 --> 00:29:55,000 Kami telah pra-dipasang dalam perkakas untuk anda, 532 00:29:55,000 --> 00:29:58,000 dan dengan itu anda boleh membuat jadual dalam pangkalan data, 533 00:29:58,000 --> 00:30:01,000 anda boleh memasukkan data, memadam data, dan umumnya melihat 534 00:30:01,000 --> 00:30:04,000 data anda dalam persekitaran yang agak user-friendly. 535 00:30:04,000 --> 00:30:07,000 Pengguna anda tidak akan menggunakan phpMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Ini adalah benar-benar hanya satu alat pentadbiran atau pemaju 537 00:30:09,000 --> 00:30:12,000 dengan mana untuk melihat dan mencucuk sekeliling data anda dan memikirkan bagaimana untuk menstrukturkan, 538 00:30:12,000 --> 00:30:15,000 banyak seperti anda sendiri mungkin menggunakan Excel atau Nombor 539 00:30:15,000 --> 00:30:19,000 tetapi ia akan menjadi cara terbaik menggambarkan apa yang berlaku di bawah hood 540 00:30:19,000 --> 00:30:22,000 supaya anda boleh fokus pada masalah yang menarik menyelesaikan dan tidak begitu banyak 541 00:30:22,000 --> 00:30:25,000 atas arahan batin. 542 00:30:25,000 --> 00:30:28,000 Mari kita lihat pada contoh data yang mungkin disimpan tabularly 543 00:30:28,000 --> 00:30:30,000 dalam pangkalan data hubungan. 544 00:30:30,000 --> 00:30:32,000 Berikut adalah salah satu contoh. 545 00:30:32,000 --> 00:30:35,000 Sekarang, malangnya, phpMyAdmin silap di sebelah cara membuang terlalu banyak perkataan 546 00:30:35,000 --> 00:30:38,000 dan grafik pada anda, tetapi jika anda mengasah di hanya di 547 00:30:38,000 --> 00:30:42,000 Turus ID, ruangan nama pengguna, dan lajur hash, 548 00:30:42,000 --> 00:30:45,000 ini adalah berkesan spreadsheet, tetapi ia berlaku untuk menjadi coretan 549 00:30:45,000 --> 00:30:49,000 dalam jadual perkakas 550 00:30:49,000 --> 00:30:53,000 menggunakan fail yang kami menyediakan anda dengan masalah dalam set 7. 551 00:30:53,000 --> 00:30:57,000 >> Secara khususnya, kami memberikan anda satu fail yang mewakili 552 00:30:57,000 --> 00:31:01,000 pengguna meja, jadi spreadsheet yang mengandungi pengguna dengan 3 tiang, 553 00:31:01,000 --> 00:31:05,000 mana salah satu daripadanya adalah ID unik yang bermula pada 1 dan incremented selepas itu. 554 00:31:05,000 --> 00:31:08,000 Lajur kedua ialah nama pengguna, dan orang-orang yang melakukan Hacker, 555 00:31:08,000 --> 00:31:12,000 edisi Hacker untuk pset 2, mungkin mengenali beberapa nama-nama pengguna sekurang-kurangnya. 556 00:31:12,000 --> 00:31:16,000 Pada sebelah kanan adalah kata laluan, tetapi mereka tidak kata laluan literal. 557 00:31:16,000 --> 00:31:19,000 Mereka Hash daripadanya, jadi ternyata 558 00:31:19,000 --> 00:31:22,000 yang menyimpan kata laluan dalam pangkalan data adalah idea yang benar-benar buruk. 559 00:31:22,000 --> 00:31:25,000 Anda semua mungkin dibaca pada satu ketika beberapa laman web 560 00:31:25,000 --> 00:31:28,000 atau pangkalan data beberapa syarikat yang terjejas, dan kemudian anda perlu 561 00:31:28,000 --> 00:31:31,000 menukar kata laluan anda, anda perlu untuk mendapatkan bayaran balik kepada perkara-perkara 562 00:31:31,000 --> 00:31:34,000 kerana beberapa lelaki yang buruk sebenarnya memecah masuk ke akaun anda akibat. 563 00:31:34,000 --> 00:31:38,000 >> Menyimpan kata laluan dalam teks jelas, tak disulitkan dalam pangkalan data 564 00:31:38,000 --> 00:31:41,000 benar-benar asinine, tetapi ia amat lucu 565 00:31:41,000 --> 00:31:44,000 maka untuk membaca tentang beberapa syarikat yang sangat terkenal 566 00:31:44,000 --> 00:31:47,000 kadang-kadang dalam akhbar pangkalan data yang terjejas, 567 00:31:47,000 --> 00:31:50,000 dan bahagian itu tidak lucu, tetapi hakikat bahawa pangkalan data mengandungi tanpa enkrip 568 00:31:50,000 --> 00:31:53,000 kata laluan adalah tidak masuk akal kerana literal dengan satu baris kod 569 00:31:53,000 --> 00:31:57,000 anda boleh melindungi terhadap ancaman yang tertentu, dan itulah apa yang kita lakukan di sini. 570 00:31:57,000 --> 00:32:00,000 Malah bagi palsu sedikit kami CS50 versi Kewangan 571 00:32:00,000 --> 00:32:03,000 kita menyulitkan kata laluan hanya untuk langkah yang baik, dan hakikat bahawa 572 00:32:03,000 --> 00:32:07,000 semua kata laluan ini bermula dengan $ 1 $ hanya konvensyen. 573 00:32:07,000 --> 00:32:10,000 Itu hanya bermakna mereka disulitkan atau benar-benar dicincang, 574 00:32:10,000 --> 00:32:13,000 yang adalah seperti fungsi penyulitan sehala 575 00:32:13,000 --> 00:32:17,000 di mana anda tidak boleh menterbalikkan kesan dengan sesuatu yang dipanggil MD5. 576 00:32:17,000 --> 00:32:21,000 >> Hakikat bahawa 50 adalah selepas itu bermakna bahawa nilai garam 577 00:32:21,000 --> 00:32:24,000 50 tahun telah digunakan untuk hashing semua kata laluan ini kecuali satu. 578 00:32:24,000 --> 00:32:27,000 Mine, sudah tentu, seperti yang anda boleh lihat di sana, HA, 579 00:32:27,000 --> 00:32:30,000 menggunakan garam yang berbeza, jadi mereka yang mendapat sedikit tersandung sehingga 580 00:32:30,000 --> 00:32:33,000 mungkin dalam 2 Hacker, yang mungkin telah hasil daripada digunakan setelah kita 581 00:32:33,000 --> 00:32:36,000 hash yang berbeza daripada yang lain kerana password saya sebenarnya sama 582 00:32:36,000 --> 00:32:38,000 sebagai pengguna lain di sana. 583 00:32:38,000 --> 00:32:41,000 Malah, jika anda telah menunggu semua minggu ini untuk mengetahui 584 00:32:41,000 --> 00:32:44,000 apa kata laluan itu di sini adalah kata laluan yang anda telah dicabar 585 00:32:44,000 --> 00:32:48,000 retak dalam edisi Hacker set masalah 2, jadi tiada yang terlalu sukar. 586 00:32:48,000 --> 00:32:50,000 Malah, Malan adalah sama seperti jharvard, 587 00:32:50,000 --> 00:32:54,000 tetapi jika kita kembali mereka kelihatan berbeza. 588 00:32:54,000 --> 00:32:58,000 >> Fokus pada jharvard dalam lembayung kerana mereka masin berbeza. 589 00:32:58,000 --> 00:33:01,000 Algoritma telah dicemaskan dalam cara yang 590 00:33:01,000 --> 00:33:05,000 hash nilai, nilai disulitkan kelihatan sedikit berbeza 591 00:33:05,000 --> 00:33:08,000 kerana input yang sedikit berbeza, tetapi kata laluan bawah hood 592 00:33:08,000 --> 00:33:10,000 masih akhirnya lembayung. 593 00:33:10,000 --> 00:33:12,000 Sekarang, yang mengambil berat tentang perkara ini? 594 00:33:12,000 --> 00:33:15,000 Nah, kita menyediakan anda dengan pengguna sampel, nama pengguna sampel 595 00:33:15,000 --> 00:33:18,000 dan Hash kata laluan mereka supaya anda sebenarnya mempunyai beberapa 596 00:33:18,000 --> 00:33:23,000 pelanggan untuk Kewangan CS50 apabila anda mula-mula mendapat dari tanah dengan kod anda. 597 00:33:23,000 --> 00:33:27,000 Anda akan mempunyai untuk melaksanakan lebih jadual dalam MySQL, di dalam pangkalan data. 598 00:33:27,000 --> 00:33:30,000 Anda akan mempunyai untuk mewujudkan lebih banyak spreadsheet, berkesan, tetapi kami memutuskan untuk memberikan anda satu ini 599 00:33:30,000 --> 00:33:33,000 untuk mendapatkan anda bermula, dan anda akan melihat bahawa spesifikasi set masalah 600 00:33:33,000 --> 00:33:37,000 berjalan anda melalui proses mengimport jadual ini 601 00:33:37,000 --> 00:33:39,000 dan juga menjelaskan apa yang beberapa ciri-ciri, 602 00:33:39,000 --> 00:33:41,000 dan anda juga akan melihat bahawa kami menyediakan anda dengan kod 603 00:33:41,000 --> 00:33:44,000 untuk mengendalikan hashing atau penyulitan kata laluan ini, 604 00:33:44,000 --> 00:33:49,000 jadi anda tidak perlu bimbang terlalu banyak tentang apa MD5 atau sebagainya sebenarnya adalah semua tentang. 605 00:33:49,000 --> 00:33:53,000 >> Jadi, SQL, bahasa pertanyaan berstruktur. 606 00:33:53,000 --> 00:33:56,000 Ini adalah, cukup mudah, bahasa yang kami kira-kira untuk mula menggunakan dalam pset 7 607 00:33:56,000 --> 00:34:01,000 dan mungkin di luar untuk meminta data dari pangkalan data tertentu. 608 00:34:01,000 --> 00:34:06,000 Data, sekali lagi, disimpan tabularly dalam jadual ini tiang, hubungan, dan baris, 609 00:34:06,000 --> 00:34:09,000 tetapi menggunakan beberapa sintaks yang agak mudah seperti delete, 610 00:34:09,000 --> 00:34:12,000 memasukkan, mengemaskini dan pilih yang boleh kita lakukan betul-betul itu. 611 00:34:12,000 --> 00:34:15,000 Kita boleh memadam dari pangkalan data, memasukkan, 612 00:34:15,000 --> 00:34:19,000 mengemaskini data, serta pilih, iaitu, mengambil data dari pangkalan data. 613 00:34:19,000 --> 00:34:21,000 Bagaimana kita pergi tentang melakukan perkara ini? 614 00:34:21,000 --> 00:34:23,000 Biar saya pergi ke hadapan ke dalam perkakas. 615 00:34:23,000 --> 00:34:28,000 Biar saya tarik sehingga http://localhost, 616 00:34:28,000 --> 00:34:30,000 yang, sekali lagi, adalah perkakas tempatan sendiri. 617 00:34:30,000 --> 00:34:32,000 Itulah nama samaran lalai. 618 00:34:32,000 --> 00:34:35,000 Dan biarlah saya pergi ke / phpMyAdmin. 619 00:34:35,000 --> 00:34:39,000 Ini berlaku untuk menjadi sebuah URL khas bahawa perkakas dipratatarajahkan untuk memahami 620 00:34:39,000 --> 00:34:42,000 yang segera meminta saya untuk nama pengguna dan kata laluan. 621 00:34:42,000 --> 00:34:46,000 >> Seperti biasa, saya akan menaip jharvard dan lembayung, 622 00:34:46,000 --> 00:34:48,000 tetapi menyedari bahawa akaun pentadbir pada komputer. 623 00:34:48,000 --> 00:34:53,000 Ia hanya kebetulan bahawa terdapat juga satu jharvard didaftarkan untuk CS50 Kewangan. 624 00:34:53,000 --> 00:34:56,000 Jharvard, lembayung, masukkan memberikan saya antara muka pengguna yang kita lihat 625 00:34:56,000 --> 00:34:59,000 imbasan masa lalu, dan ia sedikit hangat pada mulanya, 626 00:34:59,000 --> 00:35:02,000 tetapi yakinlah, anda tidak akan perlu klik kebanyakan link di alat ini. 627 00:35:02,000 --> 00:35:05,000 Anda akan akhirnya menggunakan subset kecil yang super membantu, 628 00:35:05,000 --> 00:35:08,000 di mana yang pertama adalah pangkalan data di sini. 629 00:35:08,000 --> 00:35:11,000 Jika saya pergi ke pangkalan data, notis bahawa saya digesa untuk mewujudkan pangkalan data. 630 00:35:11,000 --> 00:35:14,000 Ini adalah seperti mewujudkan satu fail Excel yang baru, berkesan. 631 00:35:14,000 --> 00:35:18,000 Saya akan pergi ke hadapan dan memanggil kuliah ini, dan saya hanya akan mengabaikan medan sana, kolasi. 632 00:35:18,000 --> 00:35:20,000 Ia mempunyai kaitan dengan perwakilan data di dalamnya, 633 00:35:20,000 --> 00:35:24,000 dan saya akan klik mencipta, dan kini notis kerana saya membiarkan pergi mewujudkan 634 00:35:24,000 --> 00:35:27,000 pada sebelah kiri di mana ia mengatakan tiada pangkalan data 635 00:35:27,000 --> 00:35:30,000 Saya tidak lama lagi harus melihat pangkalan data kuliah. 636 00:35:30,000 --> 00:35:32,000 >> Jika saya sekarang klik di sebelah kiri, pangkalan data kuliah, 637 00:35:32,000 --> 00:35:34,000 notis tab saya menukar sedikit. 638 00:35:34,000 --> 00:35:38,000 Saya telah mendapat struktur, SQL, eksport, import dan beberapa perkara lain. 639 00:35:38,000 --> 00:35:40,000 Struktur adalah cukup banyak kosong. 640 00:35:40,000 --> 00:35:43,000 Tiada jadual dijumpai dalam pangkalan data, kerana ia mengatakan di sini, 641 00:35:43,000 --> 00:35:47,000 jadi mari kita buat jadual, dan mari kita pergi ke hadapan dan mencipta jadual 642 00:35:47,000 --> 00:35:53,000 seperti pelajar, dan berapa banyak tiang yang kita mahu? 643 00:35:53,000 --> 00:35:55,000 Rekod Mari kita menyimpan ini mudah, dan biarkan untuk setiap pelajar 644 00:35:55,000 --> 00:35:58,000 nombor ID, nama, dan alamat e-mel. 645 00:35:58,000 --> 00:36:02,000 >> Kami akan memastikan ia mudah seperti itu, jadi 3 kolum, pergi. 646 00:36:02,000 --> 00:36:05,000 Bentuk yang anda lihat di sini kini sedikit berantakan dan hangat, 647 00:36:05,000 --> 00:36:08,000 tetapi kita hanya perlu pergi melalui berturut-turut ia demi baris, jadi benar-benar cepat mari kita memberi 648 00:36:08,000 --> 00:36:14,000 Lajur pertama dalam pangkalan data ini nama ID untuk pengecam unik. 649 00:36:14,000 --> 00:36:17,000 Ia akan menjadi integer. Saya sebenarnya boleh mengabaikan panjang dan nilai-nilai. 650 00:36:17,000 --> 00:36:21,000 Int akan menjadi 32 bit tidak kira apa yang anda taip di sana, jadi mari kita tinggalkan kosong. 651 00:36:21,000 --> 00:36:24,000 Nilai lalai, saya boleh membuat ia batal, sebagaimana yang ditakrifkan. 652 00:36:24,000 --> 00:36:27,000 Saya akan meninggalkan itu sahaja. Mari kita tidak bimbang tentang nilai-nilai lalai. 653 00:36:27,000 --> 00:36:29,000 Mari kita tatal di sini sifat-sifat, kanan. 654 00:36:29,000 --> 00:36:31,000 Ini adalah menarik. 655 00:36:31,000 --> 00:36:33,000 Mari kita pergi ke hadapan dan agak sewenang-wenangnya mengatakan bahawa ID mestilah tidak bertanda. 656 00:36:33,000 --> 00:36:35,000 Mari kita tidak membuang mana-mana nombor negatif. 657 00:36:35,000 --> 00:36:37,000 >> Mari kita pergi 0-4000000000, memberikan atau mengambil, 658 00:36:37,000 --> 00:36:40,000 dan kemudian mari kita tidak menyentuh mana-mana bidang ini sahaja lagi di sana, 659 00:36:40,000 --> 00:36:43,000 tetapi kemudian biarlah saya menaip nama di sini, 660 00:36:43,000 --> 00:36:46,000 dan kemudian yang lain adalah e-mel, jadi tangkapan adalah e-mel 661 00:36:46,000 --> 00:36:50,000 dan nama, jelas tidak integer, jadi mari kita menukar kepada bidang yang berbeza. 662 00:36:50,000 --> 00:36:53,000 Ia ternyata VARCHAR, pembolehubah panjang char, 663 00:36:53,000 --> 00:36:56,000 adalah seperti rentetan dalam pangkalan data SQL 664 00:36:56,000 --> 00:36:59,000 tetapi panjang berubah-ubah, dan anda sebenarnya perlu memberitahu terlebih dahulu 665 00:36:59,000 --> 00:37:02,000 Panjang maksimum tali, jadi saya akan agak sewenang-wenangnya 666 00:37:02,000 --> 00:37:05,000 mengikut jenis konvensyen 255 aksara. 667 00:37:05,000 --> 00:37:08,000 Saya benar-benar boleh mengatakan 32. Saya boleh mengatakan 1,000. 668 00:37:08,000 --> 00:37:11,000 Anda jenis keperluan untuk membuat keputusan untuk diri sendiri berdasarkan demografi anda apakah 669 00:37:11,000 --> 00:37:14,000 pelajar terpanjang nama dan pergi dengan beberapa atau sedikit lebih besar, 670 00:37:14,000 --> 00:37:17,000 tetapi apa yang baik tentang VARCHAR adalah ia tidak akan membazirkan 671 00:37:17,000 --> 00:37:19,000 255 bait pada nama setiap pelajar. 672 00:37:19,000 --> 00:37:23,000 Jika ia DAVID ia tidak akan menggunakan keseluruhan 255 bytes, 673 00:37:23,000 --> 00:37:26,000 tetapi itulah terikat atas, jadi saya akan pergi dengan 255 hanya dengan konvensyen, 674 00:37:26,000 --> 00:37:30,000 tetapi kita boleh berdebat bahawa untuk menjadi beberapa nilai yang lebih rendah, dan untuk alamat e-mel 675 00:37:30,000 --> 00:37:34,000 hanya untuk menjadi konsisten 255, tetapi sekali lagi, kita boleh mempunyai perbahasan yang sama. 676 00:37:34,000 --> 00:37:36,000 Tetapi saya akan untuk melakukan satu perkara lain di sini pada sebelah kanan. 677 00:37:36,000 --> 00:37:40,000 >> Apa yang berkuasa tentang pangkalan data adalah bahawa ia boleh melakukan banyak mengangkat berat 678 00:37:40,000 --> 00:37:42,000 atau kerja-kerja yang kompleks untuk anda. 679 00:37:42,000 --> 00:37:46,000 Secara khususnya, saya benar-benar tidak peduli apa nombor ID pelajar saya. 680 00:37:46,000 --> 00:37:49,000 Ia hanya bertujuan untuk menjadi pengecam unik dalam pangkalan data 681 00:37:49,000 --> 00:37:52,000 jadi saya mempunyai perwakilan 32-bit ringkas pelajar itu 682 00:37:52,000 --> 00:37:55,000 supaya saya mempunyai beberapa cara unik mengenal pasti mereka 683 00:37:55,000 --> 00:37:58,000 kalau-kalau ada 2 Davids, misalnya, dalam sebuah kelas. 684 00:37:58,000 --> 00:38:01,000 Malah, saya akan memeriksa kotak AI, kenaikan auto, 685 00:38:01,000 --> 00:38:04,000 supaya pangkalan data, MySQL, angka keluar 686 00:38:04,000 --> 00:38:08,000 apa ID setiap pelajar yang baru dimasukkan itu akan menjadi. 687 00:38:08,000 --> 00:38:11,000 Saya tidak perlu mengambil berat tentang itu dalam kod saya, 688 00:38:11,000 --> 00:38:13,000 dan saya juga akan memilih sesuatu di bawah menu indeks. 689 00:38:13,000 --> 00:38:17,000 Indeks drop down di sini telah rendah, yang unik, 690 00:38:17,000 --> 00:38:19,000 indeks dan teks penuh. 691 00:38:19,000 --> 00:38:21,000 Anda mungkin boleh meneka apa beberapa perkara-perkara ini adalah, 692 00:38:21,000 --> 00:38:24,000 tetapi ternyata di dalam pangkalan data hubungan 693 00:38:24,000 --> 00:38:28,000 anda pengaturcara atau pentadbir pangkalan data dapat preemptively 694 00:38:28,000 --> 00:38:32,000 memberi petunjuk kepada pangkalan data untuk apa bidang 695 00:38:32,000 --> 00:38:34,000 dalam jadual khas sedikit. 696 00:38:34,000 --> 00:38:37,000 >> Sebagai contoh, dalam kes ini saya akan mengatakan bahawa ID 697 00:38:37,000 --> 00:38:42,000 akan menjadi indeks utama, atau dikenali sebagai kunci utama. 698 00:38:42,000 --> 00:38:44,000 Apakah ini bermakna oleh definisi adalah ID yang seterusnya 699 00:38:44,000 --> 00:38:48,000 unik akan mengenal pasti pelajar dalam jadual ini. 700 00:38:48,000 --> 00:38:53,000 Tiada pelajar akan mempunyai ID yang sama kerana saya mengenakan kekangan ini atau indeks ini. 701 00:38:53,000 --> 00:38:55,000 Selain itu, apa ini akan lakukan untuk saya adalah ia akan memberitahu 702 00:38:55,000 --> 00:38:58,000 MySQL bahawa ID adalah istimewa. 703 00:38:58,000 --> 00:39:03,000 Saya mengambil berat terutamanya mengenai ID, jadi pergi ke hadapan dan melakukan sihir struktur data mewah anda, 704 00:39:03,000 --> 00:39:05,000 membina beberapa jenis pokok. 705 00:39:05,000 --> 00:39:08,000 Biasanya ia sesuatu yang dipanggil B-pokok, yang kita tidak melihat pada minggu lalu, 706 00:39:08,000 --> 00:39:11,000 tetapi ia adalah struktur data lain yang serupa dalam semangat kepada pokok binari 707 00:39:11,000 --> 00:39:15,000 dan cuba yang kita melihat, tetapi ia akan berkata 708 00:39:15,000 --> 00:39:18,000 kepada pangkalan data bidang ini begitu penting bahawa aku mungkin 709 00:39:18,000 --> 00:39:22,000 mahu menjadi mampu untuk mencari ia, pergi ke hadapan dan membina beberapa mewah 710 00:39:22,000 --> 00:39:25,000 struktur data dalam ingatan untuk mempercepatkan carian supaya ideal 711 00:39:25,000 --> 00:39:28,000 mereka pemalar masa atau sekurang-kurangnya sebagai dekat yang mungkin 712 00:39:28,000 --> 00:39:32,000 supaya ia tidak diturunkan ke dalam carian linear, yang tidak akan 713 00:39:32,000 --> 00:39:34,000 yang paling berprestasi tinggi pendekatan. 714 00:39:34,000 --> 00:39:37,000 Sebaliknya, alamat e-mel boleh menjadi kunci utama. 715 00:39:37,000 --> 00:39:41,000 >> Dalam teori, alamat e-mel semua orang adalah unik, melainkan jika anda berkongsi beberapa akaun, 716 00:39:41,000 --> 00:39:45,000 tetapi ia adalah umumnya tidak baik untuk menggunakan sesuatu seperti rentetan 717 00:39:45,000 --> 00:39:49,000 sebagai kunci utama kerana jika tujuan dalam hidup adalah untuk secara unik mengenalpasti 718 00:39:49,000 --> 00:39:55,000 baris dalam jadual anda tiada sebab untuk menggunakan 255 bytes maksima 719 00:39:55,000 --> 00:39:58,000 untuk secara unik mengenalpasti seseorang jika anda boleh mendapatkan jauh dengan hanya 4 bait 720 00:39:58,000 --> 00:40:00,000 atau int 32-bit. 721 00:40:00,000 --> 00:40:03,000 Secara umum, kunci utama harus pendek dan ringkas 722 00:40:03,000 --> 00:40:07,000 dan ideal sesuatu seperti integer atau int besar, yang berlaku kepada 64-bit. 723 00:40:07,000 --> 00:40:11,000 Tetapi alamat e-mel harus unik, dan salah satu ciri-ciri pangkalan data juga 724 00:40:11,000 --> 00:40:14,000 adalah untuk menguatkuasakan keunikan bagi saya. 725 00:40:14,000 --> 00:40:18,000 Dengan memilih unik di sini seterusnya kepada e-mel, walaupun email sendiri 726 00:40:18,000 --> 00:40:21,000 diskrolkan skrin, saya berkata kepada pangkalan data 727 00:40:21,000 --> 00:40:23,000 tidak mempercayai saya. 728 00:40:23,000 --> 00:40:26,000 Jangan biarkan saya masukkan ke dalam pangkalan data 729 00:40:26,000 --> 00:40:29,000 alamat e-mel yang sama dua kali, walaupun saya bodoh dan tidak am 730 00:40:29,000 --> 00:40:32,000 sangat baik dengan IFS saya dan IFS lain dan kod PHP yang sebenar 731 00:40:32,000 --> 00:40:37,000 dan saya sengaja membiarkan pengguna mendaftar dengan alamat e-mel yang sedia ada 732 00:40:37,000 --> 00:40:40,000 pangkalan data adalah satu lagi tahap pertahanan untuk ketepatan 733 00:40:40,000 --> 00:40:44,000 untuk memastikan bahawa alamat e-mel yang pendua tidak berakhir dalam jadual. 734 00:40:44,000 --> 00:40:49,000 >> Sekarang, sebaliknya, untuk nama anda mungkin tidak mahu membuat yang unik 735 00:40:49,000 --> 00:40:51,000 kerana tidak pernah boleh menjadi 2 Davids atau 2 Smiths Mike, misalnya, 736 00:40:51,000 --> 00:40:55,000 dalam pangkalan data anda, supaya seseorang kita hanya akan meninggalkan sahaja. 737 00:40:55,000 --> 00:40:58,000 Saya akan pergi ke hadapan dan klik menjimatkan di sebelah kanan bawah, 738 00:40:58,000 --> 00:41:02,000 dan segalanya kelihatan baik, tetapi notis di sini 739 00:41:02,000 --> 00:41:04,000 ini adalah sebahagian bahawa sekarang kita tidak akan menghabiskan terlalu banyak masa pada 740 00:41:04,000 --> 00:41:07,000 kerana sintaks adalah agak kompleks, dan kita tidak perlu untuk mencipta jadual 741 00:41:07,000 --> 00:41:10,000 semua yang sering, tetapi SQL itu sendiri adalah bahasa, 742 00:41:10,000 --> 00:41:13,000 sintaks yang betul di sini bahawa saya telah menekankan. 743 00:41:13,000 --> 00:41:18,000 Apa phpMyAdmin benar-benar tidak adalah ia mewujudkan GUI berasaskan web untuk anda 744 00:41:18,000 --> 00:41:23,000 yang anda boleh menjimatkan masa dan tidak perlu untuk manual menaip 745 00:41:23,000 --> 00:41:26,000 query SQL yang agak lama seperti itu. 746 00:41:26,000 --> 00:41:29,000 >> Dalam erti kata lain, jika anda mahu manual mewujudkan jadual ini, 747 00:41:29,000 --> 00:41:32,000 sama ada di phpMyAdmin yang hitam dan putih prompt atau walaupun dalam 748 00:41:32,000 --> 00:41:35,000 dengan menggunakan tab lain, tab ini SQL di mana anda boleh menaip sebarang pertanyaan SQL 749 00:41:35,000 --> 00:41:38,000 anda mahu, terus-terang, ini akan mengambil saya satu minit 750 00:41:38,000 --> 00:41:41,000 sebenarnya ingat sintaks keseluruhan, dan itupun saya mungkin akan mempunyai 751 00:41:41,000 --> 00:41:45,000 membuat beberapa tipo, jadi alat ini adalah berguna untuk hal-hal seperti itu, dan ia juga nafikan. 752 00:41:45,000 --> 00:41:49,000 Anda boleh mula untuk membuat kesimpulan apa sintaks 753 00:41:49,000 --> 00:41:52,000 hanya dengan warna bagus pengekodan phpMyAdmin yang menambah 754 00:41:52,000 --> 00:41:54,000 untuk keselesaan visual kami. 755 00:41:54,000 --> 00:41:56,000 Tetapi sekarang mari kita buat ini bukan. 756 00:41:56,000 --> 00:42:00,000 Biar saya pergi ke tab insert di atas, dan membiarkan saya pergi ke hadapan dan memasukkan misalnya 757 00:42:00,000 --> 00:42:04,000 ID membolehkan katakan sebenarnya saya tidak peduli. 758 00:42:04,000 --> 00:42:07,000 Ia akan auto kenaikan. Saya akan membiarkan perjanjian pangkalan data dengan ini. 759 00:42:07,000 --> 00:42:11,000 Tetapi saya hendaklah Daud, dan e-mel saya harus malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Mari kita pergi ke hadapan di sini dan dimasukkan ke dalam Mike Smith sebagai satu lagi. 761 00:42:16,000 --> 00:42:18,000 Saya akan memberikan diri saya nama terakhir juga, 762 00:42:18,000 --> 00:42:22,000 dan kami akan telah dia menjadi smith@example.com, 763 00:42:22,000 --> 00:42:24,000 dan kemudian di mana saya pergi seterusnya? 764 00:42:24,000 --> 00:42:27,000 Nah, ia kelihatan seperti pergi adalah butang untuk klik, dan Voilà. 765 00:42:27,000 --> 00:42:30,000 Notis pada 2 baris atas yang dimasukkan. 766 00:42:30,000 --> 00:42:32,000 Ini adalah pertanyaan SQL sebenar. 767 00:42:32,000 --> 00:42:36,000 Itulah alat phpMyAdmin dilaksanakan bagi saya, 768 00:42:36,000 --> 00:42:40,000 tetapi hasil akhir, notis, jika saya kini pergi ke tab browse, 769 00:42:40,000 --> 00:42:43,000 adalah untuk melihat 2 baris dalam jadual ini, sangat mengingatkan estetik 770 00:42:43,000 --> 00:42:46,000 jadual yang kita lihat sebelum ini untuk pengguna kami dari pset 7, 771 00:42:46,000 --> 00:42:51,000 salah seorang daripadanya adalah Malan Daud, salah seorang daripada mereka sekarang Mike Smith. 772 00:42:51,000 --> 00:42:54,000 Tetapi hanya perlu jelas, saya tidak perlu menggunakan phpMyAdmin, 773 00:42:54,000 --> 00:42:56,000 dan sememangnya, anda akan tidak lama lagi akan menulis kod untuk pset 7 774 00:42:56,000 --> 00:43:01,000 yang mengautomasikan proses menambah baris, memotong barisan, mengemaskini baris dan sebagainya, 775 00:43:01,000 --> 00:43:04,000 jadi biarlah saya bukan pergi ke tab SQL di sini 776 00:43:04,000 --> 00:43:14,000 dan jenis * pilih daripada pelajar di mana 777 00:43:14,000 --> 00:43:18,000 email = "malan@harvard.edu." 778 00:43:18,000 --> 00:43:21,000 >> Dalam erti kata lain rasa sekarang anda mempunyai 779 00:43:21,000 --> 00:43:26,000 beberapa bentuk HTML, dan jenis pengguna dalam alamat e-mel mereka, antara bidang-bidang lain, 780 00:43:26,000 --> 00:43:29,000 dan matlamat sekarang adalah dalam PHP pada akhir kembali kod 781 00:43:29,000 --> 00:43:31,000 untuk benar-benar melihat butir-butir lain yang pengguna. 782 00:43:31,000 --> 00:43:34,000 Apakah nama penuh anda? Apakah nombor ID anda? 783 00:43:34,000 --> 00:43:37,000 Anda boleh menulis query SQL seperti ini, pilih * dari pelajar 784 00:43:37,000 --> 00:43:40,000 mana e-mel = "malan@harvard.edu." 785 00:43:40,000 --> 00:43:46,000 Dan jika saya kemudian klik pergi, notis bahawa saya perlu, dan sememangnya saya, dapatkan kembali hanya satu baris. 786 00:43:46,000 --> 00:43:50,000 Mike ditinggalkan daripada set keputusan ini, sebagai koleksi baris 787 00:43:50,000 --> 00:43:53,000 secara umumnya dipanggil, kerana dia tidak mempunyai alamat email yang sama seperti saya. 788 00:43:53,000 --> 00:43:57,000 >> Kini, sekali lagi, di sini untuk pset 7 anda akan menggunakan phpMyAdmin sebagai alat pentadbiran 789 00:43:57,000 --> 00:44:00,000 dan alat pedagogi untuk mempelajari cara anda 790 00:44:00,000 --> 00:44:03,000 seluruh dunia SQL, tetapi pada akhir hari 791 00:44:03,000 --> 00:44:08,000 anda akan menulis pertanyaan di dalam kod PHP sebenar, 792 00:44:08,000 --> 00:44:11,000 dan sebagainya menantikan dalam Walkthrough Zamyla khususnya 793 00:44:11,000 --> 00:44:14,000 di mana anda akan mendapat lawatan kod pengagihan untuk menetapkan masalah ini 794 00:44:14,000 --> 00:44:18,000 di mana kita telah diberikan anda bukan sahaja estetika untuk halaman login 795 00:44:18,000 --> 00:44:21,000 dan logo bagus seksi yang mengatakan CS50 Kewangan, tetapi kita juga telah diberikan anda 796 00:44:21,000 --> 00:44:24,000 sekumpulan fungsi yang akan membuat hidup anda sedikit lebih mudah. 797 00:44:24,000 --> 00:44:27,000 Kami juga telah ditulis sebahagian daripada pset untuk anda, 798 00:44:27,000 --> 00:44:32,000 bahagian login khususnya, untuk memberi anda rasa reka bentuk wakil 799 00:44:32,000 --> 00:44:36,000 yang sebenarnya menggunakan pengawal, untuk contoh, index.php, 800 00:44:36,000 --> 00:44:40,000 Ubah Suai Pengatas dan sebagainya, dan kemudian anda akan melihat pset juga mempunyai direktori template 801 00:44:40,000 --> 00:44:43,000 yang mempunyai semua pandangan anda, semua estetika. 802 00:44:43,000 --> 00:44:46,000 Dan sebagainya aliran kerja keseluruhan di pset 7 akan menjadi bahawa 803 00:44:46,000 --> 00:44:49,000 pengguna anda melawat pengawal melalui URL dalam pelayar. 804 00:44:49,000 --> 00:44:53,000 Itu pengawal mengandungi kod PHP yang anda menulis, dan di dalam kod PHP anda 805 00:44:53,000 --> 00:44:57,000 mungkin beberapa garis SQL bersarang di antara tanda petikan berganda 806 00:44:57,000 --> 00:45:00,000 dan berlalu ke fungsi kita menulis pertanyaan dipanggil 807 00:45:00,000 --> 00:45:03,000 yang akan membantu anda bercakap kepada pangkalan data tanpa menggunakan sesuatu seperti 808 00:45:03,000 --> 00:45:05,000 alat pentadbiran seperti phpMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Anda akan dapat untuk menulis kenyataan SQL dalam PHP kod 810 00:45:08,000 --> 00:45:11,000 dan mendapatkan kembali pelbagai PHP set hasil, 811 00:45:11,000 --> 00:45:14,000 baris yang benar-benar sepadan dengan pertanyaan yang. 812 00:45:14,000 --> 00:45:18,000 Dan begitu juga anda akan dapat melakukan memasukkan atau memadam 813 00:45:18,000 --> 00:45:22,000 atau update atau sebagainya, sintaks yang agak serupa, 814 00:45:22,000 --> 00:45:25,000 dan anda akan melihat daripada beberapa rujukan dalam talian, dari kod pengagihan 815 00:45:25,000 --> 00:45:29,000 dan dari pset pek sendiri bagaimana untuk pergi tentang berbuat demikian. 816 00:45:29,000 --> 00:45:33,000 Sedarlah akhirnya kita benar-benar hanya menggaru permukaan SQL 817 00:45:33,000 --> 00:45:36,000 dan MySQL, tetapi kuasa ia benar-benar adalah bahawa ia membebaskan anda 818 00:45:36,000 --> 00:45:40,000 memberi tumpuan kepada masalah-masalah yang anda mahu menyelesaikan, kes guna yang anda mahu untuk melaksanakan 819 00:45:40,000 --> 00:45:43,000 tanpa perlu risau cukup sebagai banyak, sekurang-kurangnya pada awal, 820 00:45:43,000 --> 00:45:47,000 tentang di mana dan bagaimana untuk menyimpan dan mencari pangkalan data anda, 821 00:45:47,000 --> 00:45:50,000 dan ini adalah agak literal di mana Facebook sendiri mula mendapat 822 00:45:50,000 --> 00:45:53,000 menggunakan MySQL dan kemudian menggunakan lebih pelayan MySQL dan kemudian lebih MySQL pelayan 823 00:45:53,000 --> 00:45:57,000 sebelum lama sehingga mereka kemudian telah benar-benar mula berfikir keras tentang bagaimana untuk 824 00:45:57,000 --> 00:46:00,000 menyimpan data, bagaimana untuk menyimpan perkara-perkara yang lebih cekap, 825 00:46:00,000 --> 00:46:04,000 jadi walaupun kita akan mengambil untuk diberikan hakikat bahawa indeks dan kekangan unik 826 00:46:04,000 --> 00:46:08,000 dan sebagainya hanya bekerja di sana adalah satu perbualan yang sangat menarik 827 00:46:08,000 --> 00:46:12,000 bahawa ini boleh akhirnya membawa kepada, supaya sedar bahawa kita hanya menggaru permukaan 828 00:46:12,000 --> 00:46:17,000 apa yang boleh akhirnya untuk anda atau projek anda menjadi agak sedikit data yang besar. 829 00:46:17,000 --> 00:46:22,000 >> Dengan itu berkata, mari kita berakhir di sini, dan kita akan melihat anda minggu depan. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]